Comment tracer un rectangle jusqu’à comblement d’un gap

Viewing 15 posts - 1 through 15 (of 43 total)
  • Author
    Posts
  • #197258 quote
    sharteel
    Participant
    Junior

    bonjour,

    Le code gentiment proposé produit exactement ce que je cherchais pour trouver les gaps 🙂

    IsLastBarUpdate

    Auriez-vous une solution pour stopper les rectangles quand le prix vient combler les gaps comme l image ci-dessous ?

    (L’exemple de mon image pointe un gap de fin de journée et de début mais très souvent il y a plusieurs bougies avant le comblement du gap)

    merci de votre aide.

    T.D

    prt_gap_comble.png prt_gap_comble.png
    #197288 quote
    druby
    Participant
    New

    bj
    Ces lacunes ont été une épine dans mon pied dans quelque chose sur lequel j’ai travaillé.

    Je pense que c’est ironique que je tombe sur votre message.

    Ce que vous demandez semble simple, mais techniquement, je pense que c’est un peu un défi.

    En fait, je ne sais pas comment le faire pour le moment, mais peut-être que quelqu’un d’autre interviendra et le résoudra.

     

    Cependant, je suis tombé dessus lors du débogage de mon problème de code.

    Tout ce qu’il fait est de tracer une ligne de caractères en bas du panneau de carte, et lorsqu’un espace apparaît dans les bougies, il imite l’espace.

    Cela m’a été utile pour donner une aide visuelle claire.

     

    drawtext("x",barindex,10)anchor(bottomLeft,index,yShift)
    // alt    "-" , "_"  , "." 
    
    return
    #197289 quote
    druby
    Participant
    New

    [attachment file=”197290″]

    Capture-1.png Capture-1.png
    #197372 quote
    sharteel
    Participant
    Junior

    Bonjour,

    Je pense qu’il faut utiliser un genre de tableau qui stocke des références et quand le prix vient toucher une référence, cela permettrait  de trouver une limite pour dessiner le rectangle pour les coordonnées y.

    ++

    #197385 quote
    sharteel
    Participant
    Junior
    defparam drawonlastbaronly=true
     
    X = 1000
     
    if islastbarupdate then
     
     for i = 1 to x do
      if open[i]<low[i+1] then
    myBar=barindex[i]
       drawrectangle(barindex[i+1],close[i+1],barindex,open[i]) coloured(255,0,0,50) bordercolor(255,0,0)
      endif
     next
     
    endif
     
    return myBar

    si je tente de voir le numero de la barre ou la condition se deroule, le barindex reste a zero :/

    #197386 quote
    sharteel
    Participant
    Junior

    en fait je pense que le bon départ serait de stocker toutes les valeurs sur les 1000 dernières barres dans un tableau pour récupèrer l index barre ou le prix comble le gap et ensuite de tracer le rectangle jusqu a la barre qui comble.

     

    pas facile :/

    #197405 quote
    sharteel
    Participant
    Junior

    je progresse,

     

    je parviens a afficher le numéro de la barre ou il ya le gap, la valeur du prix pour le gap et la “hauteur” du gap.

    il faut que je trouve un moyen de connaitre la barindex de la bougie qui comble le gap maintenant :/ ( la grande bougie bleue qui comble le gap 813 )

    prt_gap_comble_2.png prt_gap_comble_2.png
    #197421 quote
    druby
    Participant
    New

    bj…

    Réussi à trouver un moyen de dessiner dans tous les vides, ne fonctionne pour le moment que sur un laps de temps d’une minute. Quels délais utilisez-vous, je ne sais pas ce que vous faites, cela vous sera-t-il utile. Voir l’image.

    D’où voulez-vous tirer, ouvrir – fermer, haut – bas,entre avant et après, etc.

    [attachment file=”197422″]

    Sharteel-1.png Sharteel-1.png
    #197426 quote
    sharteel
    Participant
    Junior

    super !

    comment vous avez fait ?

     

    dans mon cas, je n’ai pas forcement de trou de cotation mais peut être je peux utiliser la même fonction?

     

    ++

    #197444 quote
    druby
    Participant
    New

    bj…

    Ceci est la dernière version.

    Limité à un délai maximum de 12 heures. Apparaît également de trouver l’écart du marché fermé. Remarque non testée.

    Il trouve les écarts en calculant la période de temps, en secondes, jusqu’à la barre suivante.

    Sur la barre suivante, il vérifie avec le temps de barre actuel en secondes. Si pareil, alors pas d’écart. Si elle est différente, la barre précédente (bar-1) doit être la dernière bougie avant l’écart. La boîte dessinée est comprise entre (bar-1 ) et bar (barre actuelle).

    De plus, il garde une trace du «dernier temps de barre» car le calcul ne peut pas être effectué avant la fin de l’écart qui est la barre actuelle.

    Le diagramme ci-dessous représente essentiellement ce que je fais. Temps caché en secondes, calculez le temps de la barre suivante, vérifiez si c’est à ce moment-là, sinon écart !

    gTF = getTimeframe  // get the time frame is seconds
    
    Tcurrent = (openday * 24 *60 *60) + (openhour * 60 *60) + (openminute * 60) + opensecond    // current time seconds
    Tnext = Tlast + gtf    // add TF seconds to  last
    
    
    if Tcurrent = Tnext then    // no gap
    Tlast = Tcurrent     // store new last
    
    else // gap
    
    if  barindex > 2 and gTF < 43200 +1 and  currentMonth[1] = currentMonth[2]  and (currentdayofweek[2] < 6) then
    drawrectangle(barindex[1],high[1],barindex,low)coloured(255,144,143,75)bordercolor(255,144,143,150)
    endif
    Tlast = Tcurrent     // store new last
    endif
    
    drawtext("x",barindex,10)anchor(bottomLeft,index,yShift)
    
    return
    
    // 1. get timeframe period in seconds
    // 3. get current open day,hour,minute,seconds  in seconds
    // 4. calculate what the next period is seconds would be
    // 7. if current and next value are equal then no gap detected
    // 8. update last with current for next bar pass
    // 10. else if different the there is a gap
    // 12. if conditions true the draw
    //     1) bar > 2
    //     2) Timeframe is 12hrs or less
    //     3) no change in month between previous 
    //     4) not a sunday previous by 2
    // 14 end if block
    // 15 update last with current for next bar pass
    // 18 draw 'x' gap bar
    // return
    z-sharteel-2.png z-sharteel-2.png
    #197452 quote
    sharteel
    Participant
    Junior

    bonjour,

    oui c’est très malin !

    je vais voir comment aussi utiliser le temps car dans le cas d un comblement de gap, il peut se dérouler plusieurs bougies, il n’y aura donc pas de trou de cotation SAUF si je décale l’abscisse avec comme origine le low du couple de bougies formant le gap, dans le cas d’un gap baissier, ou le high pour un gap haussier. a ce moment, j’ai des trous de cotation.

    pas evident.

    ++

    #197453 quote
    druby
    Participant
    New

    L’utilisation d’une valeur ‘Barindex’ vous permet uniquement de dessiner en référence aux ‘Bars’.
    Pour dessiner dans l’espace, vous utilisez ‘dateToBarindex’ . C’est parce que la valeur de la barre ne change pas pour un écart. L’écart n’existe pas vraiment, c’est un sous-produit de l’utilisation d’une période de temps fixe pendant laquelle aucun marché ne «tick».

    Pas de “tick”, pas de “Bar”.

    La date/heure dans le code se rapporte à l’écart sur le DAX 1min Allemagne 40(DFB). Changez en un écart sur votre graphique.

     

    drawtext("ecart",datetobarindex(20220714223100),12598)
    drawtext("ecart",datetobarindex(20220714223200),12598)
    drawtext("ecart",datetobarindex(20220714223300),12598)
    drawtext("ecart",datetobarindex(20220714223400),12598)
    
    barre = barindex
    drawtext("#barre#",barindex,12599)
    retu

     

    [attachment file=”197454″]

    z-sharteel-3.png z-sharteel-3.png
    #197478 quote
    sharteel
    Participant
    Junior

    bonjour,

    ok, je comprends ! je vais essayer d’utiliser datetobarindex pour le cas du comblement de gap.

    ++

    #197497 quote
    druby
    Participant
    New

    En fonction de ce que l’on essaie de faire et de sa portée, cela commence à devenir très délicat lors de l’utilisation de la date/heure lorsqu’ils se renouvellent. Principalement parce que aaaammjj peut avoir des longueurs différentes alors que hhmmss a des longueurs fixes.

    Au fur et à mesure des variables, manipuler la « date » et « l’heure » ​​est une forme d’art en soi. Voici juste un échantillon de ce que vous rencontrerez.

    Mes dernières réflexions portent sur l’utilisation du temps écoulé avec des fonctions (Timestamp, Openstamp) mais même moi, j’y suis encore allé. Cela peut contourner le problème aaaammjj, mais peut en créer de nouveaux.

    //  ss = hhmmss MOD 100
    
    //  hhmm00 = hhmmss - ss
    
    //  hhmm = hhmm00/100
    
    //  hhmmss = (hhmm * 100) + ss
    #197527 quote
    sharteel
    Participant
    Junior

    bonsoir,

    il y a un topic intéressant ou Nicolas montre comment stocker des creux ici: https://www.prorealcode.com/topic/stockage-valeur-creux-prix/page/2/

    dans le même principe on peut peut être essayer de stocker les gaps sur les 1000 dernières barres.

    note: il faudrait que je renomme le topic en : comment tracer un rectangle jusqu’à comblement d’un gap.

    ++

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

Comment tracer un rectangle jusqu’à comblement d’un gap


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
sharteel @sharteel Participant
Summary

This topic contains 42 replies,
has 5 voices, and was last updated by jprt
2 years, 3 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 07/14/2022
Status: Active
Attachments: 19 files
Logo Logo
Loading...