Announcement

Collapse
No announcement yet.

2004 Jan: eSignal_TRIX.efs

Collapse
This topic is closed.
X
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • 2004 Jan: eSignal_TRIX.efs

    File Name: eSignal_TRIX.efs


    Description:
    Based on Trading In Tempo by Jongseon Kim. This article appeared in the January 2004 issue of Stocks & Commodities.

    Formula Parameters:
    TRIX Length: 5
    Signal Length: 3
    Long Entry Signal (GC, B, Disable): GC
    Long Exit Signal (DC, F): F
    Short Entry Signal (DC, F, Disable): DC
    Short Exit Signal (GC, B): B

    Notes:
    GC = Golden Cross
    DC = Dead Cross
    F = Fall
    B = Bounce
    Requires Daily, Weekly or Monthly chart interval.

    The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.

    Download File:
    eSignal_TRIX.efs






    EFS Code:
    PHP Code:
    /*****************************************************
    Provided By : eSignal. (c) Copyright 2003

    Indicator: TRIX

    Formula Parameters:                     Defaults:
        TRIX Length                         5
        Signal Length                       3
        Long Entry Signal (GC, B, Disable)  GC
        Long Exit Signal (DC, F)            F
        Short Entry Signal (DC, F, Disable) DC
        Short Exit Signal (GC, B)           B

    Notes:
        GC = Golden Cross
        DC = Dead Cross
        F = Fall
        B = Bounce
        *Requires Daily, Weekly or Monthly chart interval.
    *****************************************************/

    function preMain() {
        
    setStudyTitle("TRIX ");
        
    setCursorLabelName("TRIX"0);
        
    setCursorLabelName("Signal"1);
        
    setDefaultBarFgColor(Color.black0);
        
    setDefaultBarFgColor(Color.red1);
        
    setDefaultBarThickness(20);
        
    setDefaultBarThickness(21);
        
        var 
    fp1 = new FunctionParameter("nLength",
            
    FunctionParameter.NUMBER);
        
    fp1.setName("TRIX Length");
        
    fp1.setLowerLimit(2);
        
    fp1.setDefault(5);

        var 
    fp2 = new FunctionParameter("nSLength",
            
    FunctionParameter.NUMBER);
        
    fp2.setName("Signal Length");
        
    fp2.setLowerLimit(2);
        
    fp2.setDefault(3);

        var 
    fp3 = new FunctionParameter("sLEntry",
            
    FunctionParameter.STRING);
        
    fp3.setName("Long Entry Signal");
        
    fp3.addOption("GC");
        
    fp3.addOption("B");
        
    fp3.addOption("Disable");
        
    fp3.setDefault("GC");

        var 
    fp4 = new FunctionParameter("sLExit",
            
    FunctionParameter.STRING);
        
    fp4.setName("Long Exit Signal");
        
    fp4.addOption("DC");
        
    fp4.addOption("F");
        
    fp4.setDefault("F");

        var 
    fp5 = new FunctionParameter("sSEntry",
            
    FunctionParameter.STRING);
        
    fp5.setName("Short Entry Signal");
        
    fp5.addOption("DC");
        
    fp5.addOption("F");
        
    fp5.addOption("Disable");
        
    fp5.setDefault("DC");

        var 
    fp6 = new FunctionParameter("sSExit",
            
    FunctionParameter.STRING);
        
    fp6.setName("Short Exit Signal");
        
    fp6.addOption("GC");
        
    fp6.addOption("B");
        
    fp6.setDefault("B");
    }

    var 
    bEdit true;
    var 
    vMax null;
    var 
    vMin null;
    var 
    nCntr 0;
    var 
    EMA1 null;
    var 
    EMA2 null;
    var 
    EMA3 null;
    var 
    vTRIX null;
    var 
    aTrix null;
    var 
    vSignal null;
    var 
    vSignal1 null;
    var 
    dPercent 0.0;
    var 
    bPrimed false;
    var 
    vPosition null;
    var 
    bEntry false;
    var 
    nSpace null;


    function 
    main(nLengthnSLengthsLEntrysLExitsSEntrysSExit) {
        if (
    isDWM() == false) {
            
    drawTextAbsolute(-110"Formula requires Daily, Weekly or Monthly interval."
                
    Color.redColor.black
                
    Text.BOLD|Text.RIGHT|Text.RELATIVETOBOTTOMnull12"error");
            return;
        }

        var 
    nState getBarState();
        
    nSLength Math.round(nSLength);

        if (
    bEdit == true || EMA1 == null) {
            
    aTrix = new Array(nSLength);
            
    nLength Math.round(nLength);
            
    EMA1 = new MAStudy(nLength0"Close"MAStudy.EXPONENTIAL);
            
    EMA2 = new MAStudy(nLength0EMA1MAStudy.MAMAStudy.EXPONENTIAL);
            
    EMA3 = new MAStudy(nLength0EMA2MAStudy.MAMAStudy.EXPONENTIAL);
            if (
    nSpace == null) {
                var 
    vInt getInterval();
                if (
    vInt == "D"nSpace 0.001;
                if (
    vInt == "W"nSpace 0.003;
                if (
    vInt == "M"nSpace 0.02;
            }
            
    bEdit false;
        }
        
        if (
    nState == BARSTATE_NEWBAR && vTRIX != null) {
            
    nCntr += 1;
            
    bEntry false;
            
    aTrix.pop();           // remove last array element
            
    aTrix.unshift(vTRIX);  // insert new array element [0]
        
    }

        var 
    vEMA3 EMA3.getValue(MAStudy.MA);
        var 
    vEMA3_1 EMA3.getValue(MAStudy.MA, -1);
        if (
    vEMA3 == null || vEMA3_1 == null) return;
        
        
    vTRIX = (vEMA3 vEMA3_1) / vEMA3_1;
        if (
    vTRIX == null) return;
        
    aTrix[0] = vTRIX;

        if (
    aTrix[nSLength-1] == null) return;
        
        
    vSignal EMA(nSLengthaTrix);
        
        
    // draw signals
        
    var retData1 ref(-1);  // retData1[0] = TRIX, retData1[1] = Signal
        
    var retData2 ref(-2);  // retData2[0] = TRIX, retData2[1] = Signal
        
    if (retData1 != null && retData2 != null) {
            var 
    vT_1 retData1[0];
            var 
    vS_1 retData1[1];
            var 
    vT_2 retData2[0];
            var 
    vS_2 retData2[1];
            
    // Long
            
    if (bEntry == false && vPosition == null && sLEntry == "GC") {
                if (
    vTRIX vSignal && vT_1 vS_1) {  // GC - Golden Cross entry
                    
    drawTextRelative(0vSignal-.001"Long"Color.limeColor.black
                        
    Text.BOLD|Text.ONTOP|Text.TOPnull11
                        
    "GC_long"+nCntr);
                    
    vPosition "long";
                    
    bEntry true;
                } else {
                    
    removeText("GC_long"+nCntr);
                    
    vPosition null;
                }
            } else if (
    bEntry == false && vPosition == null && sLEntry == "B") { 
                if (
    vTRIX vT_1 && vT_1 vT_2) {  // B - Bounce entry
                    
    drawTextRelative(0vTRIX-.001"Long"Color.limeColor.black
                        
    Text.BOLD|Text.ONTOP|Text.CENTERnull11
                        
    "B_long"+nCntr);
                    
    vPosition "long";
                    
    bEntry true;
                } else {
                    
    removeText("B_long"+nCntr);
                    
    vPosition null;
                }
            } else if (
    vPosition == "long" && sLExit == "DC") {
                if (
    vTRIX vSignal && vT_1 vS_1) {  // DC - Dead Cross exit
                    
    vPosition null;
                } else {
                    
    removeText("DC_long"+nCntr);
                    
    vPosition "long";
                }
            } else if (
    vPosition == "long" && sLExit == "F") {
                if (
    vTRIX vT_1 && vT_1 vT_2) {  // F - Fall exit
                    
    vPosition null;
                } else {
                    
    removeText("F_long"+nCntr);
                    
    vPosition == "long";
                }
            }
            
    // Short
            
    if (bEntry == false && vPosition == null && sSEntry == "DC") {
                if (
    vTRIX vSignal && vT_1 vS_1) {  // DC - Dead Cross entry
                    
    drawTextRelative(0vSignal+.001"Short"Color.redColor.black
                        
    Text.BOLD|Text.ONTOP|Text.BOTTOMnull11
                        
    "DC_short"+nCntr);
                    
    vPosition "short";
                    
    bEntry true;
                } else {
                    
    removeText("DC_short"+nCntr);
                    
    vPosition null;
                }
            } else if (
    bEntry == false && vPosition == null && sSEntry == "F") { 
                if (
    vTRIX vT_1 && vT_1 vT_2) {  // F - Fall entry
                    
    drawTextRelative(0vTRIX+.001"Short"Color.redColor.black
                        
    Text.BOLD|Text.ONTOP|Text.BOTTOMnull11
                        
    "F_short"+nCntr);
                    
    vPosition "short";
                    
    bEntry true;
                } else {
                    
    removeText("F_short"+nCntr);
                    
    vPosition null;
                }
            } else if (
    vPosition == "short" && sSExit == "GC") {
                if (
    vTRIX vSignal && vT_1 vS_1) {  // GC - Golden Cross exit
                    
    vPosition null;
                } else {
                    
    removeText("GC_short"+nCntr);
                    
    vPosition "short";
                }
            } else if (
    vPosition == "short" && sSExit == "B") {
                if (
    vTRIX vT_1 && vT_1 vT_2) {  // B - Bounce exit
                    
    vPosition null;
                } else {
                    
    removeText("B_short"+nCntr);
                    
    vPosition == "short";
                }
            }
            if (
    vPosition == "long"setBarBgColor(Color.green);
            if (
    vPosition == "short"setBarBgColor(Color.maroon);
        }

        
    setMaxMin();
        
        return new Array(
    vTRIX.toFixed(4)*1vSignal.toFixed(4)*1);
    }


    /**** Functions ****/

    function setMaxMin() {
        if (
    vMax == null) {
            
    vMax vTRIX nSpace;
        } else {
            
    vMax Math.max(vMaxvTRIX+nSpace);
        }
        if (
    vMin == null) {
            
    vMin vTRIX nSpace;
        } else {
            
    vMin Math.min(vMinvTRIX-nSpace);
        }
        
        
    setStudyMax(vMax);
        
    setStudyMin(vMin);
        return;
    }

    function 
    EMA(nLengthnArray) {
        var 
    nBarState getBarState();
        var 
    dSum 0.0;
        var 
    dRef;

        if(
    nBarState == BARSTATE_ALLBARS || bPrimed == false) {
            
    dPercent = (2.0 / (nLength 1.0));
            
    bPrimed false;
        }

        if (
    nBarState == BARSTATE_NEWBAR) {
            
    vSignal1 vSignal;
        }

        if(
    bPrimed == false) {
            for(
    0nLengthi++) {
                
    dSum += nArray[i];
            }
            
    bPrimed true;
            return (
    dSum nLength);
        } else {
            return (((
    aTrix[0] - vSignal1) * dPercent) + vSignal1);
        }

    Jason K.
    Project Manager
    eSignal - an Interactive Data company

    EFS KnowledgeBase
    JavaScript for EFS Video Series
    EFS Beginner Tutorial Series
    EFS Glossary
    Custom EFS Development Policy

    New User Orientation
Working...
X