Bonjour, je viens solliciter de l’aide pour faire évoluer un code déjà existant via le CVD. Ci-joint le code déjà existant et qques photos de ce qu’il devrait faire ressortir.
Le code ci-joint permet de faire apparaitre les configurations d’épuisements via le CVD Cumulative Volume Delta. Cependant tel que le code est écrit, on se retrouve avec la tête dans le guidon. Je souhaiterais une écriture du code qui permette de prendre un peu de distance, une visualisation en profondeur des fluctuations du marché.
C’est pour quoi après avoir testé tout un tas de protocole avec des indicateurs chartistes et techniques MA, RSi etc… Je me suis arrêté sur les cycles qu’offrent le MACD.
Il s’agirait donc de rechercher des configurations d’EPUISEMENT sur le CVD, mais seulement au cœur de deux vagues successives sur la MACD[12.26.9](close) <> 0… La valeur du MACD n’ a aucune importance dans le calcul, seule le Close sur le prix et le Close sur le CVD comptent.
La visualisation me parait assez claire sur les images jointes, mais je reste bien sûr disponible, si mon explication écrite ne vous paraissez pas assez limpide.
Par avance Merci
// "Cumulative Volume Delta Epuisement"
////////////////////////////////////////////////////////////////////////////
////////////////////////////////////////////////////////////////////////////
//"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]
//
CVDR = 0
//
////////////////////////////////////////////////////////////////////////////
//Epuisement des Vendeurs agressifs = signal haussier
If CVDMin then
CVDMin1 = cumDelta[1]
Close1 = Close[1]
for I = MinBarRange to 40
If CVDMin[I] then
CVDMin2 = cumDelta[I+1]
Close2 = Close[I+1]
If Close1 <= Close2 and CVDMin1 > CVDMin2 then
//Drawarrowup(barindex, Low - Rge / ShiftText)coloured("yellow")
//Drawtext("Epuisement", barindex, Low - Rge / ShiftText / 0.2, SansSerif, Italic, 10)coloured("yellow")
//Drawsegment (barindex[I], low[I], barindex, low) coloured("yellow")
CVDR = 2
endif
break
endif
next
endif
//Epuisement des Acheteurs agressifs = signal baissier
If CVDMax then
CVDMax1 = cumDelta[1]
Close1 = Close[1]
for I = MinBarRange to 40
If CVDMax[I] then
CVDMax2 = cumDelta[I+1]
Close2 = Close[I+1]
If Close1 >= Close2 and CVDMax1 < CVDMax2 then
//Drawarrowdown(barindex, High + Rge / ShiftText)coloured("gray")
//Drawtext("Epuisement", barindex, High + Rge / ShiftText / 0.2, SansSerif, Italic, 10)coloured("gray")
//Drawsegment (barindex[I], high[I], barindex, high) coloured("gray")
CVDR = -2
endif
break
endif
next
endif
////////////////////////////////////////////////////////////////////////////
Return CVDR as "CVDR"
////////////////////////////////////////////////////////////////////////////