SimpleDecycler.efs, DecyclerOscillator.efs
EFS Library - Discussion Board
File Name: SimpleDecycler.efs, DecyclerOscillator.efs
Description:
Decyclers by John Ehlers
Formula Parameters:
SimpleDecycler.efs
HP Period: 125
DecyclerOscillator.efs
HP Period: 125
K: 1
Notes:
The related article is copyrighted material. If you are not a subscriber of Stocks & Commodities, please visit www.traders.com.
Download File:
SimpleDecycler.efs
DecyclerOscillator.efs
SimpleDecycler.efs
DecyclerOscillator.efs
EFS Code:
SimpleDecycler.efs
/********************************* Provided By: Interactive Data Corporation (Copyright © 2015) 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: Decyclers by John Ehlers Formula Parameters: Default: HP Period 125 Version: 1.00 07/09/2015 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("Simple Decycler"); setPriceStudy(true); setCursorLabelName("UpperBand", 0); setCursorLabelName("Decycler", 1); setCursorLabelName("LowerBand", 2); setDefaultBarFgColor(Color.red, 1); var x = 0; fpArray[x] = new FunctionParameter("fpHPPeriod", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("HP Period"); setLowerLimit(1); setDefault(125); } } var bInit = false; var bVersion = null; var xClose = null; var xHP = null; function main(fpHPPeriod){ if (bVersion == null) bVersion = verify(); if (bVersion == false) return; if (!bInit){ xClose = close(); xHP = efsInternal('Calc_HP', xClose, fpHPPeriod); bInit = true; }; var nClose = xClose.getValue(0); var nHP = xHP.getValue(0); if (nHP == null || nClose == null) return; var nDecycle = nClose - nHP; return [nDecycle * 1.005, nDecycle, nDecycle * .995]; } var nAlpha = null; function Calc_HP(xSource, nPeriod){ nAlpha = (Math.cos(.707*360 / nPeriod * Math.PI / 180) + Math.sin(.707*360 / nPeriod * Math.PI / 180) - 1) / Math.cos(.707*360 / nPeriod * Math.PI / 180); var nSource = xSource.getValue(0); var nSource1 = xSource.getValue(-1); var nSource2 = xSource.getValue(-2); if (nSource == null || nSource1 == null|| nSource2 == null) return; var nHP_1 = ref(-1); var nHP_2 = ref(-2); var nHP = Math.pow((1 - nAlpha / 2), 2) * (nSource - 2 * nSource1 + nSource2) + 2 * (1 - nAlpha) * nHP_1 - Math.pow((1 - nAlpha), 2) * nHP_2; return nHP; } 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; }
DecyclerOscillator.efs
/********************************* Provided By: Interactive Data Corporation (Copyright © 2015) 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: Decyclers by John Ehlers Formula Parameters: Default: HP Period 125 K 1 Version: 1.00 07/09/2015 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("Decycler Oscillator"); setCursorLabelName("ZeroLine", 0); setCursorLabelName("DecyclerOsc", 1); setDefaultBarFgColor(Color.grey, 0); setDefaultBarThickness(1, 0); setDefaultBarThickness(2, 1); setShowCursorLabel(false, 0); setShowCursorLabel(true, 1); var x = 0; fpArray[x] = new FunctionParameter("fpHPPeriod", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("HP Period"); setLowerLimit(1); setDefault(125); } fpArray[x] = new FunctionParameter("fpK", FunctionParameter.NUMBER); with(fpArray[x++]){ setName("K"); setDefault(1); } } var bInit = false; var bVersion = null; var xClose = null; var xHP = null; var xDecycle = null; var xDecycleOsc = null; function main(fpHPPeriod, fpK){ if (bVersion == null) bVersion = verify(); if (bVersion == false) return; if (!bInit){ xClose = close(); xHP = efsInternal('Calc_HP', xClose, fpHPPeriod); xDecycle = efsInternal('Calc_Decycle', xClose, xHP); xDecycleOsc = efsInternal('Calc_HP', xDecycle, .5 * fpHPPeriod); bInit = true; }; var nClose = xClose.getValue(0); var nDecycleOsc = xDecycleOsc.getValue(0); if (nDecycleOsc == null || nClose == null) return; var nReturnValue = 100 * fpK * nDecycleOsc / nClose; return [0, nReturnValue]; } var nAlpha = null; function Calc_HP(xSource, nPeriod){ nAlpha = (Math.cos(.707*360 / nPeriod * Math.PI / 180) + Math.sin(.707*360 / nPeriod * Math.PI / 180) - 1) / Math.cos(.707*360 / nPeriod * Math.PI / 180); var nSource = xSource.getValue(0); var nSource1 = xSource.getValue(-1); var nSource2 = xSource.getValue(-2); if (nSource == null || nSource1 == null|| nSource2 == null) return; var nHP_1 = ref(-1); var nHP_2 = ref(-2); var nHP = Math.pow((1 - nAlpha / 2), 2) * (nSource - 2 * nSource1 + nSource2) + 2 * (1 - nAlpha) * nHP_1 - Math.pow((1 - nAlpha), 2) * nHP_2; return nHP; } function Calc_Decycle(xSource, xHP){ var nSource = xSource.getValue(0); var nHP = xHP.getValue(0); if (nHP == null || nSource == null) return; var nDecycle = nSource - nHP; return nDecycle; } 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; }