MTF Supertrend

Viewing 6 posts - 1 through 6 (of 6 total)
  • Author
    Posts
  • #250789 quote
    pastou1972
    Participant
    New

    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 :

     

    timeframe(monthly)
    s1=supertrend[2.1,10]
    if close crosses over s1 or close >= s1 then
    drawRect = 1
    else
    drawRect = 0
    valSupTrendH = s1[0]
    valCloseH = close[0]
    endif
    
    timeframe(default)
    plainColor = 250
    rge = averagetruerange[10](close)
    if drawRect = 1 then
    DRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)
    endif
    return
    supertrend.jpg supertrend.jpg
    #250826 quote
    Iván González
    Moderator
    Master

    Bonjour,
    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.

    timeframe(monthly,updateonclose)
    s1=supertrend[2.1,10]
    if close crosses over s1 or close >= s1 then
    drawRect = 1
    else
    drawRect = 0
    valSupTrendH = s1[0]
    valCloseH = close[0]
    endif
    
    timeframe(default)
    plainColor = 250
    rge = averagetruerange[10](close)
    if drawRect = 1 then
    DRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)
    endif
    return s1
    
    robertogozzi and pastou1972 thanked this post
    Captura-de-pantalla-2025-09-15-101933.jpg Captura-de-pantalla-2025-09-15-101933.jpg Captura-de-pantalla-2025-09-15-102036.jpg Captura-de-pantalla-2025-09-15-102036.jpg
    #251068 quote
    pastou1972
    Participant
    New

    Muchas Gracias, Ivan.

    Merci pour ton aide. Cela marche nickel.

    #251069 quote
    pastou1972
    Participant
    New

    Je 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.

    #251072 quote
    Iván González
    Moderator
    Master

    Bonjour. Si tu veux que je compte les mois même si close>=S1, alors ce serait ce code.

    timeframe(monthly,updateonclose)
    once drawRect=0
    s1=supertrend[2.1,10]
    if close crosses over s1 or close >= s1 then
       drawRect = 1+drawRect
    else
       valSupTrendH = s1[0]
       valCloseH = close[0]
    endif
    
    timeframe(default)
    plainColor = 250
    rge = averagetruerange[10](close)
    if  drawRect <= 4 and drawRect>0 then
       DRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)
    endif
    return s1
    

    Dans le cas où tu voudrais seulement compter les croisements, alors ce serait cet autre.

    timeframe(monthly,updateonclose)
    once drawRect=0
    s1=supertrend[2.1,10]
    if close crosses over s1 or close >= s1 then
       drawRect = 1+drawRect
    else
       valSupTrendH = s1[0]
       valCloseH = close[0]
    endif
    
    timeframe(default)
    plainColor = 250
    rge = averagetruerange[10](close)
    if  drawRect <= 4 and drawRect>0 then
       DRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 20)
    endif
    return s1
    
    #251078 quote
    pastou1972
    Participant
    New

    Salut 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

    elsif close crosses under s1 or close < s1 then
    drawRect = 0
    endif

    car 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:

    timeframe(monthly,updateonclose)
    once drawRect=0
    s1=supertrend[2.1,10]
    if close crosses over s1 or close >= s1 then
    drawRect = 1+drawRect
    elsif close crosses under s1 or close < s1 then
    drawRect = 0
    endif
    
    timeframe(default)
    
    if drawRect <= 4 and drawRect>0 then
    DRAWRECTANGLE(BarIndex, 10000, BarIndex + 1, 0) COLOURED (25, 25, 198, 100) bordercolor(25, 25, 198,10) FILLCOLOR(25, 25, 198, 50)
    endif
    return s1

    Ce 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.

    supertrend-1.jpg supertrend-1.jpg supertrend2.jpg supertrend2.jpg
Viewing 6 posts - 1 through 6 (of 6 total)
  • You must be logged in to reply to this topic.

MTF Supertrend


Support Plateforme : Graphiques, Données & Courtiers

New Reply
Author
author-avatar
pastou1972 @pastou1972 Participant
Summary

This topic contains 5 replies,
has 2 voices, and was last updated by pastou1972
4 months, 4 weeks ago.

Topic Details
Forum: Support Plateforme : Graphiques, Données & Courtiers
Language: French
Started: 09/13/2025
Status: Active
Attachments: 5 files
Logo Logo
Loading...