I have tested a lot of systems and indicators and fell in love with the Ichimoku indicator. I am currently on a mission to quantify trading aspects of the indicator in order to backtest and optimize it.
One of the things that I often read about the Ichimoku indicator is that "it loses its validity in range markets". What I have done here is to create my own indicator in order to reverse engineer the statement - when the Ichimoku loses its validity, the markets is ranging.
The indicator works as follows:
When both the current and future cloud have the same color, the market is trending, but when there is color changes, the market is ranging. The indicator gives a value of +2 or -2 for bullish or bearish trending respectively. The indicator gives +1 or -1 when the market is bullish or bearish range respectively. A value of 0 indicates chopiness or that the close is in the cloud (do not trade). This indicator serves as a setup indicator - it only shows when to long or short and what strategy to follow and is not intended to be used as entry signals. For example, when the indicator is +1 you have a bullish range setup, and when the RSI(14) is coming out of overbought you have a buy entry. Or if you have a -2 and the RSI(14) crosses down 50 you have a swing trade short entry. A weakness of the indicator is that it does not allow Kumo breakouts and therefore misses the start of trends. It is good for swing trading and range trading.
I am new to programming and ProRealTime, so I welcome any improvements. Below is the code.
//Ichimoku Tenkansen = (highest(high)+lowest(low))/2 Kijunsen = (highest(high)+lowest(low))/2 SpanA = (tenkansen+kijunsen)/2 SpanB = (highest(high)+lowest(low))/2 FutureSpanA = (tenkansen+kijunsen)/2 FutureSpanB = (highest(high)+lowest(low))/2 //Ichimoku Trend or Range TrendorRange = 0 if close > SpanA and close > SpanB and SpanA > SpanB and FutureSpanA > FutureSpanB then TrendorRange = 2 elsif close < SpanA and close < SpanB and SpanA < SpanB and FutureSpanA < FutureSpanB then TrendorRange = -2 elsif close > SpanA and close > SpanB and SpanA < SpanB and FutureSpanA > FutureSpanB then TrendorRange = -1 elsif close < SpanA and close < SpanB and SpanA > SpanB and FutureSpanA < FutureSpanB then TrendorRange = 1 else TrendorRange = 0 endif BullTrend = 2 BullRange = 1 BearTrend = -2 BearRange = -1 Chopiness = 0 Return TrendorRange as "Trend or Range", BullTrend as "BullTrend", BullRange as "BullRange", BearTrend as "BearTrend", BearRange as "BearRange", Chopiness as "Chopiness"
No information on this site is investment advice or a solicitation to buy or sell any financial instrument. Past performance is not indicative of future results. Trading may expose you to risk of loss greater than your deposits and is only suitable for experienced investors who have sufficient financial means to bear such risk.ProRealTime ITF files and other attachments :