/********************************************************* Alexis C. Montenegro © December 2005 Use and/or modify this code freely. If you redistribute it please include this and/or any other comment blocks and a description of any changes you make. **********************************************************/ var fpArray = new Array(); function preMain() { setPriceStudy(true); setStudyTitle("IE/2"); setCursorLabelName("IE/2",0); setDefaultBarFgColor(Color.blue,0); setPlotType(PLOTTYPE_LINE,0); setDefaultBarThickness(1,0); var x=0; fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setDefault(15); } fpArray[x] = new FunctionParameter("Source", FunctionParameter.STRING); with(fpArray[x++]){ addOption("open"); addOption("high"); addOption("low"); addOption("close"); addOption("hl2"); addOption("hlc3"); addOption("ohlc4"); setDefault("close"); } fpArray[x] = new FunctionParameter("Symbol", FunctionParameter.STRING); with(fpArray[x++]){ setDefault(); } fpArray[x] = new FunctionParameter("Interval", FunctionParameter.STRING); with(fpArray[x++]){ setDefault(); } fpArray[x] = new FunctionParameter("Params", FunctionParameter.BOOLEAN); with(fpArray[x++]){ setName("Show Parameters"); setDefault(false); } } var bInit = false var xIE2 = null; function main(Length,Source,Symbol,Interval,Params){ if(bInit==false){ if(Symbol == null) Symbol = getSymbol(); if(Interval == null) Interval = getInterval(); var vSymbol = Symbol+","+Interval; xIE2 = getSeries(efsInternal("calcIE2",Length,eval(Source)(vSymbol))); bInit=true; } return xIE2; } var xInit = false; var xMA = null; var xLRS = null; var xLR = null; function calcIE2(length,source){ if(xInit==false){ xMA = sma(length, source); xLR = efsInternal("calcLR",length,source); xLRS = efsInternal("calcLRS",length,source); xInit=true; } var nMA = xMA.getValue(0); var nLRS = xLRS.getValue(0); var nLR = xLR.getValue(0); if(nMA==null || nLRS==null || nLR==null) return; return ((nLRS+nMA)+nLR)/2; } function calcLR(length,source) { var sum = 0; if (source.getValue(-(length)) == null){ return; } for (var i=length; i>0; i--){ sum += (i-(length+1)/3)*source.getValue(i-(length)); } var LR = 6/(length*(length+1))*sum; return (LR); } function calcLRS(length,source){ if(getCurrentBarCount()