ModifiedDonchianChannels.efs EFSLibrary - Discussion Board
File Name: ModifiedDonchianChannels.efs
Description:
Modified Donchian Channels
Formula Parameters:
Length : 24
Extremes : 3
Margins : 0
Notes:
Download File:
ModifiedDonchianChannels.efs
EFS Code:
/********************************* Provided By: Copyright 2021 Intercontinental Exchange, Inc. All Rights Reserved. eSignal is a service mark and/or a registered service mark of Intercontinental Exchange, Inc. in the United States and/or other countries. This sample eSignal Formula Script (EFS) is for educational purposes only. Intercontinental Exchange, Inc. 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.RGB(0x00,0x94,0xFF), 0); setCursorLabelName("Dn Band", 1); setPlotType(PLOTTYPE_LINE, 1); setDefaultBarFgColor(Color.RGB(0x00,0x94,0xFF), 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); }