Epuisement via CVD Cumulative Volume Delta
Forums › ProRealTime forum Français › Support ProBuilder › Epuisement via CVD Cumulative Volume Delta
- This topic has 7 replies, 2 voices, and was last updated 3 months ago by Alai-n.
-
-
07/09/2024 at 9:11 AM #234980
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
Epuisement CVD123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100// "Cumulative Volume Delta Epuisement"//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////"Cumulative Delta" (by Nicolas/ProRealcode)//////////////////////////////////////////////////////////////////////////////U1if(close>=open and (close-open+2*(high-close)+2*(open-low)))>0 thenU1= volume*(high-low)/(close-open+2*(high-close)+2*(open-low))elseU1=0.0endif//D1if(close<open and (open-close+2*(high-open)+2*(close-low)))>0 thenD1 = volume*(high-low)/(open-close+2*(high-open)+2*(close-low))elseD1=0.0endif//////////////////////////////////////////////////////////////////////Deltaif(close>=open) thenDelta= U1elseDelta= -D1endif////////////////////////////////////////////////////////////////////if barindex>1 thencumDelta=(cumDelta[1])+Deltaif close>=open thenhi= cumDeltaelsehi =cumDelta[1]endifif close<=open thenlo= cumDeltaelselo=cumDelta[1]endif//drawcandle(cumDelta[1], hi, lo, cumDelta)endif////////////////////////////////////////////////////////////////////////////////Variables ://MinBarRange = 1Rge = 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 haussierIf CVDMin thenCVDMin1 = cumDelta[1]Close1 = Close[1]for I = MinBarRange to 40If CVDMin[I] thenCVDMin2 = 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 = 2endifbreakendifnextendif//Epuisement des Acheteurs agressifs = signal baissierIf CVDMax thenCVDMax1 = cumDelta[1]Close1 = Close[1]for I = MinBarRange to 40If CVDMax[I] thenCVDMax2 = 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 = -2endifbreakendifnextendif////////////////////////////////////////////////////////////////////////////Return CVDR as "CVDR"////////////////////////////////////////////////////////////////////////////07/10/2024 at 3:21 PM #235018Voici ce code de base pour que vous puissiez travailler avec vous. Dans le code, vous pouvez voir les valeurs minimales du prix, MACD et DeltaCum. Lorsque l'histogramme est positif, il est analysé s'il y a divergence ou non.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596//--------------------------------------------------------////"Cumulative Delta" (by Nicolas/ProRealcode)//--------------------------------------------------------////U1if(close>=open and (close-open+2*(high-close)+2*(open-low)))>0 thenU1= volume*(high-low)/(close-open+2*(high-close)+2*(open-low))elseU1=0.0endif//D1if(close<open and (open-close+2*(high-open)+2*(close-low)))>0 thenD1 = volume*(high-low)/(open-close+2*(high-open)+2*(close-low))elseD1=0.0endif//--------------------------------------------------------////Deltaif(close>=open) thenDelta= U1elseDelta= -D1endif//--------------------------------------------------------//if barindex>1 thencumDelta=(cumDelta[1])+Deltaif close>=open thenhi= cumDeltar=255g=255b=255elsehi =cumDelta[1]endifif close<=open thenlo= cumDeltar=255g=0b=0elselo=cumDelta[1]endifdrawcandle(cumDelta[1], hi, lo, cumDelta) coloured(r,g,b)endif//--------------------------------------------------------////-----MACD-----------------------------------------------//fastema=average[12,1](close)slowema=average[26,1](close)mymacd=fastema-slowemasignal=average[9,1](mymacd)histo=mymacd-signal//--------------------------------------------------------//if histo crosses under 0 then$priceLow[n+1]=low$histoLow[n+1]=histo$cumdeltaLow[n+1]=cumdelta$barprice[n+1]=barindex$barhisto[n+1]=barindex$bardelta[n+1]=barindexn=n+1elsif histo < 0 thenif low < $pricelow[n] then$pricelow[n]=low$barprice[n]=barindexendifif histo < $histolow[n] then$histoLow[n]=histo$barhisto[n]=barindexendifif cumdelta < $cumdeltalow[n] then$cumdeltaLow[n]=cumdelta$bardelta[n]=barindexendifendif//--------------------------------------------------------//if n>1 thendivCumdeltaHisto = $cumdeltalow[n]>$cumdeltalow[n-1] and $histolow[n]<$histolow[n-1]divPriceCumdelta = $cumdeltalow[n]>$cumdeltalow[n-1] and $pricelow[n]<$pricelow[n-1]//-----Divergence Histogram-CumDelta & Price-------------------------//if histo crosses over 0 and divCumdeltaHisto and divPriceCumdelta thendrawarrowup(barindex,$cumdeltalow[n])coloured("lightgreen")drawsegment($bardelta[n-1],$cumdeltaLow[n-1],$bardelta[n],$cumdeltaLow[n])coloured("lightgreen")//-----Divergence Histogram-CumDelta -----------------------------//elsif histo crosses over 0 and divCumdeltaHisto thendrawarrowup(barindex,$cumdeltalow[n])coloured("orange")drawsegment($bardelta[n-1],$cumdeltaLow[n-1],$bardelta[n],$cumdeltaLow[n])coloured("orange")//-----Divergence Histogram-Price---------------------------------//elsif histo crosses over 0 and divPriceCumdelta thendrawarrowup(barindex,$cumdeltalow[n])coloured("yellow")drawsegment($bardelta[n-1],$cumdeltaLow[n-1],$bardelta[n],$cumdeltaLow[n])coloured("yellow")endifendif//--------------------------------------------------------//Return1 user thanked author for this post.
07/12/2024 at 10:31 AM #235150Bonjour @Iván et merci pour ce travail.
Je prends un peu temps pour jeter un œil à tout ça, afin de mieux comprendre le code et identifier d’éventuels dysfonctionnements. Car à première vue il y a de très bons déclenchements, mais aussi de très mauvais 😉 Je reviendrai vers toi la semaine prochaine!
Encore merci et bon week-end
07/17/2024 at 12:36 PM #235383Bonjour @Iván, bon j’ai mis le temps à comprendre que le code que tu as écrit décliné plusieurs types de configurations de “Divergences”. Ma première lecture était donc mauvaise car ton code fonctionne parfaitement!
A partir de là, je l’ai simplifié en retirant le bloc entre les lignes 84 à 87, car c’est la partie Price + CumulativeDelta qui m’intéresse le plus! Dans un premier temps les “Epuisements” et dans un deuxième temps ce sera les “Absorptions”.
Donc, au doigt mouillé, j’ai repris la partie de ton code pour matérialiser les “Epuisements Haussiers”, que j’ai tenté de remodeler pour faire ressortir les “Epuisements Baissiers”. Résultat, j’ai tout cassé, plus rien ne fonctionne, plus rien ne s’affiche !!!
Aurais-tu une idée ? Merci
Epuisements Price CVD123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140//"Absorption-Epuisement PriceCumDelta" Cycle via MACD//--------------------------------------------------------////--------------------------------------------------------////"Cumulative Delta" (by Nicolas/ProRealcode)//--------------------------------------------------------////U1if(close>=open and (close-open+2*(high-close)+2*(open-low)))>0 thenU1= volume*(high-low)/(close-open+2*(high-close)+2*(open-low))elseU1=0.0endif//D1if(close<open and (open-close+2*(high-open)+2*(close-low)))>0 thenD1 = volume*(high-low)/(open-close+2*(high-open)+2*(close-low))elseD1=0.0endif//--------------------------------------------------------////Deltaif(close>=open) thenDelta= U1elseDelta= -D1endif//--------------------------------------------------------//if barindex>1 thencumDelta=(cumDelta[1])+Deltaif close>=open thenhi= cumDeltar=255g=255b=255elsehi =cumDelta[1]endifif close<=open thenlo= cumDeltar=255g=0b=0elselo=cumDelta[1]endifdrawcandle(cumDelta[1], hi, lo, cumDelta) coloured(r,g,b)endif//--------------------------------------------------------////-----MACD-----------------------------------------------//fastema=average[12,1](close)slowema=average[26,1](close)mymacd=fastema-slowemasignal=average[9,1](mymacd)histo=mymacd-signal//--------------------------------------------------------//if histo crosses under 0 then$priceLow[n+1]=low$histoLow[n+1]=histo$cumdeltaLow[n+1]=cumdelta$barprice[n+1]=barindex$barhisto[n+1]=barindex$bardelta[n+1]=barindexn=n+1elsif histo < 0 thenif low < $pricelow[n] then$pricelow[n]=low$barprice[n]=barindexendifif histo < $histolow[n] then$histoLow[n]=histo$barhisto[n]=barindexendifif cumdelta < $cumdeltalow[n] then$cumdeltaLow[n]=cumdelta$bardelta[n]=barindexendifendif//--------------------------------------------------------//if histo crosses over 0 then$priceHigh[n+1]=high$histoHigh[n+1]=histo$cumdeltaHigh[n+1]=cumdelta$barprice[n+1]=barindex$barhisto[n+1]=barindex$bardelta[n+1]=barindexn=n+1elsif histo > 0 thenif high < $pricehigh[n] then$pricehigh[n]=high$barprice[n]=barindexendifif histo < $histohigh[n] then$histoHigh[n]=histo$barhisto[n]=barindexendifif cumdelta < $cumdeltahigh[n] then$cumdeltahigh[n]=cumdelta$bardelta[n]=barindexendifendif//--------------------------------------------------------//if n>1 then//----- Epuisement Up-------------------------------------------------//divPriceCumdeltaEU = $cumdeltalow[n]>$cumdeltalow[n-1] and $pricelow[n]<$pricelow[n-1]//-----Divergence CumDelta & Price------------------------------------//if histo crosses over 0 and divPriceCumdeltaEU thendrawarrowup(barindex,$cumdeltalow[n])coloured("lightgreen")drawsegment($bardelta[n-1],$cumdeltaLow[n-1],$bardelta[n],$cumdeltaLow[n])coloured("lightgreen")//-----Divergence Histogram-Price---------------------------------//elsif histo crosses over 0 and divPriceCumdeltaEU thendrawarrowup(barindex,$cumdeltalow[n])coloured("yellow")drawsegment($bardelta[n-1],$cumdeltaLow[n-1],$bardelta[n],$cumdeltaLow[n])coloured("yellow")endifendif//--------------------------------------------------------//if n>1 then//----- Epuisement Down------------------------------------------------//divPriceCumdeltaED = $cumdeltahigh[n]<$cumdeltahigh[n-1] and $pricehigh[n]>$pricehigh[n-1]//-----Divergence CumDelta & Price------------------------------------//if histo crosses under 0 and divPriceCumdeltaED thendrawarrowdown(barindex,$cumdeltahigh[n])coloured("lightgreen")drawsegment($bardelta[n-1],$cumdeltahigh[n-1],$bardelta[n],$cumdeltahigh[n])coloured("red")//-----Divergence Histogram-Price---------------------------------//elsif histo crosses under 0 and divPriceCumdeltaED thendrawarrowdown(barindex,$cumdeltahigh[n])coloured("yellow")drawsegment($bardelta[n-1],$cumdeltahigh[n-1],$bardelta[n],$cumdeltahigh[n])coloured("yellow")endifendif//--------------------------------------------------------//Return//--------------------------------------------------------//07/17/2024 at 12:50 PM #23538507/17/2024 at 1:08 PM #23538807/24/2024 at 8:23 AM #23570507/29/2024 at 8:46 AM #235880 -
AuthorPosts
Find exclusive trading pro-tools on