// Downloaded From https://www.WiseStockTrader.com /********************************************************* 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() { setStudyTitle("Tick Line Momentum Osc."); setCursorLabelName("TLMO", 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(10); } fpArray[x] = new FunctionParameter("Momentum", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setDefault(5); } fpArray[x] = new FunctionParameter("Smooth", FunctionParameter.NUMBER); with(fpArray[x++]){ setLowerLimit(1); setDefault(5); } 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 xTLMO = null; function main(Length,Momentum,Smooth,Source,Symbol,Interval,Params){ if(bInit==false){ if(Symbol == null) Symbol = getSymbol(); if(Interval == null) Interval = getInterval(); var vSymbol = Symbol+","+Interval; xTLMO = getSeries(ema(Smooth,mom(Momentum,efsInternal("calc",Length,eval(Source)(sym(vSymbol)))))); addBand(0,PS_SOLID,1,Color.black,"Centerline"); setShowTitleParameters(eval(Params)); bInit=true; } return xTLMO; } var xInit = false; var xMA = null; var xClose = null; var Cum = 0; var Cum1 = 0; function calc(length,source){ var nVal = 0; if(xInit==false){ xMA = ema(length,source); xClose = source; xInit=true; } if(getBarState()==BARSTATE_NEWBAR){ Cum1 = Cum; } var nClose = xClose.getValue(0); var nMA = xMA.getValue(-1); if(nClose==null || nMA==null) return; if(nClose>nMA) nVal = 1; else if(nClose