Stock Portfolio Organizer
The ultimate porfolio management solution.
WiseTrader Toolbox
#1 Selling Amibroker Plugin featuring:
Tick Line Momentum Oscillator for eSignal (EFS)
Excerpt taken from Stocks & Commodities, V. 12:1 (42-44):Using The Tick In A Short-Term Indicator by Daniel E. Downing
The tick index, the net difference of the numbers of stocks last traded on an uptick from those last traded on a downtick , is a well-known indicator, but it’s got a problem. The raw number result is volatile, perhaps too volatile for some. What to do? here, then, is a way to smooth out the noise to identify short-term trading opportunities.
The tick is a basic unit for the markets, watched with fascination during periods of turmoil and periods of enthusiasm. It is quoted throughout the day on most quote services. In addition, the closing tick value can be found on the market statistics pages of financial newspapers such as Barron’s and The Wall Street Journal. Let me present, then, the tick line momentum oscillator, which is based on the closing value for the New York Stock Exchange (NYSE) tick indicator. The oscillator has been shown to have a good track record of determining when the NYSE is overbought or oversold on a short-term basis.
Indicator / Formula
/********************************************************* 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<nMA) nVal = -1; else nVal = 0; Cum = Cum1+nVal; return Cum; }
0 comments
Leave Comment
Please login here to leave a comment.
Back