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 7 months ago by finplus.
-
-
04/28/2024 at 3:04 PM #232005
Bonjour,
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