| File Name: BB_Divergence.efs
Description: Trading The Aussie, by Markos Katsanos
Formula Parameters: BB_Divergence.efs Symbol: $XAU Line Color: Green Length: 30 Line Thickness: 2 Display Cursor Labels: True
BB_Divergence_System.efs XAU: $XAU CRB: CR A0 YBA: $IRX EURJPY: EURJPY a0-fx Length: 30
Notes: The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.
Download File: BB_Divergence.efs BB_Divergence_System.efs

EFS Code:
/*********************************Provided By: eSignal (Copyright c eSignal), a division of Interactive Data Corporation. 2008. 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: Trading The Aussie, by Markos KatsanosVersion: 1.0 12/05/2008Notes: The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.Formula Parameters: Default: Symbol $XAU Line Color Green Length 30 Line Thickness 2 Display Cursor Labels True**********************************/var fpArray = new Array();var bInit = false;var bVersion = null;function preMain() { setPriceStudy(false); setShowCursorLabel(false); setShowTitleParameters( false ); setStudyTitle("BB Divergence"); setCursorLabelName("BB Divergence", 0); setDefaultBarFgColor(Color.red, 0); setPlotType(PLOTTYPE_LINE, 0); setDefaultBarThickness(2, 0); addBand(0, PS_SOLID, 1, Color.black); askForInput(); var x=0; fpArray[x] = new FunctionParameter("LineColor", FunctionParameter.COLOR); with(fpArray[x++]){ setName("Line Color"); setDefault(Color.green); } fpArray[x] = new FunctionParameter("ViewValue", FunctionParameter.BOOLEAN); with(fpArray[x++]){ setName("Display Cursor Labels"); setDefault(true); } fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setUpperLimit(200); setDefault(30); } fpArray[x] = new FunctionParameter("Thickness", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("Line Thickness"); setLowerLimit(1); setDefault(2); } fpArray[x] = new FunctionParameter("InSymbol", FunctionParameter.STRING); with(fpArray[x++]){ setName("Symbol"); setDefault("$XAU"); } }var xSEC2 = null; var xMovSeg2 = null;var xStdevSeg2 = null;var xMA = null;var xStdev = null;function main(InSymbol, Length, Thickness, LineColor, ViewValue) {var nsec1BOL = 0;var nsec2BOL = 0;var nDIVERG = 0; if (bVersion == null) bVersion = verify(); if (bVersion == false) return; if ( bInit == false ) { setDefaultBarFgColor(LineColor, 0); setDefaultBarThickness(Thickness, 0); setShowCursorLabel(ViewValue); setStudyTitle("BB Divergence ("+InSymbol+")"); xSEC2 = close(sym(InSymbol+","+getInterval())); xMovSeg2 = sma(Length, xSEC2); xStdevSeg2 = efsInternal("StdDev", Length, xSEC2); xMA = sma(Length); xStdev = efsInternal("StdDev", Length, close()); bInit = true; } if (getCurrentBarCount() < Length) return; nsec1BOL = 1 + ((close(0) - xMA.getValue(0) + 2 * xStdev.getValue(0)) / (4 * xStdev.getValue(0) + 0.0001)); nsec2BOL = 1 + ((xSEC2.getValue(0) - xMovSeg2.getValue(0) + 2 * xStdevSeg2.getValue(0)) / (4 * xStdevSeg2.getValue(0) + 0.0001)); nDIVERG = (nsec2BOL - nsec1BOL) / nsec1BOL * 100; if (nDIVERG != null) return nDIVERG; }function StdDev(Period, DataArray) {var sum = 0;var avg = 0;var res = 0; if (getCurrentBarCount() < Period) return; for (var barsBack = Period-1; barsBack >= 0; barsBack--) { sum += DataArray.getValue(-barsBack); } avg = sum / Period; sum = 0; for (var barsBack = Period - 1; barsBack >= 0; barsBack--) { sum += (DataArray.getValue(-barsBack) - avg) * (DataArray.getValue(-barsBack) - avg); } res = Math.sqrt(sum / Period); return res; }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;} |
/*********************************Provided By: eSignal (Copyright c eSignal), a division of Interactive Data Corporation. 2008. 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: Trading The Aussie, by Markos KatsanosVersion: 1.0 12/11/2008Notes: The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.Formula Parameters: Default: XAU $XAU CRB CR A0 YBA $IRX EURJPY EURJPY a0-fx Length 30**********************************/var fpArray = new Array();var bInit = false;var bVersion = null;var bBail = false;function preMain() { setPriceStudy(true); setShowCursorLabel(false); setShowTitleParameters( false ); setStudyTitle("BB Divergence"); setColorPriceBars(true); setDefaultPriceBarColor(Color.grey); askForInput(); var x=0; fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setUpperLimit(200); setDefault(30); } fpArray[x] = new FunctionParameter("XAU", FunctionParameter.STRING); with(fpArray[x++]){ setName("XAU"); setDefault("$XAU"); } fpArray[x] = new FunctionParameter("CRB", FunctionParameter.STRING); with(fpArray[x++]){ setName("CRB"); setDefault("CR A0"); } fpArray[x] = new FunctionParameter("YBA", FunctionParameter.STRING); with(fpArray[x++]){ setName("YBA"); setDefault("$IRX"); } fpArray[x] = new FunctionParameter("EURJPY", FunctionParameter.STRING); with(fpArray[x++]){ setName("EURJPY"); setDefault("EURJPY a0-fx"); } }var xCRB = null; var xYBA = null; var xXAU = null;var xEURJPY = null;var xMovEURJPY = null;var xROCEURJPY = null;var xMovXAU = null;var xStdevXAU = null;var xROCXAU = null;var xMovCRB = null;var xStdevCRB = null;var xROCCRB = null;var xMovYBA = null;var xMA = null;var xMA15 = null;var xMA50 = null;var xStdev = null;var aDIV1 = new Array(4);var nDIV1 = 0;var xROC = null;var xLLV = null;var xHHV = null;var xMACD = null;var xMACD_MA = null;var xMACDLL5 = null;var xMACDLL50 = null;var xMACDHH5 = null;var xMACDHH50 = null;function main(XAU, CRB, YBA, EURJPY, Length) {var nState = getBarState();var nsec1BOL = 0;var nsec2BOL = 0;var nsec3BOL = 0;var nDIV2 = 0;var nDIV3 = 0; if (bVersion == null) bVersion = verify(); if (bVersion == false) return; if ( bBail == true ) { return; } if (isIntraday()) { setStudyTitle("Sorry. This script doesn't work on intraday charts."); bBail = true; return; } if ( bInit == false ) { setStudyTitle("BB Divergence ("+XAU+", "+CRB+", "+YBA+" , "+EURJPY+")"); xCRB = close(sym(CRB)); xYBA = close(sym(YBA)); xXAU = close(sym(XAU)); xEURJPY = close(sym(EURJPY)); xMovEURJPY = ema(40, xEURJPY); xROCEURJPY = roc(2, xEURJPY); xMA = sma(Length); xMA15 = sma(15); xMA50 = sma(50); xStdev = efsInternal("StdDev", Length, close()); xMovXAU = sma(Length, xXAU); xROCXAU = roc(1, xXAU); xStdevXAU = efsInternal("StdDev", Length, xXAU); xMovCRB = sma(Length, xCRB); xROCCRB = roc(1, xCRB); xStdevCRB = efsInternal("StdDev", Length, xCRB); xMovYBA = sma(40, xYBA); xROC = roc(2); xLLV = lowerDonchian(4); xHHV = upperDonchian(4); xMACD = macd( 12, 26, 9 ); xMACD_MA = ema(9, xMACD); xMACDLL5 = lowerDonchian(5, xMACD); xMACDLL50 = lowerDonchian(50, xMACD); xMACDHH5 = upperDonchian(5, xMACD); xMACDHH50 = upperDonchian(50, xMACD); bInit = true; } if (getCurrentBarCount() < Length) return; if (getCurrentBarIndex() == 0) return; if (nState == BARSTATE_NEWBAR) { aDIV1.pop(); aDIV1.unshift(nDIV1); } nsec1BOL = 1 + ((close(0) - xMA.getValue(0) + 2 * xStdev.getValue(0)) / (4 * xStdev.getValue(0) + 0.0001)); nsec2BOL = 1 + ((xXAU.getValue(0) - xMovXAU.getValue(0) + 2 * xStdevXAU.getValue(0)) / (4 * xStdevXAU.getValue(0) + 0.0001)); nsec3BOL = 1 + ((xCRB.getValue(0) - xMovCRB.getValue(0) + 2 * xStdevCRB.getValue(0)) / (4 * xStdevCRB.getValue(0) + 0.0001)); nDIV2 = (nsec2BOL - nsec1BOL) / nsec1BOL * 100; nDIV3 = (nsec3BOL - nsec1BOL) / nsec1BOL * 100; nDIV1 = Math.max(nDIV2, nDIV3); aDIV1[0] = nDIV1; //Buy if (((HHV(3, aDIV1) > 10 && nDIV1 < aDIV1[1] && xROC.getValue(0) > 0 && close(0) > (1 + 0.7 / 100) * xLLV.getValue(0) && xMovYBA.getValue(0) > xMovYBA.getValue(-1) ) || ( nDIV1 > 40 && nDIV2 + nDIV3 > 80 && nDIV1 < aDIV1[1] && close(0) > close(-1) && close(0) > (1 +0.7 / 100) * xLLV.getValue(0) ) || ( CROSSABOVE(xMA15, xMA50) && xMovYBA.getValue(0) > xMovYBA.getValue(-1) )) && !Strategy.isLong() && !Strategy.isShort()) { Strategy.doLong("Entry Long", Strategy.CLOSE , Strategy.THISBAR, Strategy.getDefaultLotSize()); drawShape(Shape.UPARROW, BelowBar1, Color.lime); setPriceBarColor(Color.lime); } //Sell short if (((LLV(3, aDIV1) < -10 && nDIV1 > aDIV1[1] && xROC.getValue(0) < 0 && close(0) < (1 - 0.7 / 100) * xHHV.getValue(0) && xMovYBA.getValue(0) < xMovYBA.getValue(-1) ) || ( nDIV1 < -20 && nDIV2 + nDIV3 < -40 && nDIV1 > aDIV1[1] && close(0) < close(-1) && close(0) < (1 - 0.7 / 100) * xHHV.getValue(0) ) || ( CROSSBELOW(xMA50, xMA15) && xMovYBA.getValue(0) < xMovYBA.getValue(-1) )) && !Strategy.isShort() && !Strategy.isLong()) { Strategy.doShort("Entry Short", Strategy.CLOSE , Strategy.THISBAR, Strategy.getDefaultLotSize()); drawShape(Shape.DOWNARROW, AboveBar1, Color.red); setPriceBarColor(Color.red); } //Sell var nnDIV1 = Math.min(nDIV2, nDIV3); if (((CROSSABOVE(xMACD_MA, xMACD) && xMACDHH5.getValue(0) > xMACDHH50.getValue(0) ) || ( nnDIV1 < -30 && ( xROCXAU.getValue(0) < - 0.5 || xROCCRB.getValue(0) < - 0.5 ) && close(0) < (1 - 0.7 / 100) * xHHV.getValue(0) ) || ( nnDIV1 < 0 && xROCEURJPY.getValue(0) < -1 && close(0) < (1 - 0.7 / 100) * xHHV.getValue(0) && xMovEURJPY.getValue(0) < xMovEURJPY.getValue(-1) ) ) && Strategy.isLong()) { Strategy.doSell("Exit Long", Strategy.CLOSE , Strategy.THISBAR, Strategy.getDefaultLotSize()); drawText("X", AboveBar1, Color.magenta, Text.BOLD|Text.CENTER|Text.FRAME); setPriceBarColor(Color.magenta); } //Buy to cover if (((CROSSBELOW(xMACD, xMACD_MA) && xMACDLL5.getValue(0) < xMACDLL50.getValue(-5) ) || ( nDIV1 > 30 && ( xROCXAU.getValue(0) > 0.5 || xROCCRB.getValue(0) > 0.5 ) && close(0) > (1 + 0.7 / 100) * xHHV.getValue(0) ) ) && Strategy.isShort()) { Strategy.doCover("Exit Short", Strategy.CLOSE , Strategy.THISBAR, Strategy.getDefaultLotSize()); drawText("X", BelowBar1, Color.magenta, Text.BOLD|Text.CENTER|Text.FRAME); setPriceBarColor(Color.magenta); } return; }function StdDev(Period, DataArray) {var sum = 0;var avg = 0;var res = 0; if (getCurrentBarCount() < Period) return; for (var barsBack = Period-1; barsBack >= 0; barsBack--) { sum += DataArray.getValue(-barsBack); } avg = sum / Period; sum = 0; for (var barsBack = Period - 1; barsBack >= 0; barsBack--) { sum += (DataArray.getValue(-barsBack) - avg) * (DataArray.getValue(-barsBack) - avg); } res = Math.sqrt(sum / Period); return res; }function HHV(Period, aDataArray) {var nRes = 0; nRes = aDataArray[0]; for (var i = 0; i <= Period; i++) { if (nRes < aDataArray[i]) nRes = aDataArray[i]; } return nRes;}function LLV(Period, aDataArray){var nRes = 0; nRes = aDataArray[0]; for (var i = 0; i <= Period; i++) { if (nRes > aDataArray[i]) nRes = aDataArray[i]; } return nRes;}function CROSSABOVE(Series1, Series2) {var bRes = false; if (Series1.getValue(0) < Series2.getValue(0) && Series1.getValue(-1) > Series2.getValue(-1)) bRes = true; return bRes;}function CROSSBELOW(Series1, Series2) {var bRes = false; if (Series1.getValue(0) > Series2.getValue(0) && Series1.getValue(-1) < Series2.getValue(-1)) bRes = true; return bRes;}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;} |
|