Aide pour tracer un rectangle. Pas si simple !

Viewing 11 posts - 1 through 11 (of 11 total)
  • Author
    Posts
  • #153437 quote
    Guwap972
    Participant
    New

    Bonjour à tous,

    J’ai besoin d’aide svp. Cela fait quelques jours que je cherche un bout de code pour créer un indicateur qui tracerait simplement un rectangle mais :

    • je souhaiterais que ce rectangle soit tracé de 2h du matin à 22h30 : ça j’y arrive à peut près sur la base d’un code trouvé sur prorealcode
    • (c’est ici que ça se complique) il faudrait que les hauts et bas de ce rectangle correspondent au plus haut et plus bas du cours constatés entre 2h et 9h45 : j’utilise principalement l’UT 15min
    • (et c’est ici que je n’y arrive pas du tout) il faudrait que ce rectangle qui s’étendrait donc jusqu’à 22h30 se trace à partir de 9h45

    J’ai tenté de me débrouiller avec le code de l’exemple n°2 ici : https://www.prorealcode.com/documentation/drawrectangle/

    En remerciant par avance l’âme charitable qui trouverait une solution à ma requête !

    #153448 quote
    Guwap972
    Participant
    New

    Je me rends compte que je n’ai pas expliqué mon blocage : malgré toutes mes tentatives, tant qu’il n’est pas effectivement 22h30, le rectangle n’apparait pas. Le meilleurs résultat que j’ai pu obtenir, c’est un rectangle tracé entre 2h et 9h30 mais qui ne s’étend pas jusqu’à 22h30. A force de test, j’ai aussi eu un phénomène étrange car “un rectangle intermédiaire” se trace entre 22h30 et 2h et je ne comprends vraiment pas pourquoi. J’ajoute le code également composé à partir de code de prc et de doctrading.

    debut = 021500
    fin = 094500
    fin2 = 223000
    
    IF time = debut THEN
    haut = 0
    bas = 0
    barredebut = barindex
    ENDIF
    
    IF time = fin2 THEN
    barrefin = barindex
    ENDIF
    
    IF time >= debut AND time <= fin THEN
    IF high > haut THEN
    haut = high
    ENDIF
    IF low < bas OR time = debut THEN
    bas = low
    ENDIF
    ENDIF
    
    IF time >= fin2 THEN
    DRAWRECTANGLE(barredebut,haut,barrefin,bas)
    ENDIF
    
    RETURN
    #153454 quote
    Daniele Maddaluno
    Participant
    Master

    J’espère bien comprendre la question:
    – je collectionne le plus haut et le plus bas entre 2h00 et 9h45
    – je dessine un rectangle entre 9h45 et 22h45 avec ces niveaux

    // Settings:
    startCollectTime = 20000 // 2:00
    endCollectTime = 94500 // 9:45
    endDrawTime = 224500 //22:45
    
    isCollectInterval = opentime >= startCollectTime and opentime < endCollectTime
    isDrawInteval = opentime >= endCollectTime and opentime < endDrawTime
    
    //return isCollectInterval as "isCollectInterval", -isDrawInteval as "isDrawInteval"
    
    // Collect new highs and lows
    if isCollectInterval and not isCollectInterval[1] then
       HLev  = 0
       LLev  = +1073741824 // 2^30 --> just a big number
    endif
    
    if isCollectInterval[1] then
       LLev = min(LLev, Low[1])
       HLev = max(HLev, High[1])
    endif
    
    // Draw vertical segments
    if isDrawInteval <> isDrawInteval[1] then
       idx = not isDrawInteval
       DRAWSEGMENT(barindex[idx],LLev,barindex[idx],HLev) COLOURED(0,0,0,255)
    endif
    
    // hide lines where unuseful
    if isDrawInteval and isDrawInteval[1] then
       trasparency = 255
    else
       trasparency = 0
    endif
    
    return HLev coloured(0,0,0,trasparency) as "HLev", LLev coloured(0,0,0,trasparency) as "LLev"

    J’ai créé un rectangle en combinant des lignes, de la transparence et des segments verticaux. Ce n’est pas la seule façon de faire cela.
    Faites le moi savoir.

    Nicolas thanked this post
    #153463 quote
    Guwap972
    Participant
    New

    merci beaucoup, je testerais cela lundi et vous ferais savoir ce que ça donne. Bon weekend !

    #153475 quote
    Daniele Maddaluno
    Participant
    Master

    D’accord,
    je vous écris juste quelques commentaires:
    – lors de l’ouverture de “endCollectTime” la ligne verticale gauche du rectangle “|” sera dessinée
    – dans la barre suivante, vous verrez quelque chose comme “[”
    – barre par barre le rectangle sera dessiné sans la ligne verticale droit (quelque chose comme ça, sans la ligne verticale indiqué “▭ ☚”)
    – le rectangle ne sera complètement dessiné que lorsque le temps “endDrawTime” sera cliqué, à ce moment, vous le verrez dessiné comme ceci: “▭”

    Bon week-end à toi aussi!

    Nicolas and Guwap972 thanked this post
    #153868 quote
    Guwap972
    Participant
    New

    Je mets le point final à ce topic. Après quelques recherches complémentaires, j’ai fini par comprendre que ce que je cherchais à faire était tout simplement impossible. A priori, il n’est pas possible de dessiner “dans le futur” et donc il n’est pas possible de dessiner mon rectangle en automatique car au moment du dessin (tel que je le souhaitais en tout cas – à partir de 9h45 donc), la bougie de 22h30 n’existant pas encore, on ne peut pas définir ce point comme cible. J’ai fini par me satisfaire d’un rectangle dessiné au fil de la journée et réactualisé à chaque nouvelle bougie + “DEFPARAM DRAWONLASTBARONLY = true” en paramètre pour ne pas avoir xx rectangles dessinés. Merci une nouvelle fois à Daniele d’avoir pris le temps de me répondre et je partage à toutes fins utiles le petit bout de code (la seule faille constatée pour l’anecdote : il a fallu que comme par hasard lundi, il n’y ait pas de bougie à 2h du matin ! et donc pas de dessin…quand ça veut pas, ça veut pas ! mon broker = IG).

    DEFPARAM DRAWONLASTBARONLY = true
    debut = 021500
    fin = 094500
    fin2 = 224500
    
    IF time = debut THEN
    haut = 0
    bas = 0
    barredebut = barindex
    ENDIF
    IF time > debut AND time <= fin2 then
    barrefin = barindex
    ENDIF
    
    IF time >= debut AND time <= fin THEN
    IF high > haut THEN
    haut = high
    ENDIF
    IF low < bas OR time = debut THEN
    bas = low
    ENDIF
    ENDIF
    
    IF time >= fin THEN
    DRAWRECTANGLE(barredebut,haut,barrefin,bas)
    ENDIF
    
    RETURN
    #153870 quote
    JC_Bywan
    Moderator
    Master

    Malgré le point final mis, si ça peut aider, en théorie d’ici très peu de temps tu auras la v11 avec IG en cours de déploiement pays après pays, et avec la v11 tu pourras dessiner dans les barres à droite du prix, soit avec une syntaxe simple de type barindex+N (N entier), soit à l’aide de l’instruction datetobarindex() qui permet de convertir des dates et horaires en barindex

    Guwap972 thanked this post
    #153875 quote
    Guwap972
    Participant
    New

    ça c’est top, merci pour l’info. Je garde un oeil dessus du coup, IG ne m’a pas encore informé concernant le passage vers la v11.

    #153876 quote
    JC_Bywan
    Moderator
    Master

    Je ne pense pas qu’ils t’informeront, un matin très (très!) proche, tu l’auras pour le compte réel sans être prévenu… Normalement, tu l’as déjà sur le compte démo si tu veux l’essayer.

    #253930 quote
    Philippe
    Participant
    New

    Bonjour,

    Est-ce qu’au final vous y êtes arrivé ?

    J’ai le même problème et j’avoue être complètement perdu : J’ai la bonne heure de fermeture du rectangle mais par contre il ouvre à la bonne heure la veille !!

    Merci pour votre possible aide.

    Bien Cordialement,

    #253931 quote
    Guwap972
    Participant
    New

    Bonjour, absolument! En revanche, je n’utilise plus prt (j’ai développé mon propre système en passant par l’api d’ig) mais j’avais tout de meme conservé un export de l’indicateur, je tente de retrouver cela ce soir après le boulot (ne pas hésiter à me relancer si pas de nouvelles). En attendant et “de mémoire”, je crois que je m’étais débrouillé en comptant le nombre de bougies que représentait la periode que j’observais et que j’avais finalement abouti sur un barindex+n (quelque chose comme 80…c’est plusieurs années en arrière désolé 😅). Je regarde ce soir.

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

Aide pour tracer un rectangle. Pas si simple !


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Guwap972 @guwap972 Participant
Summary

This topic contains 10 replies,
has 4 voices, and was last updated by Guwap972
2 months, 1 week ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 12/11/2020
Status: Active
Attachments: No files
Logo Logo
Loading...