/********************************************************* Alexis C. Montenegro © September 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(false); setStudyTitle("EaseOfmovement"); setCursorLabelName("EOM",0); setDefaultBarFgColor(Color.blue,0); setPlotType(PLOTTYPE_LINE,0); setDefaultBarThickness(1,0); var x=0; fpArray[x] = new FunctionParameter("Type", FunctionParameter.STRING); with(fpArray[x++]){ addOption("sma"); addOption("ema"); addOption("wma"); addOption("vwma"); setDefault("sma"); } fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setDefault(14); } 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("Divisor", FunctionParameter.NUMBER); with(fpArray[x++]){ setDefault(10000); } fpArray[x] = new FunctionParameter("Params", FunctionParameter.BOOLEAN); with(fpArray[x++]){ setName("Show Parameters"); setDefault(false); } } var bInit = false; var xEOM = null; function main(Type,Length,Symbol,Interval,Divisor,Params){ if(bInit==false){ if(Symbol == null) Symbol = getSymbol(); if(Interval == null) Interval = getInterval(); var vSymbol = Symbol+","+Interval; xEOM = getSeries(eval(Type)(Length,efsInternal("calc",Divisor,sym(vSymbol)))); addBand(0,PS_SOLID,1,Color.black,0); setShowTitleParameters(eval(Params)); bInit=true; } return xEOM; } var xInit = false; var midPoint = null; function calc(divisor,source){ if(xInit==false){ midPoint = hl2(); xInit=true; } return (midPoint.getValue(0)-midPoint.getValue(-1))/((volume(0)/divisor)/(high(0)-low(0))); }