/********************************************************* Alexis C. Montenegro © October 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("Standard Error Bands"); setCursorLabelName("Up-SEB",0); setCursorLabelName("Lo-SEB",1); setDefaultBarFgColor(Color.blue,0); setDefaultBarFgColor(Color.red,1); setPlotType(PLOTTYPE_LINE,0); setPlotType(PLOTTYPE_LINE,1); setDefaultBarThickness(1,0); setDefaultBarThickness(1,1); var x=0; fpArray[x] = new FunctionParameter("Length", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setDefault(10); } fpArray[x] = new FunctionParameter("Smooth", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setDefault(3); } 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 xLib1 = addLibrary("amStudies.efsLib"); var xLib2 = addLibrary("amFunctions.efsLib"); var bInit = false; var xBands = null; var xBandsU = null; var xBandsL = null; function main(Length,Smooth,Source,Symbol,Interval,Params){ if(bInit==false){ if(Symbol == null) Symbol = getSymbol(); if(Interval == null) Interval = getInterval(); var vSymbol = Symbol+","+Interval; xBands = efsInternal("calcBands",Length,Smooth,Source,sym(vSymbol)); xBandsU = getSeries(xBands,0) xBandsL = getSeries(xBands,1) setShowTitleParameters(eval(Params)); bInit=true; } return new Array (xBandsU,xBandsL) } var xInit = false; var xAvg = null; var xStdErr = null function calcBands(length,smooth,source,series){ if(xInit==false){ xAvg = sma(smooth,xLib1.amLSMA(length,eval(source)())); xStdErr = xLib2.amStdErr(length,smooth,eval(source)()); xInit=true; } if(xAvg.getValue(0)==null) return; var Upper = xAvg.getValue(0)+(2*xStdErr.getValue(0)); var Lower = xAvg.getValue(0)-(2*xStdErr.getValue(0)); return new Array (Upper,Lower); }