Divergences between the trend of prices and an indicator are often used as a signal for a change in price trend:
Positive (Bullish) Divergence: prices are falling but the indicator is rising
Negative (Bearish) Divergence: prices are rising but the indicator is falling
This example compares RSI values at their highs with the closing price of the stock at the time of those highs. If the RSI high is lower than the previous high but the price is higher between those points then it gives a signal for negative divergence.
This example uses a 10 bar pivot for the RSI(14) ie there are at least 10 lower days either side (this can be increased - the higher the number the more important the peak).
//Negative RSI divergence
RSI1 = RSI(BARS=14);
//calculate 10 pivot RSI high
P1 = PIVOT(RSI1, MIN=10, TYPE=High);
//get value of the RSI peak
V1 = VALUEWHEN(RSI1, P1 <> 0);
//Is RSI high < previous>?
Sig1 = V1 < V1[1];
//get stock value at RSI peak
V2 = VALUEWHEN(Close(), P1 <> 0);
//Is stock price higher than at previous RSI peak?
Sig2 = V2 > V2[1];
//Show when RSI has lower high & price higher low
Sig1 and Sig2
For positive divergence:
//Positive RSI Divergence
RSI1 = RSI(BARS=14);
P1 = PIVOT(RSI1, MIN=10, TYPE=Low);
V1 = VALUEWHEN(RSI1, P1 <> 0);
Sig1 = V1 > V1[1];
V2 = VALUEWHEN(Close(), P1 <> 0);
Sig2 = V2 < V2[1];
//Show when RSI is higher low and price lower high
Sig1 and Sig2
As in this example, use the above in two separate Show View tools and drag one over the other to display the signals:
At point B the RSI peak is lower than A, but the share price is higher (negative divergence), whereas at point D the RSI low is higher than at C but the share price is lower (positive divergence).
I’m trying to get the vertical green and red bars over the RSI indicator as opposed to having a separate show view for the Positive and Negative Divergences. Is this possible?
Please see attached workbook which shows that different result are obtained. Can you please assist with this.
On the back of your signal test above - can you please confirm the Pivot() function is now ok to use to support signal / backtesting. Last time I checked I found that it looks ahead of time and cheats.
You should not use the Pivot() function in any tests, because future data coming in can affect the position of previous labels, thus making the tests unrealistic.