MTF Supertrend
Forums › ProRealTime forum Français › Support plateforme ProRealTime › MTF Supertrend
- This topic has 5 replies, 2 voices, and was last updated 1 month ago by
pastou1972.
-
-
09/13/2025 at 2:20 PM #250789
Bonjour à la communauté,
Mon code qui utilise le supertrend en Monthly n’affiche pas toujours le resultat que je recherche en journalier.
Pouvez-vous m’aider à comprendre si mon (tout petit) code a un bug ou si c’est prorealtime qui ne me permet pas de faire ce que je recherche?
Merci d’avance.
Voici le code :
MTF Supertrend1234567891011121314151617timeframe(monthly)s1=supertrend[2.1,10]if close crosses over s1 or close >= s1 thendrawRect = 1elsedrawRect = 0valSupTrendH = s1[0]valCloseH = close[0]endiftimeframe(default)plainColor = 250rge = averagetruerange[10](close)if drawRect = 1 thenDRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)endifreturn09/15/2025 at 9:24 AM #250826Bonjour,
Je vois que ton code est correct.
Sur la capture d’écran, tu peux voir comment, dans le graphique journalier, le supertrend se met à jour à chaque bougie.
C’est parce que tu n’as pas indiqué que l’indicateur mensuel ne doit se mettre à jour qu’à la clôture de la bougie (mois).
Voici le code avec la première ligne forçant la mise à jour de l’indicateur uniquement à la clôture de la bougie mensuelle.1234567891011121314151617timeframe(monthly,updateonclose)s1=supertrend[2.1,10]if close crosses over s1 or close >= s1 thendrawRect = 1elsedrawRect = 0valSupTrendH = s1[0]valCloseH = close[0]endiftimeframe(default)plainColor = 250rge = averagetruerange[10](close)if drawRect = 1 thenDRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)endifreturn s12 users thanked author for this post.
09/17/2025 at 8:56 PM #251068Muchas Gracias, Ivan.
Merci pour ton aide. Cela marche nickel.
09/17/2025 at 9:24 PM #251069Je sollicite encore ton aide, Ivan 🙂
Je voudrais colorier que les jours des 4 premiers mois où le prix est supérieur au supertrend.
Si j’utilise des close, close [1], etc., prorealtime va de droite à gauche.Est-ce que je dois donc passer par des tableaux et des boucles?
Si oui, vous avez des exemples?Merci d’avance pour ton aide.
09/18/2025 at 6:50 AM #251072Bonjour. Si tu veux que je compte les mois même si close>=S1, alors ce serait ce code.
1234567891011121314151617timeframe(monthly,updateonclose)once drawRect=0s1=supertrend[2.1,10]if close crosses over s1 or close >= s1 thendrawRect = 1+drawRectelsevalSupTrendH = s1[0]valCloseH = close[0]endiftimeframe(default)plainColor = 250rge = averagetruerange[10](close)if drawRect <= 4 and drawRect>0 thenDRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)endifreturn s1Dans le cas où tu voudrais seulement compter les croisements, alors ce serait cet autre.
1234567891011121314151617timeframe(monthly,updateonclose)once drawRect=0s1=supertrend[2.1,10]if close crosses over s1 or close >= s1 thendrawRect = 1+drawRectelsevalSupTrendH = s1[0]valCloseH = close[0]endiftimeframe(default)plainColor = 250rge = averagetruerange[10](close)if drawRect <= 4 and drawRect>0 thenDRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)endifreturn s109/18/2025 at 8:27 AM #251078Salut Ivan,
Merci pour ton retour.
Il me semble que les deux codes sont strictement identiques. Donc je ne sais pas tester celui qui n’est pas là :).
Ce n’est pas grave, j’ai simplifié mon code et j’ai presque réussi à faire ce que je cherche en rajoutant la condition
123elsif close crosses under s1 or close < s1 thendrawRect = 0endifcar il me semble que le code ne prends en compte que la première occurrence du dépassement du supertrend mensuel.
Voici le code simplifié complet:
123456789101112131415timeframe(monthly,updateonclose)once drawRect=0s1=supertrend[2.1,10]if close crosses over s1 or close >= s1 thendrawRect = 1+drawRectelsif close crosses under s1 or close < s1 thendrawRect = 0endiftimeframe(default)if drawRect <= 4 and drawRect>0 thenDRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 50)endifreturn s1Ce code est presque correct: le seul souci est que le coloriage se fait un mois trop tard sur le journalier par rapport au mensuel.
J’ajoute ici 2 captures d’écran pour le montrer. Je pense que cela est dû à la différence entre la clôture mensuelle par rapport à la clôture journalière.Merci d’avance pour ton aide à solutionner ce dernier petit souci.
-
AuthorPosts
