Bonjour à tous,
J’aurais besoin d’aide pour coder un indicateur qui associe le code RSI divergences élaboré par Francesco (https://www.prorealcode.com/prorealtime-indicators/rsi-classical-hidden-divergences-indicator/) et les bougies Heiken Ashi.
Je souhaiterais avoir un histogramme -1/0/1 qui se déclenche si une divergence apparait et la bougie HA est de couleur opposée au mouvement précédent (ex1 et ex2) ou que la bougie HA suivante à l’apparition de la divergence change de sens (ex 3 et 4)
J’ai essayé de regrouper ces 2 idées, mais çà ne me donne pas du tout le résultat souhaité
Merci de votre aide
Reb
//RSI Divergences By Frank (Francesco)
//Description: the indicator draws arrows on chart as entry points when a direct or an hidden RSI divergence is found.
//When a DIRECT divergence is found, "dd" (direct divergence) text is added to chart over (Sell signal) or under (Buy signal) the arrow
//When an HIDDEN or INVERSE divergence is found, "hd" (hidden divergence) text is added to chart over (Sell signal) or under (Buy signal) the arrow
//Variables:
//RsiPeriod: number of bars to calculare RSI value
//RsiOverSold: Oversold Level
//RsiOverBought: OverBought Level
//MinBarRange: minimum distance from two consecutive RSI Highs or RSI Lows
RsiPeriod=10
RsiOverSold=30
RsiOverBought=70
MinBarRange=3
Rge = averagetruerange[10](close)
MyRSI = rsi[RsiPeriod](Close)
ONCE ShiftText = 3
RsiMax = MyRSI < MyRSI[1] and MyRSI[1] > MyRSI[2] and MyRSI[1] > RsiOverBought
RsiMin = MyRSI > MyRSI[1] and MyRSI[1] < MyRSI[2] and MyRSI[1] < RsiOverSold
if RsiMax then
RSIMax1 = MyRSI[1]
High1 = High[1]
for I = MinBarRange to 80
if RsiMax[I] then
RSIMax2 = MyRSI[I + 1]
High2 = High[I + 1]
If High1 > High2 and RSIMax1 < RSIMax2 then
X=-1
//DRAWARROWDOWN(barindex, High + Rge / ShiftText)coloured(255,192,203,255)
//DRAWTEXT("dd", barindex, High + Rge / ShiftText / 0.3,SansSerif,Italic,10)coloured(0,0,255,255)
//elsif High1 < High2 and RSIMax1 > RSIMax2 then
//DRAWARROWDOWN(barindex, High + Rge / ShiftText)coloured(255,192,203,255)
//DRAWTEXT("hd", barindex, High + Rge / ShiftText / //0.2,SansSerif,Italic,10)coloured(0,0,255,255)
endif
break
endif
next
endif
if RsiMin then
RSIMin1 = MyRSI[1]
Low1 = Low[1]
for I = MinBarRange to 80
if RSIMin[I] then
RSIMin2 = MyRSI[I + 1]
Low2 = Low[I + 1]
If Low1 < Low2 and RSIMin1 > RSIMin2 then
X=1
//DRAWARROWUP(barindex, lOW - Rge / ShiftText)coloured(0,0,255,255)
//DRAWTEXT("dd", barindex, lOW - Rge / ShiftText / 0.3,SansSerif,Italic,10)coloured(0,0,255,255)
//elsif Low1 > Low2 and RSIMin1 < RSIMin2 then
//DRAWARROWUP(barindex, lOW - Rge / ShiftText)coloured(0,0,255,255)
//DRAWTEXT("hd", barindex, lOW - Rge / ShiftText / //0.2,SansSerif,Italic,10)/coloured(0,0,255,255)
endif
break
endif
next
endif
//heiken ashi
xClose = (Open+High+Low+Close)/4
if(barindex>2) then
xOpen= (xOpen[1] + xClose[1])/2
xHigh= Max(xOpen, xClose)
xLow= Min(xOpen, xClose)
endif
If X=1 and xOpen<xclose then
Y = 1
ELSIF X[1]=1 and xOpen<xclose then
Y=0.5
else
Y= 0
endif
return Y