Indicateur de volatilité à ajouter à une formule
Forums › ProRealTime forum Français › Support ProBuilder › Indicateur de volatilité à ajouter à une formule
- This topic has 7 replies, 2 voices, and was last updated 1 year ago by finplus. 
- 
	
		
- 
		
			
				
04/28/2024 at 3:04 PM #232005Bonjour, je n’ai pas réussi à inserer le code suivant donc je fais un simple copier coller. /////////////////////////////////////KAMA 150 Period = 150 
 FastPeriod = 2
 SlowPeriod = 30Fastest = 2 / (FastPeriod + 1) 
 Slowest = 2 / (SlowPeriod + 1)
 if barindex < Period+1 then
 Kama=close
 else
 Num = abs(close-close[Period])
 Den = summation[Period](abs(close-close[1]))
 ER = Num / Den
 Alpha = SQUARE(ER *(Fastest – Slowest )+ Slowest)
 KAMA = (Alpha * Close) + ((1 -Alpha)* Kama[1])
 endif///////////////////////////////////////////////////////////////////: Distance Cours KAMA xClose = (Open+High+Low+Close)/4 
 Distance = (xclose- kama)moy = exponentialaverage[period]((distance)) if Moy<Moy[1] and Moy[1]>Moy[2] and Moy[1]>0 then 
 RetB5=RetB4
 RetB4=RetB3
 RetB3=RetB2
 RetB2=RetB1
 RetB1=Moy[1]
 RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5
 endifif Moy>Moy[1] and Moy[1]<Moy[2] and Moy[1]<0 then 
 RetH5=RetH4
 RetH4=RetH3
 RetH3=RetH2
 RetH2=RetH1
 RetH1=Moy[1]
 RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5
 endifif abs(retBmoy-0) > abs(retHmoy-0) then 
 limitUP = retBmoy
 elsif abs(retBmoy-0) < abs(retHmoy-0) then
 LimitUp = -RetHmoy
 endifif abs(RetHmoy-0) > abs(RetBmoy-0) then 
 limitDn = RetHmoy
 elsif abs(RetHmoy-0) < abs(RetBmoy-0) then
 LimitDn = – RetBmoy
 endifDistMoyKAMA = average [50](distance) AdditionalUpBand = RetBmoy*2 
 AdditionalDNBand = RETHMoy*2for i=0 to 49 
 $montab[i]=distance[i]
 Nextarraysort($montab,ascend) 
 moy3plusBas = ($montab[0] + $montab[1] + $montab[2]) / 3
 moy3plusHauts = ($montab[49] + $montab[48] + $montab[47]) / 3if (distance > DistmoyKAMA) and (distance > 0) then 
 drawcandle (0,0, distance, distance) COLOURED (0,0,255)
 elsif (DistmoyKAMA > DistmoyKAMA[1]) and (distance > DistmoyKAMA) and (distance > 0) then
 drawcandle (0,0, distance, distance) COLOURED (0,255,255)
 endifif (distance < DistmoyKAMA) and (distance < 0) then 
 drawcandle (0,0, distance, distance) COLOURED (255,0,0)
 elsif (DistmoyKAMA < DistmoyKAMA[1]) and (distance < DistmoyKAMA) and (distance < 0) then
 drawcandle (0,0, distance, distance) COLOURED (255,204,153)
 endifReturn distance as “Distance”, moy as “Distance Moy”, RetBmoy as “Moyenne 5 derniers retournements baissiers”, RetHmoy as “Moyenne 5 derniers retournements haussiers”, moy3plusHauts as “FilterUp”, moy3plusBas as “FilterDn”, DistmoyKAMA as “DistMoyKAMA”, AdditionalUPBand as “AdditionnalUpBAnd”, AdditionalDNband as “AdditionalDnBand” voilà j’utiliser cet indicateur pour filtrer les entrée de position. J’ai ajouté aux lignes de code AdditionalUpBand = RetBmoy et AdditionalDnBand = RetHmoy un facteur 2 pour élargir la bande d’entrée en position. Mais je ne suis pas entièrement satisfait de cette solution “manuelle”. J’aimerai que ce facteur soit lié à la volatilité du sous-jacent. Donc j’aurai besoin d’un conseil. Je vous en remercie par avance. 04/29/2024 at 11:26 AM #232025Bonjour, C’est le 2 que tu veux remplacer? Ou bien c’est l’emplacement des bandes sans forcément en changer l’amplitude? Dans le 1er cas, tu peux par exemple tester des ratio d’ATR, ou d’écarts-types, entre celui de bougie en cours et celui d’il y a un nombre de barres lié à ton code (period, slowperiod…). Dans le 2e cas, tu peux créer un centre variable et lui appliquer les bandes de part et d’autre. 1 user thanked author for this post.04/29/2024 at 2:15 PM #23203904/30/2024 at 3:02 PM #232089Par exemple comme ceci, avec création de myATR pourquoi pas sur slowperiod (juste pour l’exemple), et ratio de 2 myATR espacés (encore sur slowperiod, mais pas obligé), en gardant le 2 mais qui peut devenir 3 ou 4 ou ce qu’on veut dans la variable coeff: 12345myATR=AverageTrueRange[slowperiod](close)coeff=2facteur=coeff*myATR/myATR[slowperiod]AdditionalUpBand = RetBmoy*facteurAdditionalDNBand = RETHMoy*facteur1 user thanked author for this post.04/30/2024 at 3:18 PM #23209105/01/2024 at 1:26 PM #232139Une question additionnelle svp : je souhaiterai prendre une position longue si moy3plusHauts > moy3plusHauts précédents (par exemple). J’ai fait : moy3plusHauts > moy3plusHauts[1] mais le résultat escompté n’est pas celui attendu. Puis-je avoir une aide SVP? Merci et bons trades. 05/02/2024 at 1:43 PM #232189Bjr, en supposant que le résultat qui n’a pas été comme attendu a pu être dû à la variable moy3plusHauts qui n’aurait pas changé d’une bougie sur l’autre soit moy3plusHauts=moy3plusHauts[1], alors on peut essayer de capturer à la volée la variation quand elle se produit, et la stocker en mémoire dans moy3plusHautsPrec pour l’utiliser ensuite même si cela ne s’est pas produit en bougie précédente, par exemple ainsi: if moy3plusHauts <> moy3plusHauts[1] then moy3plusHautsPrec=moy3plusHauts[1] endif if moy3plusHauts > moy3plusHautsPrec then … lignes de code utilisées pour l’affichage du signal de prise de position endif 1 user thanked author for this post.05/02/2024 at 7:20 PM #232214
- 
		AuthorPosts
			Find exclusive trading pro-tools on 


 
		 
		 
		