@JC_Bywan, merci pour tes indications et tes observations…
J’ai repris une autre piste et j’ai pu sortir ces deux codes permettant de mettre en évidences les Absorptions sur l’OBV et le CVD(Cumulative Volume Delta). Je les mets ici, au cas ou cela intéresserait des membres de la communauté ProRealCode!
// "Obv Absorption"
//
//Variables :
//
MinBarRange = 1
Rge = Averagetruerange[10](close)
MiOBV = OBV(close)
//
Once ShiftText = 3
//
OBVMax = MiOBV < MiOBV[1] and MiOBV[1] > MiOBV[2]
OBVMin = MiOBV > MiOBV[1] and MiOBV[1] < MiOBV[2]
//
//Absorption des Vendeurs agressifs = signal haussier
If OBVMin then
OBVMin1 = MiOBV[1]
Low1 = Low[1]
for I = MinBarRange to 40
If OBVMin[I] then
OBVMin2 = MiOBV[I+1]
Low2 = Low[I+1]
If Low1 >= Low2 and OBVMin1 < OBVMin2 then
Drawarrowup(barindex, Low - Rge / ShiftText)coloured("green")
Drawtext("Absorption", barindex, Low - Rge / ShiftText / 0.2, SansSerif, Italic, 10)coloured("green")
Drawsegment (barindex[I], low[I], barindex, low) coloured("green")
endif
break
endif
next
endif
//Absorption des Acheteurs agressifs = signal baissier
If OBVMax then
OBVMax1 = MiOBV[1]
High1 = High[1]
for I = MinBarRange to 40
If OBVMax[I] then
OBVMax2 = MiOBV[I+1]
High2 = High[I+1]
If High1 <= High2 and OBVMax1 > OBVMax2 then
Drawarrowdown(barindex, High + Rge / ShiftText)coloured("red")
Drawtext("Absorption", barindex, High + Rge / ShiftText / 0.2, SansSerif, Italic, 10)coloured("red")
Drawsegment (barindex[I], high[I], barindex, high) coloured("red")
endif
break
endif
next
endif
Return
// "Cumulative Volume Delta Absorption"
//"Cumulative Delta" (by Nicolas/ProRealcode)
////////////////////////////////////////////////////////////////////
//U1
if(close>=open and (close-open+2*(high-close)+2*(open-low)))>0 then
U1= volume*(high-low)/(close-open+2*(high-close)+2*(open-low))
else
U1=0.0
endif
//D1
if(close<open and (open-close+2*(high-open)+2*(close-low)))>0 then
D1 = volume*(high-low)/(open-close+2*(high-open)+2*(close-low))
else
D1=0.0
endif
////////////////////////////////////////////////////////////////////
//Delta
if(close>=open) then
Delta= U1
else
Delta= -D1
endif
////////////////////////////////////////////////////////////////////
if barindex>1 then
cumDelta=(cumDelta[1])+Delta
if close>=open then
hi= cumDelta
else
hi =cumDelta[1]
endif
if close<=open then
lo= cumDelta
else
lo=cumDelta[1]
endif
//drawcandle(cumDelta[1], hi, lo, cumDelta)
endif
//
//Variables :
//
MinBarRange = 1
Rge = Averagetruerange[10](close)
//
Once ShiftText = 3
//
CVDMax = cumDelta < cumDelta[1] and cumDelta[1] > cumDelta[2]
CVDMin = cumDelta > cumDelta[1] and cumDelta[1] < cumDelta[2]
//
//Absorption des Vendeurs agressifs = signal haussier
If CVDMin then
CVDMin1 = cumDelta[1]
Low1 = Low[1]
for I = MinBarRange to 40
If CVDMin[I] then
CVDMin2 = cumDelta[I+1]
Low2 = Low[I+1]
If Low1 >= Low2 and CVDMin1 < CVDMin2 then
Drawarrowup(barindex, Low - Rge / ShiftText)coloured("green")
Drawtext("Absorption", barindex, Low - Rge / ShiftText / 0.2, SansSerif, Italic, 10)coloured("green")
Drawsegment (barindex[I], low[I], barindex, low) coloured("green")
endif
break
endif
next
endif
//Absorption des Acheteurs agressifs = signal baissier
If CVDMax then
CVDMax1 = cumDelta[1]
High1 = High[1]
for I = MinBarRange to 40
If CVDMax[I] then
CVDMax2 = cumDelta[I+1]
High2 = High[I+1]
If High1 <= High2 and CVDMax1 > CVDMax2 then
Drawarrowdown(barindex, High + Rge / ShiftText)coloured("red")
Drawtext("Absorption", barindex, High + Rge / ShiftText / 0.2, SansSerif, Italic, 10)coloured("red")
Drawsegment (barindex[I], high[I], barindex, high) coloured("red")
endif
break
endif
next
endif
Return
Bon après-midi