2012 Sep: Developing A Multi-Level Strategy by Vladimir Vladimirovich Voznjuk

ICE Data Services -


MultiPairIndicator.efs  EFSLibrary - Discussion Board
  

File Name: MultiPairIndicator.efs

Description:
Pair Trading. Developing A Multi-Level Strategy by Vladimir Vladimirovich Voznjuk


Formula Parameters:

MultiPairIndicator.efs
Symbol 1: 6J #F
Symbol 2: 6E #F
One-way Pair: false
Lower Band: -0.01
Upper Band: 0.01
Signal Method: Levels
Buy Color: blue
Sell 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:
MultiPairIndicator.efs

MultiPairIndicator.efs



EFS Code:

MultiPairIndicator.efs









/*********************************Provided By:  eSignal (Copyright c eSignal), a division of Interactive Data Corporation. 2012. All rights reserved. This sample eSignal Formula Script (EFS) is for educational purposes only and may be modified and saved under a new file name.  eSignal is not responsiblefor the functionality once modified.  eSignal reserves the right to modify and overwrite this EFS file with each new release.Description:         Pair Trading. Developing A Multi-Level Strategy by Vladimir Vladimirovich VoznjukVersion:            1.00  16/07/2012Formula Parameters:                         Default:    Symbol 1                                  6J #F    Symbol 2                                  6E #F     One-way Pair                              false    Lower Band                                -0.01    Upper Band                                0.01    Signal Method                             Levels     Buy Color                                 blue    Sell Color                                red     Notes:The related article is copyrighted material. If you are not a subscriberof Stocks & Commodities, please visit www.traders.com.**********************************/var fpArray = new Array();function preMain(){       setStudyTitle("MultiPair Indicator");          setIntervalsBackfill(true);          var x = 0;        fpArray[x] = new FunctionParameter("gSymbol1", FunctionParameter.STRING);    with(fpArray[x++])    {                setName("Symbol 1");                setDefault("6J #F");    }             fpArray[x] = new FunctionParameter("gSymbol2", FunctionParameter.STRING);    with(fpArray[x++])    {        setName("Symbol 2");                setDefault("6E #F");    }             fpArray[x] = new FunctionParameter("gOneWay", FunctionParameter.BOOLEAN);    with(fpArray[x++])    {        setName("One-way Pair");                setDefault(false);    }            fpArray[x] = new FunctionParameter("gLower", FunctionParameter.NUMBER);    with(fpArray[x++])    {        setName("Lower Band");                setDefault(-0.01);    }         fpArray[x] = new FunctionParameter("gUpper", FunctionParameter.NUMBER);    with(fpArray[x++])    {        setName("Upper Band");                setDefault(0.01);    }         fpArray[x] = new FunctionParameter("gMethod", FunctionParameter.STRING);    with(fpArray[x++])    {        setName("Signal Method");        addOption("Levels");        addOption("Zero line");                 setDefault("Levels");    }         fpArray[x] = new FunctionParameter("gBuyColor", FunctionParameter.COLOR);    with(fpArray[x++])    {        setName("Buy Color");                setDefault(Color.blue);    }         fpArray[x] = new FunctionParameter("gSellColor", FunctionParameter.COLOR);    with(fpArray[x++])    {        setName("Sell Color");                setDefault(Color.red);    } }var bInit = false;var bVersion = null;var xSymbol2Open = null;var xSymbol2Close = null;var xSymbol1Open = null;var xSymbol1Close = null;var vInterval = null;function main(gSymbol1, gSymbol2, gOneWay, gLower, gUpper, gMethod,gBuyColor,gSellColor){    if (bVersion == null) bVersion = verify();    if (bVersion == false) return;         if (!bInit)    {        vInterval = getInterval();        xSymbol2Open = open(sym(gSymbol2+","+vInterval));        xSymbol2Close = close(sym(gSymbol2+","+vInterval));                xSymbol1Open = open(sym(gSymbol1+","+vInterval));        xSymbol1Close = close(sym(gSymbol1+","+vInterval));                addBand(gLower,PS_SOLID,1,gBuyColor,0);        addBand(gUpper,PS_SOLID,1,gSellColor,1);        addBand(0,PS_SOLID,1,Color.lime,2);                bInit = true;    }    var vSymbol2Open_0 = xSymbol2Open.getValue(0);    var vSymbol2Open_1 = xSymbol2Open.getValue(-1);        var vSymbol2Close_0 = xSymbol2Close.getValue(0);    var vSymbol2Close_1 = xSymbol2Close.getValue(-1);        var vSymbol1Open_0 = xSymbol1Open.getValue(0);    var vSymbol1Open_1 = xSymbol1Open.getValue(-1);            var vSymbol1Close_0 = xSymbol1Close.getValue(0);    var vSymbol1Close_1 = xSymbol1Close.getValue(-1);        if (vSymbol2Open_1 == null || vSymbol2Close_1 == null || vSymbol1Open_1 == null || vSymbol1Close_1 == null)         return;        var vRes_0 = 0;    var vRes_1 = 0;        if (gOneWay)    {        vRes_0 = (vSymbol2Close_0 - vSymbol2Open_0)+(vSymbol1Close_0 - vSymbol1Open_0);        vRes_1 = (vSymbol2Close_1 - vSymbol2Open_1)+(vSymbol1Close_1 - vSymbol1Open_1);    }    else    {        vRes_0 = (vSymbol2Close_0 - vSymbol2Open_0)-(vSymbol1Close_0 - vSymbol1Open_0);        vRes_1 = (vSymbol2Close_1 - vSymbol2Open_1)-(vSymbol1Close_1 - vSymbol1Open_1);    }        var nBarsCount = getCurrentBarCount();        if (gMethod == "Levels")    {           if (vRes_0>gUpper && vRes_1gLower)         {            drawShapeRelative(0, BottomRow2  , Shape.UPARROW, null, gBuyColor, Shape.PRESET,"LUp"+nBarsCount);        }         else        {            removeShape("LUp"+nBarsCount);        }    }        if (gMethod == "Zero line")    {           if (vRes_1<0 && vRes_0>0)         {            drawShapeRelative(0, BottomRow2  , Shape.UPARROW, null, gBuyColor, Shape.PRESET,"ZUp"+nBarsCount);         }         else        {            removeShape("ZUp"+nBarsCount);        }        if (vRes_1>0 && vRes_0<0)         {            drawShapeRelative(0, TopRow2  , Shape.DOWNARROW, null, gSellColor, Shape.PRESET,"ZDn"+nBarsCount);                   }         else        {            removeShape("ZDn"+nBarsCount);        }    }        return vRes_0;}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;}