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 responsible for 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 Voznjuk Version: 1.00 16/07/2012 Formula 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 subscriber of 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_1<gupper) {="" drawshaperelative(0,="" toprow2="" ,="" shape.downarrow,="" null,="" gsellcolor,="" shape.preset,="shape.preset," ldn="ldn" +nbarscount);="" }="" else="" removeshape(="removeshape(" if="" (vres_0="(vres_0"><glower="" &&="" vres_1="">gLower) { 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; }