# 2014 Sep: Finding The Golden Triangle by Charlotte Hudgin

ICE Data Services -

 TheGoldenTriangleStrategy.efs EFSLibrary - Discussion Board

File Name: TheGoldenTriangleStrategy.efs

Description:
Finding The Golden Triangle by Charlotte Hudgin

Formula Parameters:

TheGoldenTriangleStrategy.efs
Length SMA: 50
Consider Days of White Space: 20
Consider Days to Compare Volume: 0
Entry Position Color: lime
Exit Position Color: red

Notes:
The related article is copyrighted material. If you are not a subscriber

 `/*********************************Provided By: Interactive Data Corporation (Copyright ???? 2014) 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: Finding The Golden Triangle by Charlotte HudginFormula Parameters: Default:Length SMA 50Consider Days of White Space 20Consider Days to Compare Volume 0Entry Position Color limeExit Position Color redVersion: 1.00 07/07/2014Notes: 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("TheGoldenTriangleStrategy"); setPriceStudy(true); setCursorLabelName("Moving Average", 0); var x = 0; fpArray[x] = new FunctionParameter("fpLenSMA", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("Length SMA"); setLowerLimit(1); setDefault(50); } fpArray[x] = new FunctionParameter("fpDaysWS", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("Consider Days of White Space"); setLowerLimit(1); setDefault(20); } fpArray[x] = new FunctionParameter("fpDaysVolume", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("Consider Days to Compare Volume"); setLowerLimit(0); setDefault(0); } fpArray[x] = new FunctionParameter("fpEntryColor", FunctionParameter.COLOR); with(fpArray[x++]){ setName("Entry Position Color"); setDefault(Color.lime); } fpArray[x] = new FunctionParameter("fpExitColor", FunctionParameter.COLOR); with(fpArray[x++]){ setName("Exit Position Color"); setDefault(Color.red); }}var bInit = false;var bVersion = null;var xOpen = null;var xHigh = null;var xLow = null;var xClose = null;var xVolume = null;var xPriceSMA = null;var xVolumeSMA = null;var xHignesVol = null;var nCurrDaysWS = 0;var nLotSize = 0;var bPriceConfirm = false;var bVolumeConfirm = false;var nPivotPrice = null;function main(fpLenSMA, fpDaysWS, fpDaysVolume, fpEntryColor, fpExitColor){ if (bVersion == null) bVersion = verify(); if (bVersion == false) return; if (!bInit){ xOpen = open(); xHigh = high(); xLow = low(); xClose = close(); xVolume = volume(); if (fpDaysVolume != 0) xHignesVol = highest(fpDaysVolume, xVolume); xPriceSMA = sma(fpLenSMA); xVolumeSMA = sma(fpLenSMA, xVolume); nLotSize = Strategy.getDefaultLotSize(); bInit = true; } if (getBarState() == BARSTATE_ALLBARS){ bPriceConfirm = false; bVolumeConfirm = false; nCurrDaysWS = 0; }; var nOpen = xOpen.getValue(0); var nHigh = xHigh.getValue(0); var nLow = xLow.getValue(0); var nClose = xClose.getValue(0); var nPriorClose = xClose.getValue(-1); var nVolume = xVolume.getValue(0); var nPriceSMA = xPriceSMA.getValue(0); var nVolumeSMA = xVolumeSMA.getValue(0); var nHignesVol = 0; if (fpDaysVolume != 0) nHignesVol = xHignesVol.getValue(-1); if (nPriorClose == null || nPriceSMA == null || nVolumeSMA == null || nHignesVol == null) return; if (getCurrentBarIndex() != 0){ if (Strategy.isInTrade() && nHigh >= nPivotPrice){ var nExitPrice = Math.max(nOpen, nPivotPrice); Strategy.doSell("Exit", Strategy.LIMIT, Strategy.THISBAR, Strategy.DEFAULT, nExitPrice); drawShapeRelative(0, AboveBar1, Shape.DOWNTRIANGLE, null, fpExitColor, Text.PRESET, getCurrentBarIndex() + "Exit"); drawTextRelative(0, AboveBar2, "Exit", fpExitColor, null, Text.PRESET|Text.CENTER, null, null, getCurrentBarIndex() + "Exit"); drawTextRelative(0, AboveBar3, nLotSize + " @ " + formatPriceNumber(nExitPrice), fpExitColor, null, Text.PRESET|Text.CENTER, null, null, getCurrentBarIndex() + "ExitSettings"); bPriceConfirm = false; bVolumeConfirm = false; }; if (!bPriceConfirm && nCurrDaysWS >= fpDaysWS && nLow <= nPriceSMA && nClose >= nPriceSMA){ bPriceConfirm = true; for (var j = 0; j > -getCurrentBarCount()-1; j--){ nPivotPrice = xHigh.getValue(j-1); if (xHigh.getValue(j) > xHigh.getValue(j-1)){ nPivotPrice = xHigh.getValue(j); break; } } if (nVolume > nVolumeSMA && nVolume > nHignesVol) bVolumeConfirm = true; }; if (bPriceConfirm && !bVolumeConfirm){ if (nVolume > nVolumeSMA && nVolume > nHignesVol && nClose > nPriceSMA && nClose > nPriorClose) bVolumeConfirm = true; }; if (bPriceConfirm && bVolumeConfirm && !Strategy.isInTrade()){ var nEntryPrice = xOpen.getValue(1); if (nEntryPrice > nPivotPrice){ bPriceConfirm = false; bVolumeConfirm = false; } else{ Strategy.doLong("Entry", Strategy.MARKET, Strategy.NEXTBAR, Strategy.DEFAULT); drawShapeRelative(1, BelowBar1, Shape.UPTRIANGLE, null, fpEntryColor, Text.PRESET, getCurrentBarIndex() + "Entry"); drawTextRelative(1, BelowBar2, "Entry", fpEntryColor, null, Text.PRESET|Text.CENTER, null, null, getCurrentBarIndex() + "Entry"); drawTextRelative(1, BelowBar3, nLotSize + " @ " + formatPriceNumber(nEntryPrice), fpEntryColor, null, Text.PRESET|Text.CENTER, null, null, getCurrentBarIndex() + "EntrySettings"); }; }; }; if (nLow > nPriceSMA) nCurrDaysWS ++ else nCurrDaysWS = 0; return nPriceSMA;}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;}`