2014 Feb: The Degree Of Complexity by Oscar G. Cagigas

ICE Data Services -

BasicDonchianSystem.efs  

EFSLibrary - Discussion Board  

File Name: BasicDonchianSystem.efs

Description:
The Degree Of Complexity by Oscar G. Cagigas

Formula Parameters:

BasicDonchianSystem.efs

  • Len1: 40
  • Len2: 15
  • Long Color: lime
  • Short Color: red

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

Download File:
BasicDonchianSystem.efs

BasicDonchianSystem.efs


EFS Code:
BasicDonchianSystem.efs

/*********************************
Provided By:  
    Interactive Data Corporation (Copyright В© 2013) 
    All rights reserved. This sample eSignal Formula Script (EFS)
    is for educational purposes only. Interactive Data Corporation
    reserves the right to modify and overwrite this EFS file with 
    each new release. 

Description:        
    The Degree Of Complexity by Oscar G. Cagigas

Formula Parameters:                     Default:
Len1                                    40
Len2                                    15
Long Color                              lime
Short Color                             red

Version:            1.00  12/05/2013

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

**********************************/

var fpArray = new Array();

function preMain()
{   
    setStudyTitle("BasicDonchianSystem");
    setPriceStudy(true);    

    var x = 0;

    fpArray[x] = new FunctionParameter("fpLen1", FunctionParameter.NUMBER);
    with(fpArray[x++])
    {
        setName("Len1");
        setLowerLimit(20);
        setUpperLimit(40);
        setDefault(40);
    }

    fpArray[x] = new FunctionParameter("fpLen2", FunctionParameter.NUMBER);
    with(fpArray[x++])
    {
        setName("Len2");
        setLowerLimit(5);
        setUpperLimit(30);
        setDefault(15);
    }

    fpArray[x] = new FunctionParameter("gLongColor", FunctionParameter.COLOR);
    with(fpArray[x++])
    {
        setName("Long Color");    
        setDefault(Color.lime);
    } 
    
    fpArray[x] = new FunctionParameter("gShortColor", FunctionParameter.COLOR);
    with(fpArray[x++])
    {
        setName("Short Color");    
        setDefault(Color.red);
    }  
}

var bInit = false;
var bVersion = null;

var xHHV1 = null;
var xLLV1 = null;

var xHHV2 = null;
var xLLV2 = null;

var xHigh = null;
var xLow  = null;
var xOpen = null;

function main(fpLen1,fpLen2,gLongColor,gShortColor) 
{
    if (bVersion == null) bVersion = verify();
    if (bVersion == false) return;

    if (!bInit)
    {   
        xHigh = high();
        xLow = low();
        xOpen = open();
        
        xHHV1 = hhv(fpLen1, xHigh);
        xLLV1 = llv(fpLen1, xLow);
        
        xHHV2 = hhv(fpLen2, xHigh);
        xLLV2 = llv(fpLen2, xLow);
    
        bInit = true;
    }

    var nBuyStop   = xHHV1.getValue(-1);
    var nSellStop  = xLLV2.getValue(-1);
    var nShortStop = xLLV1.getValue(-1);
    var nCoverStop = xHHV2.getValue(-1);

    var nHigh = xHigh.getValue(0);
    var nLow  = xLow.getValue(0);
    var nOpen = xOpen.getValue(0);

    if (nBuyStop == null || nSellStop == null || nShortStop == null || nCoverStop == null || nHigh == null || nLow == null || nOpen == null)
        return;
    
    nPrice=null;    

    if (getCurrentBarIndex() != 0) 
    {                   
            // Entry Strategy
            if (!Strategy.isInTrade())
            {
               //LONG ENTRY
                    if (nHigh > nBuyStop)                    
                    {
                       Strategy.doLong("Enter Long", Strategy.CLOSE, Strategy.THISBAR);                                                                           
                       drawTextRelative(0, BelowBar2, "Long", Color.black, gLongColor, Text.PRESET, null, null); 
                    } 
                else
                {
                    //SHORT ENTRY
                    if (nLow < nShortStop)
                    {                       
                       Strategy.doShort("Enter Short", Strategy.CLOSE, Strategy.THISBAR);                                                                           
                       drawTextRelative(0, AboveBar2, "Short", Color.black, gShortColor, Text.PRESET, null, null);  
                    }
                }
            }
        
            // Exit Strategy
            if (Strategy.isInTrade())
            {
                //EXIT
                if ((nLow < nSellStop) && Strategy.isLong())
                        {                           
                           Strategy.doSell("Exit", Strategy.CLOSE, Strategy.THISBAR);                                                                               
                           drawTextRelative(0, AboveBar2, "Exit", Color.black, gShortColor, Text.PRESET, null, null);  
                        }
                else
                    {
                        //COVER
                        if ((nHigh > nCoverStop) && Strategy.isShort())
                        {                           
                           Strategy.doCover("Cover", Strategy.CLOSE, Strategy.THISBAR);                                                                               
                           drawTextRelative(0, BelowBar2, "Cover", Color.black, gLongColor, Text.PRESET, null, null); 
                        }
                }
            }             
        }     

    return;
}

function verify() 
{
    var b = false;
    if (getBuildNumber() < 779) 
    {
        drawTextAbsolute(5, 35, "This study requires version 8.0 or later.", 
            Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            null, 13, "error");
        drawTextAbsolute(5, 20, "Click HERE to upgrade.@URL=http://www.esignal.com/download/default.asp", 
            Color.white, Color.blue, Text.RELATIVETOBOTTOM|Text.RELATIVETOLEFT|Text.BOLD|Text.LEFT,
            null, 13, "upgrade");
        return b;
    } 
    else 
    {
        b = true;
    }

    return b;
}