Détection des 3 derniers plus hauts
Forums › ProRealTime forum Français › Support ProBuilder › Détection des 3 derniers plus hauts
- This topic has 25 replies, 4 voices, and was last updated 2 years ago by
finplus.
-
-
06/12/2022 at 3:44 PM #19516606/18/2022 at 3:19 PM #195521
Bonjour,
je reviens sur ma problématique de détection des plus hauts et des plus. Je joins un graphique et le code de l’indicateur.
Alors j’opte pour une autre solution qui serait un croisement de l’écart formé par (GuppyCTMoy – GuppyLTMoy) avec la “MA” qui estMA = average[period](data) avec les conditions suivants lorsque :
– l’écart est positif avec un guppymoy positif et la MA au dessus du GuppyMoy –> ça c’est pour la détection haute formée par l’écart qui croise à la baisse la MA
– l’écart est négatif avec un guppymoy négatif et la MA au dessous du GuppyMoy –> ça c’est pour la détection basse formée par l’écart qui croise à la hausse la MA
et il ne faudrait pas que les 3 derniers croisements de façon à ne pas conserver tous les croisements et rendre le graphe illisible.
Il faudrait que le rendu ressemble au graphe joint où j’ai ajouté manuellement une ligne représentant peu ou prou le croissement.
Merci pour votre aide.
GuppyMoy et Bollinger1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374a = closec1 = ExponentialAverage[3](a)c2 = ExponentialAverage[5](a)c3 = ExponentialAverage[8](a)c4 = ExponentialAverage[10](a)c5 = ExponentialAverage[12](a)c6 = ExponentialAverage[15](a)GuppyCTMoy = (c1 + c2 + c3 + c4 + c5 + c6)/6c7 = ExponentialAverage[30](a)c8 = ExponentialAverage[35](a)c9 = ExponentialAverage[40](a)c10 = ExponentialAverage[45](a)c11 = ExponentialAverage[50](a)c12 = ExponentialAverage[60](a)GuppyLTMoy = (c7 + c8 + c9 + c10 + c11 + c12)/6Ecart = (GuppyCTMoy - GuppyLTMoy)/////////////////////////// Paramètres de calcul de la moyenne du Guppy LT pour filtrer les entrées de position (la moyenne devant être entre le plancher et le plafond)T1 = c7 - C7[1]T2 = c8 - C8[1]T3 = c9 - C9[1]T4 = C10 - C10[1]T5 = c11 - C11[1]T6 = c12 - c12[1]Guppy = (T1 + T2 + T3 + T4 + T5 + T6)/6GuppyMoy = average[50](Guppy)*10if GuppyMoy<GuppyMoy[1] and GuppyMoy[1]>GuppyMoy[2] and GuppyMoy[1]>0 thenRetB5=RetB4RetB4=RetB3RetB3=RetB2RetB2=RetB1RetB1=GuppyMoy[1]RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5endifif GuppyMoy>GuppyMoy[1] and GuppyMoy[1]<GuppyMoy[2] and GuppyMoy[1]<0 thenRetH5=RetH4RetH4=RetH3RetH3=RetH2RetH2=RetH1RetH1=GuppyMoy[1]RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5endifif abs(retBmoy-0) > abs(retHmoy-0) thenlimitUP = retBmoyelsif abs(retBmoy-0) < abs(retHmoy-0) thenLimitUp = -RetHmoyendifif abs(RetHmoy-0) > abs(RetBmoy-0) thenlimitDn = RetHmoyelsif abs(RetHmoy-0) < abs(RetBmoy-0) thenLimitDn = - RetBmoyendifperiod = 20dev = 2.0data = EcartMA = average[period](data)BolUp = MA+STD[period]*devBolDn = MA-STD[period]*devReturn ecart as "ecart", guppymoy as "guppymoy", RetBmoy as "Moyenne 5 derniers retournements baissiers", RetHmoy as "Moyenne 5 derniers retournements haussiers", limitUp as "LimitUp", limitDn as "Limit06/23/2022 at 7:21 PM #195978Ecart croisant à la hausse le milieu de la bollinger123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384a = closec1 = ExponentialAverage[3](a)c2 = ExponentialAverage[5](a)c3 = ExponentialAverage[8](a)c4 = ExponentialAverage[10](a)c5 = ExponentialAverage[12](a)c6 = ExponentialAverage[15](a)GuppyCTMoy = (c1 + c2 + c3 + c4 + c5 + c6)/6c7 = ExponentialAverage[30](a)c8 = ExponentialAverage[35](a)c9 = ExponentialAverage[40](a)c10 = ExponentialAverage[45](a)c11 = ExponentialAverage[50](a)c12 = ExponentialAverage[60](a)GuppyLTMoy = (c7 + c8 + c9 + c10 + c11 + c12)/6Ecart = (GuppyCTMoy - GuppyLTMoy)/////////////////////////// Paramètres de calcul de la moyenne du Guppy LT pour filtrer les entrées de position (la moyenne devant être entre le plancher et le plafond)T1 = c7 - C7[1]T2 = c8 - C8[1]T3 = c9 - C9[1]T4 = C10 - C10[1]T5 = c11 - C11[1]T6 = c12 - c12[1]Guppy = (T1 + T2 + T3 + T4 + T5 + T6)/6GuppyMoy = average[50](Guppy)*10if GuppyMoy<GuppyMoy[1] and GuppyMoy[1]>GuppyMoy[2] and GuppyMoy[1]>0 thenRetB5=RetB4RetB4=RetB3RetB3=RetB2RetB2=RetB1RetB1=GuppyMoy[1]RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5endifif GuppyMoy>GuppyMoy[1] and GuppyMoy[1]<GuppyMoy[2] and GuppyMoy[1]<0 thenRetH5=RetH4RetH4=RetH3RetH3=RetH2RetH2=RetH1RetH1=GuppyMoy[1]RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5endifif abs(retBmoy-0) > abs(retHmoy-0) thenlimitUP = retBmoyelsif abs(retBmoy-0) < abs(retHmoy-0) thenLimitUp = -RetHmoyendifif abs(RetHmoy-0) > abs(RetBmoy-0) thenlimitDn = RetHmoyelsif abs(RetHmoy-0) < abs(RetBmoy-0) thenLimitDn = - RetBmoyendifperiod = 20dev = 2.0data = EcartMA = average[period](data)BolUp = MA+STD[period]*devBolDn = MA-STD[period]*devc1 = (Ecart < 0)c2 = (GuppyMoy < GuppyMoy[1])c3 = (MA < MA[1])c4 = (Ecart CROSSES OVER MA)PlafondReturnDown = -(c1 and c2 and c3 and c4)Return ecart as "ecart", guppymoy as "guppymoy", RetBmoy as "Moyenne 5 derniers retournements baissiers", RetHmoy as "Moyenne 5 derniers retournements haussiers", limitUp as "LimitUp", limitDn as "LimitDn", BolUp as "Boll Sup", BolDn as "Boll Inf", MA as "Boll Milieu", PlafondReturnDown as "PladondReturnDown"Bonsoir, j’ai tenté une ligne de code (c1 à c4) pour tenter d’identifier lorsque l’écart est négatif et qu’il croise à la hausse le milieu de la bande de bollinger. J’ai joint le rendu avec le graphique où l’on voit que cela fait une sorte de zigzag (à noter toutefois que ce “zigzag” identifie correctement le croisement). Mais je voudrais en fait un rendu sous la forme d’une ligne (que j’ai tracé en bleu). Si quelqu’un peut corriger mon code en ce sens, un grand merci.
06/28/2022 at 5:59 PM #19633506/28/2022 at 6:36 PM #19633806/28/2022 at 8:31 PM #196346oui ça devrait être cela. Merci. En fait, le croisement est bien identifié et je voudrais qu’il soit matérialisé par une ligne qui me donnerait en fait une sorte de plancher qui pourrait s’apparenter à un excès baissier. Et sur mon graphique, ça fait une sorte de cône ou de figure en V avec la ligne 0 puis le point de croisement et ensuite de nouveau la ligne 0. Merci.
06/30/2022 at 9:09 AM #19644206/30/2022 at 10:41 AM #196454La version du code ci-dessous trace une ligne en couleur “cyan” sur le niveau de la bollinger inférieure lorsque l’événement “PlafondReturnDown” est détecté
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293defparam drawonlastbaronly=Truea = closec1 = ExponentialAverage[3](a)c2 = ExponentialAverage[5](a)c3 = ExponentialAverage[8](a)c4 = ExponentialAverage[10](a)c5 = ExponentialAverage[12](a)c6 = ExponentialAverage[15](a)GuppyCTMoy = (c1 + c2 + c3 + c4 + c5 + c6)/6c7 = ExponentialAverage[30](a)c8 = ExponentialAverage[35](a)c9 = ExponentialAverage[40](a)c10 = ExponentialAverage[45](a)c11 = ExponentialAverage[50](a)c12 = ExponentialAverage[60](a)GuppyLTMoy = (c7 + c8 + c9 + c10 + c11 + c12)/6Ecart = (GuppyCTMoy - GuppyLTMoy)/////////////////////////// Paramètres de calcul de la moyenne du Guppy LT pour filtrer les entrées de position (la moyenne devant être entre le plancher et le plafond)T1 = c7 - C7[1]T2 = c8 - C8[1]T3 = c9 - C9[1]T4 = C10 - C10[1]T5 = c11 - C11[1]T6 = c12 - c12[1]Guppy = (T1 + T2 + T3 + T4 + T5 + T6)/6GuppyMoy = average[50](Guppy)*10if GuppyMoy<GuppyMoy[1] and GuppyMoy[1]>GuppyMoy[2] and GuppyMoy[1]>0 thenRetB5=RetB4RetB4=RetB3RetB3=RetB2RetB2=RetB1RetB1=GuppyMoy[1]RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5endifif GuppyMoy>GuppyMoy[1] and GuppyMoy[1]<GuppyMoy[2] and GuppyMoy[1]<0 thenRetH5=RetH4RetH4=RetH3RetH3=RetH2RetH2=RetH1RetH1=GuppyMoy[1]RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5endifif abs(retBmoy-0) > abs(retHmoy-0) thenlimitUP = retBmoyelsif abs(retBmoy-0) < abs(retHmoy-0) thenLimitUp = -RetHmoyendifif abs(RetHmoy-0) > abs(RetBmoy-0) thenlimitDn = RetHmoyelsif abs(RetHmoy-0) < abs(RetBmoy-0) thenLimitDn = - RetBmoyendifperiod = 20dev = 2.0data = EcartMA = average[period](data)BolUp = MA+STD[period]*devBolDn = MA-STD[period]*devc1 = (Ecart < 0)c2 = (GuppyMoy < GuppyMoy[1])c3 = (MA < MA[1])c4 = (Ecart CROSSES OVER MA)PlafondReturnDown = -(c1 and c2 and c3 and c4)if PlafondReturnDown thenpalier = BolDnendifif IsLastBarUpdate thendrawhline(palier) coloured("cyan")endifReturn ecart as "ecart", guppymoy as "guppymoy", RetBmoy as "Moyenne 5 derniers retournements baissiers", RetHmoy as "Moyenne 5 derniers retournements haussiers", limitUp as "LimitUp", limitDn as "LimitDn", BolUp as "Boll Sup", BolDn as "Boll Inf", MA as "Boll Milieu"//, PlafondReturnDown as "PladondReturnDown"06/30/2022 at 10:49 AM #19645606/30/2022 at 7:22 PM #196493bonsoir,
j’ai reussi a mettre un point mais pas une ligne1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586a = closec1 = ExponentialAverage[3](a)c2 = ExponentialAverage[5](a)c3 = ExponentialAverage[8](a)c4 = ExponentialAverage[10](a)c5 = ExponentialAverage[12](a)c6 = ExponentialAverage[15](a)GuppyCTMoy = (c1 + c2 + c3 + c4 + c5 + c6)/6c7 = ExponentialAverage[30](a)c8 = ExponentialAverage[35](a)c9 = ExponentialAverage[40](a)c10 = ExponentialAverage[45](a)c11 = ExponentialAverage[50](a)c12 = ExponentialAverage[60](a)GuppyLTMoy = (c7 + c8 + c9 + c10 + c11 + c12)/6Ecart = (GuppyCTMoy - GuppyLTMoy)/////////////////////////// Paramètres de calcul de la moyenne du Guppy LT pour filtrer les entrées de position (la moyenne devant être entre le plancher et le plafond)T1 = c7 - C7[1]T2 = c8 - C8[1]T3 = c9 - C9[1]T4 = C10 - C10[1]T5 = c11 - C11[1]T6 = c12 - c12[1]Guppy = (T1 + T2 + T3 + T4 + T5 + T6)/6GuppyMoy = average[50](Guppy)*10if GuppyMoy<GuppyMoy[1] and GuppyMoy[1]>GuppyMoy[2] and GuppyMoy[1]>0 thenRetB5=RetB4RetB4=RetB3RetB3=RetB2RetB2=RetB1RetB1=GuppyMoy[1]RetBmoy=(RetB1+RetB2+RetB3+RetB4+RetB5)/5endifif GuppyMoy>GuppyMoy[1] and GuppyMoy[1]<GuppyMoy[2] and GuppyMoy[1]<0 thenRetH5=RetH4RetH4=RetH3RetH3=RetH2RetH2=RetH1RetH1=GuppyMoy[1]RetHmoy=(RetH1+RetH2+RetH3+RetH4+RetH5)/5endifif abs(retBmoy-0) > abs(retHmoy-0) thenlimitUP = retBmoyelsif abs(retBmoy-0) < abs(retHmoy-0) thenLimitUp = -RetHmoyendifif abs(RetHmoy-0) > abs(RetBmoy-0) thenlimitDn = RetHmoyelsif abs(RetHmoy-0) < abs(RetBmoy-0) thenLimitDn = - RetBmoyendifperiod = 20dev = 2.0data = EcartMA = average[period](data)BolUp = MA+STD[period]*devBolDn = MA-STD[period]*devc1 = (Ecart < 0)c2 = (GuppyMoy < GuppyMoy[1])c3 = (MA < MA[1])c4 = (Ecart CROSSES OVER MA)PlafondReturnDown = -(c1 and c2 and c3 and c4)if PlafondReturnDown thenDRAWPOINT(barindex, MA, 2)coloured(0,51,153)endifReturn ecart as "ecart"coloured(204,0,51)style(histogram), guppymoy as "guppymoy", RetBmoy as "Moyenne 5 derniers retournements baissiers", RetHmoy as "Moyenne 5 derniers retournements haussiers", limitUp as "LimitUp", limitDn as "LimitDn", BolUp as "Boll Sup", BolDn as "Boll Inf", MA as "Boll Milieu"07/01/2022 at 9:52 AM #196512 -
AuthorPosts
Find exclusive trading pro-tools on