DrawOnLastBarOnly avec d’autres timeframes

Viewing 15 posts - 1 through 15 (of 16 total)
  • Author
    Posts
  • #216289 quote
    Lavallette
    Participant
    Average

    Hello,

    J’ai créé ce dummy indicateur afin de monter de manière simple mon problème.

    //
    // MUST be used in 5 minutes timeframe
    //
    //
    DefParam DrawOnLastBarOnly = true
    Length     = 20
    
    timeframe(1 day)
    BasD = average[Length](close)
    VaD = BasD + 2
    
    TimeFrame(5 minutes, DEFAULT)
    Bas = average[Length](close)
    Va = Bas + 2
    
    Offset = 10
    drawtext(BasD ,barindex-offset,0,dialog,bold,20) coloured("ORANGE")
    drawtext(VaD  ,barindex-offset,1,dialog,bold,20) coloured("GREEN")
    //
    drawtext(Bas ,barindex-6*offset,0,dialog,bold,20) coloured("ORANGE")
    drawtext(Va  ,barindex-6*offset,1,dialog,bold,20) coloured("GREEN")
    
    return  // Bas as "Bas", Va as "Va", VaD as "VaD", BasD as "BasD"

    Dans cet exemple, le graphique est en 5 minute. Deux time frames sont utilisés dans l’indicateur 5’ (le défaut) et 1 jour. Comme vous le voyez les deux valeurs en daily ne sont
    pas disponibles. N/D est affiché.

    En revanche si je change timeframe(1 day) en timeframe(720 minutes) cela fonctionne.

    De plus si des variables sont utilisée dans l’instruction return, les appels drawtext ne fonctionne pas ! Seulement les 2 courbes sont affichées (VA et BaS).

    1. Quelqu’un a-t-il une explication ?
      Est-il possible d’utiliser DrawOnLastBarOnly en MTF en mélangeant 5’ et daily?
      Dans ce contexte peut-on mélanger drawtext et return ?

    Merci

    Screenshot-2023-06-15-at-16.34.30.png Screenshot-2023-06-15-at-16.34.30.png Screenshot-2023-06-15-at-16.34.58.png Screenshot-2023-06-15-at-16.34.58.png Screenshot-2023-06-15-at-16.35.14.png Screenshot-2023-06-15-at-16.35.14.png
    #216306 quote
    JC_Bywan
    Moderator
    Master

    Bjr,

    normalement l’échelle se cale sur ce qui provient du return, sauf si la ligne return est vide auquel cas l’échelle est dans la zone autour de 0.

    Comme la coordonnée verticale des drawtext est 0 ou 1, ça correspond au comportement normal de les voir avec une ligne return vide, ce n’est pas que l’échelle verticale se cale sur le drawtext mais sur la zone proche de 0 (drawtext ou pas).

    Et quand la ligne return n’est pas vide mais retourne des valeurs éloignées de 0 (ici zone 50-60) l’échelle verticale se cale sur cette zone là, le drawtext étant alors ici trop bas. On peut par exemple déplacer le drawtext en zone 50-60 pour le mettre en partie visible, ou autre possibilité on peut ajouter zéro à la ligne return (return 0 as “zéro”, etc…) pour changer la quantité verticale affichée en y incluant le zéro si on ne veut pas changer la coordonnée verticale de drawtext .

    Lavallette thanked this post
    #216325 quote
    Lavallette
    Participant
    Average

    Merci pour ce retour. En effet c’est par très malin de ma part.

    Voila une nouvelle version qui montre encore mieux le problème. Pourquoi les valeurs de BasD et VaD (du timeframe Daily) ne sont pas disponibles et ne s’affichent pas en ORANGE?

    Notez que si le deuxième timeframe est 30 minutes cela fonctionne parfaitement!!!

    Quelqu’un aurait-il une explication?

    Screenshot-2023-06-16-at-09.33.36.png Screenshot-2023-06-16-at-09.33.36.png Screenshot-2023-06-16-at-09.39.34.png Screenshot-2023-06-16-at-09.39.34.png
    #216370 quote
    druby
    Participant
    New

    9      BasD = average[Length](close)

    9      BasD = average[Length](close[0])

    Lavallette thanked this post
    #216438 quote
    Nicolas
    Keymaster
    Master

    Tu as besoin de plus d’historique chargée (donc des unités visibles sur le graphique) pour que les calculs du TF daily se fassent correctement, voilà pourquoi tu n’obtiens rien avec si peu de données chargées.

    Lavallette thanked this post
    #216482 quote
    Lavallette
    Participant
    Average

    Merci. En effet mais même avec plus d’historique les drawtext ne fonctionne pas.

    Pourtant les valeurs de retour sont correctes.

    Je joins un autre example qui montre le problème.

    Screenshot-2023-06-19-at-18.47.14.png Screenshot-2023-06-19-at-18.47.14.png
    #216484 quote
    Lavallette
    Participant
    Average

    Voilà ce que cela donne.

    Il faut que je vérifie mais je ne comprends pas pourquoi cela semble mieux fonctionner avec BasD = average[Length](close[0]) !!!

    Screenshot-2023-06-19-at-18.51.45.png Screenshot-2023-06-19-at-18.51.45.png
    #216492 quote
    druby
    Participant
    New

    Bonjour Lavallette

    Je ne sais pas encore pourquoi (close) affiche ‘n/a’ et (close[0] affiche la valeur.

    Cependant, j’ai remarque que la version (close) affiche la valeur sur le prochain ‘tick’ provenant du marche.

    Donc, je suppose que si le marche est ferme ou si le trafic sur le marche est faible, alors pas de ‘tick’, pas de mise a jour.

    En speculant un peu plus profondement, a la reception d’un nouveau sont obligees de recalculer et de mettre a jour.

    Salutations

    Lavallette thanked this post
    #216493 quote
    robertogozzi
    Moderator
    Master

    Cela fonctionne avec la ligne 8 exprimée en MINUTES si elles sont <= 960, et avec les HEURES si elles sont <=16 :

    timeframe(16h)
    Timeframe(960mn)

    vous pouvez  transformer un TF Daily en TF 12h :

    timeframe(12h)
    Lavallette thanked this post
    #216496 quote
    robertogozzi
    Moderator
    Master

    Désolé, 12 heures ne font pas une journée 🙂

    #216506 quote
    Lavallette
    Participant
    Average

    Un grand merci pour vos réponses.

    Après avoir passé des heures sur ces problèmes, je suis arrivé à la conclusion que le MTF dans PRT version du 7 avril 2023 est complètement non fonctionnelle !

    Cela fonctionne pour des indicateurs simples, mais pas lorsqu’ils se compliquent et lorsqu’ils font appel à plusieurs Timeframe (de cinq minutes à weekly).

    Donc”A bon Entendeur” et faites attention lorsque vous utilisez le MTF.

    #216526 quote
    Nicolas
    Keymaster
    Master

    Ici sur le DAX en timeframe 5-minutes, 10k unités, ça fonctionne correctement, on va bien les moyennes mobiles affichées sur le graphique du prix et j’ai ajouté l’indicateur en dessous pour voir le texte (voir image jointe).

    Je remarque en effet un soucis avec IBM avec la valeur N/A uniquement sur les derniers chandeliers, alors que la valeur est bien présente, je vérifie.

    mtf-indicator.png mtf-indicator.png
    #216528 quote
    Nicolas
    Keymaster
    Master

    voici le code utilisé pour référence, je vais me rapprocher du support.

    //
    // MUST be used in 5 minutes timeframe
    //
    //
    DefParam DrawOnLastBarOnly = true
    Length     = 10
    
    timeframe(1 day)
    BasD = average[Length](close)
    VaD = BasD + 2
    
    TimeFrame(5 minutes)
    Bas = average[Length](close)
    Va = Bas + 2
    
    Offset = 10
    drawtext("daily",barindex,1.5,dialog,bold,20)
    drawtext(BasD ,barindex-offset,0,dialog,bold,20) coloured("ORANGE")
    drawtext(VaD  ,barindex-offset,1,dialog,bold,20) coloured("GREEN")
    //
    drawtext("5 minutes",barindex-6*offset,1.5,dialog,bold,20)
    drawtext(Bas ,barindex-6*offset,0,dialog,bold,20) coloured("ORANGE")
    drawtext(Va  ,barindex-6*offset,1,dialog,bold,20) coloured("GREEN")
    
    return   Bas as "Bas", Va as "Va", VaD as "VaD", BasD as "BasD"
    #216533 quote
    Nicolas
    Keymaster
    Master

    Je viens de m’apercevoir que le premier calcul affiche N/A, mais dés que le prix se met à jour le résultat correct s’affiche ensuite. Sur DAX ou IBM le correctement est identique, mais l’un est plus lent que l’autre évidemment. Je confirme donc que le code fonctionne correctement, mais qu’il faut un update du prix en effet.

    #216991 quote
    Lavallette
    Participant
    Average

    Merci pour ces investigations mais je crois tout de même qu’il y a un problème. Je dis cela bien que je n’aime pas mettre la faute sur les autres, dans ce cas PRT.
    A moins naturellement que j’ai loupé un truc! Dans ce cas un ENORME MEA CULPA.

    Voilà un exemple plus détaillé.

    L’indicateur MTF

    //
    // MUST be used in 5 minutes timeframe
    //
    //
    DefParam DrawOnLastBarOnly = true
    Length     = 20
    //*******************************
    timeframe(1 Month)
    trueRangeM = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKCM = average[length](trueRangeM[0])
    //*******************************
    timeframe(1 week)
    trueRangeW = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKCW = average[length](trueRangeW[0])
    //*******************************
    timeframe(1 day)
    trueRangeD = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKCD = average[length](trueRangeD[0])
    //*******************************
    timeframe(4 hours)
    trueRange4H = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKC4H = average[length](trueRange4H[0])
    //*******************************
    timeframe(60 Minutes)
    trueRange1H = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKC1H = average[length](trueRange1H[0])
    //*******************************
    timeframe(30 Minutes)
    trueRange30M = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKC30M = average[length](trueRange30M[0])
    //*******************************
    timeframe(15 Minutes)
    trueRange15M = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKC15M = average[length](trueRange15M[0])
    //*******************************
    TimeFrame(5 minutes, DEFAULT)
    trueRange5M = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKC5M = average[length](trueRange5M[0])
    //*******************************
    // Drawing
    //*******************************
    Offset = 10
    // MONTHLY *******************************
    drawtext(devKCM,barindex-offset,-0.5,dialog,bold,20) coloured("ORANGE")
    // WEEKLY
    drawtext(devKCW,barindex-2*offset,-0.5,dialog,bold,20) coloured("ORANGE")
    // Daily
    drawtext(devKCD,barindex-3*offset,-0.5,dialog,bold,20) coloured("ORANGE")
    // 4H
    drawtext(devKC4H,barindex-4*offset,-0.5,dialog,bold,20) coloured("ORANGE")
    // 1H
    drawtext(devKC1H,barindex-5*offset,-0.5,dialog,bold,20) coloured("ORANGE")
    // 30M
    drawtext(devKC30M,barindex-6*offset,-0.5,dialog,bold,20) coloured("ORANGE")
    // 15M
    drawtext(devKC15M,barindex-7*offset,-0.5,dialog,bold,20) coloured("ORANGE")
    // 5M
    drawtext(devKC5M,barindex-8*offset,-0.5,dialog,bold,20) coloured("ORANGE")
    
    return
    

    L’indicateur simple pour chacun des Timeframes

    DefParam DrawOnLastBarOnly = true
    Length     = 20
    //*******************************
    
    trueRange = MAX(High[0] - Low[0], max(High[0] - close[1], close[1] - Low[0]))
    devKC = average[length](trueRange[0])
    //*******************************
    // Drawing
    //*******************************
    Offset = 10
    drawtext(devKC,barindex-offset,-0.5,dialog,bold,20) coloured("ORANGE")
    
    return
    

    Voilà ce que cela donne sur un écran. Certaines valeurs sur les unités courtes fonctionnent mais il y a des soucis sur les Timeframe plus grand.

    J’adorerai avoir tord mais surtout comprendre.

    Quelqu’un pourrait-il me mettre sur la voie?

    Screenshot.png Screenshot.png
Viewing 15 posts - 1 through 15 (of 16 total)
  • You must be logged in to reply to this topic.

DrawOnLastBarOnly avec d’autres timeframes


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Lavallette @lavallette Participant
Summary

This topic contains 15 replies,
has 5 voices, and was last updated by Lavallette
2 years, 8 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 06/15/2023
Status: Active
Attachments: 10 files
Logo Logo
Loading...