/*********************************Provided By: eSignal (Copyright c eSignal), a division of Interactive Data Corporation. 2009. 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: Modified Donchian Channels Version: 1.0 10/29/2009 Formula Parameters: Default: Length 24 Extremes 3 Margins 0 Notes: **********************************/var fpArray = new Array();var bInit = false;function preMain(){ setPriceStudy(true); setShowCursorLabel(true); setShowTitleParameters(false); setStudyTitle("Modified Donchian Channels"); setCursorLabelName("Up Band", 0); setPlotType(PLOTTYPE_LINE, 0); setDefaultBarFgColor(Color.red, 0); setCursorLabelName("Dn Band", 1); setPlotType(PLOTTYPE_LINE, 1); setDefaultBarFgColor(Color.red, 1); var x = 0; fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER); with(fpArray[x++]) { setLowerLimit(1); setDefault(24); } fpArray[x] = new FunctionParameter("Margins", FunctionParameter.NUMBER); with(fpArray[x++]) { setLowerLimit(0); setDefault(0); } fpArray[x] = new FunctionParameter("Extremes", FunctionParameter.NUMBER); with(fpArray[x++]){ addOption(1); addOption(2); addOption(3); setDefault(3); } }var xDonchUp = null;var xDonchDn = null;var xDonchOpenUp = null;var xDonchOpenDn = null;function main(Length, Extremes, Margins) {var nBarState = getBarState();var nDonchUp = 0;var nDonchDn = 0;var nDonchOpenUp = 0;var nDonchOpenDn = 0;var nSsMax = 0;var nSsMin = 0;var nmin = 0;var nmax = 0; if (nBarState == BARSTATE_ALLBARS) { if(Length == null) Length = 24; if(Extremes == null) Extremes = 3; if(Margins == null) Margins = 0; } if (bInit == false) { xDonchUp = upperDonchian(Length, high()); xDonchDn = lowerDonchian(Length, low()); xDonchOpenUp = upperDonchian(Length, open()); xDonchOpenDn = lowerDonchian(Length, open()); bInit = true; } nDonchUp = xDonchUp.getValue(0); nDonchDn = xDonchDn.getValue(0) nDonchOpenUp = xDonchOpenUp.getValue(0); nDonchOpenDn = xDonchOpenDn.getValue(0); if (nDonchUp == null) return; if (Extremes ==1) { nSsMax = nDonchUp; nSsMin = nDonchDn; } else { if (Extremes == 3) { nSsMax = (nDonchOpenUp + nDonchUp) / 2; nSsMin = (nDonchOpenDn + nDonchDn) / 2; } else { nSsMax = nDonchOpenUp; nSsMin = nDonchOpenDn; } } nmin = nSsMin + (nSsMax - nSsMin) * Margins / 100; nmax = nSsMax - (nSsMax - nSsMin) * Margins / 100; return new Array(nmax, nmin);} |