Supertrend, intégrer une variation de la volatilité liée à l’ATR
Forums › ProRealTime forum Français › Support ProBuilder › Supertrend, intégrer une variation de la volatilité liée à l’ATR
- This topic has 22 replies, 2 voices, and was last updated 5 years ago by Nicolas.
Tagged: supertrend
-
-
02/07/2019 at 11:54 AM #90711
Bonjour,
J’ai récupéré un code du Supertrend sur ce site, je souhaiterais le modifier en intégrant une variation de la volatilité liée à l’ATR.
En effet, quand par exemple le ST est cassé à la baisse, au moment de la cassure la valeur de l’ATR est prise en compte, ainsi que la valeur du prix moyen (High/Low)/2, ensuite quand aucun prix moyen plus bas n’est réalisé par les bougies suivantes le ST ne varie pas.
Je souhaiterais que dans ces périodes ou le prix moyen ne marque pas de valeur plus basse (dans le cas d’un ST cassé à la baisse) le ST garde la valeur du prix moyen référence (bougies notées par un trait sur mon graphe) mais que la différence entre la valeur de l’ATR au moment de la cassure (bougies notées par un trait sur mon graphe) et l’ATR actuel de la bougie en court soit ajoutée ou retranchée de la valeur du ST.
Dans le cas d’un ST cassé à la baisse un prix moyen à la hausse ne doit pas etre pris en compte dans le calcul, seule une variation de l’ATR doit modifier la valeur du ST.
La dernière valeur de référence à prendre en compte pour le calcul (prix et ATR) étant le denier prix moyen le plus bas (cas du ST cassé à la baisse).
L’inverse sera vrai pour un ST cassé à la hausse.
En espérant avoir été clair, je joins un graphe et le code que je n’arrive pas à modifier.
Merci
Supertrend Modifié1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253//Supertrendmultiplier = 3//Période ATRmoy = AverageTrueRange[14](Close)price = (high+low)/2up = price+(multiplier*moy)dn = price-(multiplier*moy)once trend=1if close>up[1] thentrend=1elsif close<dn[1] thentrend=-1endifif trend<0 and trend[1]>0 thenflag=1elseflag=0endifif trend>0 and trend[1]<0 thenflagh=1elseflagh=0endifif trend>0 and dn<dn[1] thendn=dn[1]endifif trend<0 and up>up[1] thenup=up[1]endifif flag=1 thenup=price+multiplier*moyendifif flagh=1 thendn=price-multiplier*moyendifif trend=1 thenmysupertrend=dnelsemysupertrend=upendifif close> mysupertrend[1] thencolor1=0color2=255color3=0elsif close < mysupertrend[1] thencolor1=255color2=0color3=0endifreturn mysupertrend coloured (color1,color2,color3) as "SuperTrend"02/07/2019 at 1:33 PM #9072302/07/2019 at 1:47 PM #90726Si pour la bougie référence l’ATR était de 15 et qu’actuellement l’ATR est de 20, je souhaite éloigner le ST des cours de 5 points, (ou de 5 à multiplier par le coef à voir par la suite).
Inversement si l’ATR a diminué, je souhaite que le ST se rapproche des cours.
02/07/2019 at 3:16 PM #9074602/07/2019 at 3:21 PM #90747Si pour la bougie référence l’ATR était de 15 et qu’actuellement l’ATR est de 11, je souhaite rapprocher le ST des cours de 4 points, (ou de 4 à multiplier par le coef à voir par la suite).
Quand les cours vont contre le ST, je veux que celui-ci varie en fonction de l’ATR, plus l’ATR est grand plus le ST s’éloigne et plus l’ATR décroit plus le ST se rapproche des cours.
02/07/2019 at 5:32 PM #9076902/08/2019 at 11:56 AM #90839Ok c’est compris, voilà le code en question, sans facteur multiplicateur sur cette différence.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869//Supertrendmultiplier = 3if barindex>14 thenmoy = AverageTrueRange[14](Close)once firstATR = moy+1*pointsizediffatr = moy-firstATR//once diffatr = moyprice = (high+low)/2up = price+(multiplier*moy)+diffATRdn = price-(multiplier*moy)-diffATRonce trend=1if close>up[1] thentrend=1elsif close<dn[1] thentrend=-1endifif trend<0 and trend[1]>0 thenflag=1firstATR=moyelseflag=0endifif trend>0 and trend[1]<0 thenflagh=1firstATR=moyelseflagh=0endifif trend>0 and dn<dn[1] thendn=dn[1]endifif trend<0 and up>up[1] thenup=up[1]endifif flag=1 thenup=price+multiplier*moyendifif flagh=1 thendn=price-multiplier*moyendifif trend=1 thenmysupertrend=dnelsemysupertrend=upendifendifif close> mysupertrend[1] thencolor1=0color2=255color3=0elsif close < mysupertrend[1] thencolor1=255color2=0color3=0endifreturn mysupertrend coloured (color1,color2,color3) as "SuperTrend2",firstATR,moySans facteur, on note une toute petite variation, même en timeframe 1-minute. En trait plein le Supertend modifié, en pointillé la version originale.
1 user thanked author for this post.
02/08/2019 at 1:35 PM #9085402/09/2019 at 1:42 PM #90927Bonjour,
Je reviens avec mon Supertrend, le ST2.
Je voudrais préciser ma demande car le code ne correspond pas exactement à mes attentes.
En noir le premier code ST1 avant modifs, en rouge/vert le second code ST2 avec variation liée à l’ATR.
Dans la partie droite du graphe quand les prix sont sous le ST1 et ST2 en rouge pour exemple :
La valeur de mon ST2 doit être identique à celle du ST1 à chaque nouveau MidPrice plus bas, on réactualise ST1 = ST2.
Par contre dans les plats de ST1 (pas de MidPrice plus bas) je souhaiterais que mon ST2 se rapproche des prix, de la valeur de l’ATR de référence (le dernier MidPrice le plus bas) – l’ATR Actuel.
Ou que le ST2 s’éloigne des prix en cas d’augmentation de l’ATR par rapport au dernier MidPrice plus bas.
Ce qui revient à utiliser dans les zones de plat le denier MidPrice le plus bas avec l’ATR actuel.
A chaque nouveau MidPrice plus bas le ST1 et le ST2 auront donc la même valeur, mais dans les zones plates le ST1 restera fixe alors que le ST2 évoluera selon la variation de l’ATR depuis le début de la zone plate.
Sur mon graphe, pour les dernières cotations, le ST2 devrait être sous le ST1, car l’ATR a baissé depuis le denier MidPrice.
En espérant avoir été clair,
Merci
02/12/2019 at 3:08 PM #9119402/13/2019 at 10:31 AM #9126902/13/2019 at 11:18 AM #9127102/13/2019 at 11:23 AM #91273ça pourrait ressembler à cette ligne en pointillé non ? Si oui, il restera à coder les croisements avec le prix comme pour la ligne originale du SuperTrend.
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869//Supertrendmultiplier = 3//Période ATRmoy = AverageTrueRange[14](Close)price = (high+low)/2up = price+(multiplier*moy)dn = price-(multiplier*moy)once trend=1if close>up[1] thentrend=1elsif close<dn[1] thentrend=-1endifif trend<0 and trend[1]>0 thenflag=1elseflag=0endifif trend>0 and trend[1]<0 thenflagh=1elseflagh=0endifif trend>0 and dn<dn[1] thendn=dn[1]endifif trend<0 and up>up[1] thenup=up[1]endifif flag=1 thenup=price+multiplier*moyendifif flagh=1 thendn=price-multiplier*moyendifif trend=1 thenist=dnelseist=upendifif close> ist[1] thencolor1=0color2=255color3=0elsif close < ist[1] thencolor1=255color2=0color3=0endif//final cuttop = ist=ist[1] and ist[1]<ist[2]bottom = ist=ist[1] and ist[1]>ist[2]if top or bottom thenlastprice=priceendifif ist=ist[1] and close<ist[1] theniline=lastprice+(multiplier*moy)//+(lastatr-moy)elsif ist=ist[1] and close>ist[1] theniline=lastprice-(multiplier*moy)elseiline=istendifreturn iline coloured (color1,color2,color3) style(dottedline,2), ist coloured (color1,color2,color3) as "SuperTrend"1 user thanked author for this post.
02/13/2019 at 1:55 PM #9128402/13/2019 at 2:54 PM #91292Ok donc je pense que cette nouvelle version du code devrait faire l’affaire :
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475//Supertrendmultiplier = 3//Période ATRmoy = AverageTrueRange[14](Close)price = (high+low)/2up = price+(multiplier*moy)dn = price-(multiplier*moy)once trend=1//if close>up[1] then//trend=1//elsif close<dn[1] then//trend=-1//endifif close>iline[1] thentrend=1elsif close<iline[1] thentrend=-1endifif trend<0 and trend[1]>0 thenflag=1elseflag=0endifif trend>0 and trend[1]<0 thenflagh=1elseflagh=0endifif trend>0 and dn<dn[1] thendn=dn[1]endifif trend<0 and up>up[1] thenup=up[1]endifif flag=1 thenup=price+multiplier*moyendifif flagh=1 thendn=price-multiplier*moyendifif trend=1 thenist=dnelseist=upendifif close> ist[1] thencolor1=0color2=255color3=0elsif close < ist[1] thencolor1=255color2=0color3=0endif//final cuttop = ist=ist[1] and ist[1]<ist[2]bottom = ist=ist[1] and ist[1]>ist[2]if top or bottom thenlastprice=priceendifif ist=ist[1] and close<ist[1] theniline=lastprice+(multiplier*moy)//+(lastatr-moy)elsif ist=ist[1] and close>ist[1] theniline=lastprice-(multiplier*moy)elseiline=istendifreturn iline coloured (color1,color2,color3) style(dottedline,2)//, ist coloured (color1,color2,color3) as "SuperTrend" -
AuthorPosts
Find exclusive trading pro-tools on