Tracé quotidien 3 lignes horizontales : 17h30 / 8h /9h

Viewing 15 posts - 1 through 15 (of 17 total)
  • Author
    Posts
  • #85625 quote
    deleted_account
    Member
    New

    Bonjour,

    Vu mon niveau de programmation sur PRT, je cherchais un indicateur déjà prêt , qui affiche chaque jour, trois lignes horizontales sur le DAX :

    Première ligne, le niveau de la clôture de la veille 17h30

    Deuxième lignes, le niveau de l’ouverture de l’Open, 8h00

    Troisième lignes, le niveau de l’ouverture de l’Open Cash, 9h00

    Comme pour le pivot, la possibilité d’afficher les jours précédents, mais donc afficher uniquement ses trois niveaux  (Par exemple de 8h (pour les 2 premiers) à -17h30)

    J’ai essayé de chercher à droite à gauche, je ne trouve rien. Pourtant ses trois niveaux étant importants, je suis curieux de ne rien trouver, ou bien y a t il une solution déjà intégré dans la plateforme?

    J’ai tenté de commencer un code… mais étant totalement nul, j’ai arrêté les dégâts!

    J’espère que mon message est clair, si besoin je pourrais poster un exemple.

    Merci beaucoup de votre aide / conseil .

     

    Bonne journée, bon weekend à vous

    #85752 quote
    Nicolas
    Keymaster
    Master

    A voir avec ce petit bout d’indicateur :

    // --- settings
    DaysBefore = 3
    // --- end of settings
    
    idate=date
    //plot Open/close
    if today-idate<=DaysBefore then
    if time=173000 then
    drawhline(close) coloured(100,100,69)
    endif
    if time=080000 then
    drawhline(close) coloured(200,50,69)
    endif
    if time=090000 then
    drawhline(close) coloured(150,50,32)
    endif
    endif
    
    
    return

    La variable “DaysBefore” étant la quantité de journées à afficher.

    #86987 quote
    deleted_account
    Member
    New

    Merci.

    J’ai essayé différentes manipulations, ce sont toujours des lignes droites . J’ai essayé de chercher des segment layouts

    Je vais essayer de trouver un code comme le pivot qui change chaque jour , ça devrait m’aider.

    #87026 quote
    stefou102
    Participant
    Veteran

     

    Hello, Sur base du code de Nicolas, je l’ai mis un peu à ma sauce pour ne garder que les lignes du jour avant et du jour même. Je l’utilise sur l’UT 2min, heure à adapter si nécessaire pour d’autre UT. 9h02 est l’heure officiel d’ouverture du marché cash. S’affiche également un petit texte pour s’y retrouver durant la journée

    idate=date
    //plot Open/close
    if today-idate<=1 then
    if time=173000 then
    fermcash=close
    Fermday=day
    Fermmonth=month
    //drawhline(close) coloured(100,100,69)
    endif
    if time=080200 then
    OuvFut=Open
    Ouvday=day
    Ouvmonth=month
    //drawhline(close) coloured(200,50,69)
    endif
    if time=090200 then
    Ouvcash=Open
    Ouvday=day
    Ouvmonth=month
    
    //drawhline(close) coloured(150,50,32)
    endif
    endif
     
    If time=currenttime-10000 Then
    drawtext("Ferm Cash #Fermday##Fermmonth#",barindex,fermcash+2,SansSerif,standard,10)
    
    drawtext("Ouv Fut #Ouvday##Ouvmonth#",barindex,OuvFut+2,SansSerif,standard,10)
    
    drawtext("Ouv Cash #Ouvday##Ouvmonth#",barindex,Ouvcash+2,SansSerif,standard,10)
    
    Endif
    
    //return
    
    return OuvFut coloured(150,50,32) STYLE(dottedline,2), OuvCash coloured(100,100,69) STYLE(dottedline,2), FermCash coloured(200,50,69) STYLE(dottedline,2)
    Nicolas and thanked this post
    #87484 quote
    deleted_account
    Member
    New

    Rho lala

    Merci beaucoup! J’avais essayé des trucs mais vu mon niveau 0 … c’était une vraie cata!

    Encore merci Nicolas et Stefou

    #116529 quote
    jeanguy
    Participant
    Senior

    Bonjour,

    Je continue ce post pour un indicateur de même style (Je pense que c’est plus pertinent que d’ouvrir un autre sujet).

    Sur du UT M5 je cherche à tracer le plus haut et le plus bas des X précédentes bougies.

    Ceci sur des périodes définis (08h00-10h00 puis 10h00-14h00…). J’aimerai que les segments restent affichés malgré le breakout.

    Cf ci dessous (code qui ne fonctionne pas + photo)

    //Réglages
    Périod1 = time >= 080000 and time < 103000
    Périod2 = time >= 103000 and time < 120000
    
    if Périod1 then
    drawsegment(080000,highest[13],103000,highest[13]) coloured(0,0,0)
    drawsegment(080000,lowest[13],103000,lowest[13]) coloured(0,0,0)
    endif
    
    if Périod2 then
    drawsegment(103000,highest[6],120000,highest[6]) coloured(0,0,0)
    drawsegment(103000,lowest[6],120000,lowest[6]) coloured(0,0,0)
    endif
     
    return

    J’ai essayé en insérant la partie du code qui permet de faire le “reset” pour les segments, lignes INTRADAY mais cela ne marche pas.

    D’autres sujet parle de cela mais ce n’est pas exactement ce dont j’ai besoin (désolé)

    Je cherche à coder un signal concrétisé par un breakout de ligne horizontale

    DRAWLINE +Ht/+Bas entre 2 horaires + Heure précise pour J & J+1

    Je vous remercie de vos réponses !

    EURAUD-5-minutes.png EURAUD-5-minutes.png
    #116533 quote
    JC_Bywan
    Moderator
    Master

    Bonsoir, à la lecture du code trois remarques:

    – les abscisses dans drawsegment doivent être des numéros de barre (barindex ou barindex[13] ou barindex[n] en définissant n ailleurs dans le programme s’il doit varier selon les cas), pas des horaires.

    – l’instruction time correspond à l’horaire de clôture d’une bougie et non pas à l’heure qu’il est pendant une bougie, en conséquence dire time<103000 dans ton ut5mn ne va pas compter jusqu’à 10h30 mais jusqu’à la dernière bougie de clôture strictement inférieure à 10h30 en ut5 c’est à dire celle de 10h20 à 10h25

    – j’ai le vague souvenir d’avoir lu quelque part il y a longtemps qu’il vaut mieux éviter les accents ou caractères spéciaux dans les noms de variables, mais je ne sais plus où (ni même si je ne me mélange pas les pinceaux avec un autre langage, mais par prudence j’évite les accents)

    Bonne suite

    #116594 quote
    jeanguy
    Participant
    Senior

    Noobywan,

    Merci de ta réponse mais je n’y arrive pas !

    Je réitère donc ma demande (qui j’espère pourra servir à d’autres)

    Voici la base du code :

    //Périodes d'observations
    PO1 = ?
    PO2 = ?
    
    //Périodes de restitutions 
    PR1 = time > 080000 and time =< 103000 
    PR2 = time > 103000 and time =< 120000
    
    
    if PR1 then
    drawsegment(barindex,PO1,barindex[2],PO1) coloured(0,0,0)
    endif
    
    if PR2 then 
    drawsegment(barindex,PO2,barindex[2],PO2) coloured(0,0,0) 
    endif
     
    return
    

    Ce n’est pas évident ;-(

    Très bonne journée à tous

    EURAUD-15-minutes-1.png EURAUD-15-minutes-1.png
    #116597 quote
    jeanguy
    Participant
    Senior

    Je me suis trompé dans la photo, celle-ci est plus claire.

    Si quelqu’un peut coder cela j’arriverai à me débrouiller ensuite…

    EURAUD-15-minutes-2.png EURAUD-15-minutes-2.png
    #116603 quote
    jeanguy
    Participant
    Senior

    Dernière chose voici ce que cela pourrait donner en visuel…

    Ici nous somme en M 15, si on descend en M 5 ce serait bien de voir ces mêmes niveaux sur les mêmes plages horaire.

    Merci encore

    EURAUD-15-minutes-3.png EURAUD-15-minutes-3.png EURAUD-5-minutes-1.png EURAUD-5-minutes-1.png
    #116792 quote
    jeanguy
    Participant
    Senior

    J’ai préparé celui là mais il ne fonctionne pas non plus… Je n’ai pas bien compris la notion d’enregistrement d’une variable notamment de barindex.

    Par exemple, comment enregistrer la 10ème barre avant 10h30 ?

    Voici ou j’en suis (c’est moche je pense !)

    //Périodes sur lesquelles doivent être tracé les segments
    time1 = time > 080000 and time =< 103000
    time2 = time > 103000 and time =< 120000
    time3 = time > 150000 and time =< 170000
    
    //Périodes d'observations (PO) => Permet de stocker des coordonnées des segments
    
    if time1 then//PO1 = enregistrement du plus haut et plus bas de la veille
    higher1 = max(higher1,Dhigh(1))
    lower1 = min(higher1,Dlow(1))
    endif
    
    if time2 then//PO2 = enregistrement des 5 chandeliers précedents 10h30
    higher2 = max(higher2,high[5])
    lower2 = min(higher2,low[5])
    endif
    
    if time3 then//PO3 = enregistrement des 10 chandeliers précedents 15h00
    higher3 = max(higher3,high[10])
    lower3 = min(higher3,low[10])
    endif
    
    //Restitution 
    if time1 then
    drawsegment(barindex,higher1,barindex[1],higher1) coloured(0,0,0)
    drawsegment(barindex,lower1,barindex[1],lower1) coloured(0,0,0)
    endif
    
    if time2 then
    drawsegment(barindex,higher2,barindex[1],higher2) coloured(0,0,0)
    drawsegment(barindex,lower2,barindex[1],lower2) coloured(0,0,0)
    endif
    
    if time3 then
    drawsegment(barindex,higher3,barindex[1],higher3) coloured(0,0,0)
    drawsegment(barindex,lower3,barindex[1],lower3) coloured(0,0,0)
    endif
     
    return
    

    Pouvez-vous m’aider ? Merci de vos retours

    #117155 quote
    jeanguy
    Participant
    Senior

    J’ai à peu près réussi mais :

    1. Il faut sans doute retoucher les horaires
    2. il y a moyen de le simplifier je pense
    3. Je suis en phase de test donc j’ai une autre question
    //Reseat des variables chaque jours
    if intradaybarindex=0 then//Test si la première barre de la journée est bien la première
    hh1 = 0
    ll1 = close*10
    hh2 = 0
    ll2 = close*10
    hh3 = 0
    ll3 = close*10
    hh4 = 0
    ll4 = close*10
    hh5 = 0
    ll5 = close*10
    hh6 = 0
    ll6 = close*10
    endif
    
    //Période sur laquelle doivent être enregistré les plus Haut et Les plus bas
    PO1 = time >= 000000 and time < 080000//PO1 = Période d'observation 1 etc...
    PO2 = time => 080000 and time < 103000
    PO3 = time => 103000 and time < 120000
    PO4 = time => 120000 and time < 133000
    PO5 = time => 133000 and time < 150000
    PO6 = time => 150000 and time < 163000
    
    //Enregistrement des plus haut et plus bas dans des variables
    if PO1 then//De 00h à 08h
    HH1=max(high,HH1)//Enregistrement du plus haut = HH1
    if LL1=0 then
    LL1=low
    endif
    LL1=min(low,LL1)//Enregistrement du plus bas = LL1 etc...
    endif
    
    if PO2 then
    HH2=max(high,HH2)
    if LL2=0 then
    LL2=low
    endif
    LL2=min(low,LL2)
    endif
    
    if PO3 then
    HH3=max(high,HH3)
    if LL3=0 then
    LL3=low
    endif
    LL3=min(low,LL3)
    endif
    
    if PO4 then
    HH4=max(high,HH4)
    if LL4=0 then
    LL4=low
    endif
    LL4=min(low,LL4)
    endif
    
    if PO5 then
    HH5=max(high,HH5)
    if LL5=0 then
    LL5=low
    endif
    LL5=min(low,LL5)
    endif
    
    if PO6 then
    HH6=max(high,HH6)
    if LL6=0 then
    LL6=low
    endif
    LL6=min(low,LL6)
    endif
    
    //Période sur laquelle doient être tracé les segments
    PR1 = time > 080000 and time =< 103000//PR1 = Période de restitution 1 etc...
    PR2 = time > 103100 and time =< 120000
    PR3 = time > 120100 and time =< 133000
    PR4 = time > 133100 and time =< 150000
    PR5 = time > 150100 and time =< 163000
    PR6 = time > 163100 and time =< 180000
    
    //tracé des segments
    if PR1 then
    drawsegment(barindex,HH1, barindex[1],HH1)coloured(0,255,0)style(line,4)
    drawsegment(barindex,LL1, barindex[1],LL1)coloured(255,0,0)style(line,4)
    endif
    
    if PR2 then
    drawsegment(barindex,HH2, barindex[1],HH2)coloured(0,255,0)style(line,4)
    drawsegment(barindex,LL2, barindex[1],LL2)coloured(255,0,0)style(line,4)
    endif
    
    if PR3 then
    drawsegment(barindex,HH3, barindex[1],HH3)coloured(0,255,0)style(line,4)
    drawsegment(barindex,LL3, barindex[1],LL3)coloured(255,0,0)style(line,4)
    endif
    
    if PR4 then
    drawsegment(barindex,HH4, barindex[1],HH4)coloured(0,255,0)style(line,4)
    drawsegment(barindex,LL4, barindex[1],LL4)coloured(255,0,0)style(line,4)
    endif
    
    if PR5 then
    drawsegment(barindex,HH5, barindex[1],HH5)coloured(0,255,0)style(line,4)
    drawsegment(barindex,LL5, barindex[1],LL5)coloured(255,0,0)style(line,4)
    endif
    
    if PR6 then
    drawsegment(barindex,HH6, barindex[1],HH6)coloured(0,255,0)style(line,4)
    drawsegment(barindex,LL6, barindex[1],LL6)coloured(255,0,0)style(line,4)
    endif
     
    return
    EURAUD-15-minutes-1-1.png EURAUD-15-minutes-1-1.png GBPSEK-1-minute.png GBPSEK-1-minute.png
    #117158 quote
    jeanguy
    Participant
    Senior

    Sur la base du même principe, c’est à dire le tracé de segment en fonction des plus haut et plus bas antérieur (Segments qui doivent rester en place)

    Comment écrire ?

    S’il est 08h alors enregistrement du plus haut de la 10ème barre avant 8h00

    Cela me permettra de faire mes tests et sans doute de simplifier le code pour les autres.

    Merci

    #117200 quote
    jeanguy
    Participant
    Senior
    //Reseat des variables chaque jours
    if intradaybarindex=0 then//Test si la première barre de la journée est bien la première
    hh1 = 0
    ll1 = close*10
    hh2 = 0
    ll2 = close*10
    endif
    
    //Bornes temporelles
    P1 = 080000
    P2 = 120000
    P3 = 180000
    
    if time = P1 then
    hh1 = highest[10](high)
    ll1 = lowest[10](low)
    endif
    
    if time = P2 then
    hh2 = highest[5](high)
    ll2 = lowest[5](low)
    endif
     
    //tracé des segments
    if time = P1 then
    drawsegment(barindex,HH1, barindex[10],HH1)coloured(0,0,0)style(line,2)
    drawsegment(barindex,LL1, barindex[10],LL1)coloured(0,0,0)style(line,2)
    endif
    
    if time = P2 then
    drawsegment(barindex,HH1, barindex[5],HH1)coloured(0,0,0)style(line,2)
    drawsegment(barindex,LL1, barindex[5],LL1)coloured(0,0,0)style(line,2)
    endif
     
    return

    Bon voilà ce que j’ai pu faire.

    Je rappelle que l’idée est de partir d’une heure fixe (ici 8h et 12h) et à partir cette heure fixe, aller chercher les + haut et + bas précédents pour ensuite tracer un segment vers l’avant jusqu’à la prochaine borne/heure (et ceci tous les jours).

    Le code précédent (post 117155) fonctionne mais j’aimerai remplacer les tranches horaires justement par cette heure fixe.

    Sur la base de ce code – qui ne fonctionne pas :

    1. Comment reporter les segments vers l’avant étant donné que barindex[+20] n’existe pas  (On serait tous riches sinon !!)
    2. Comment enregistrer les derniers plus bas/plus haut depuis P2 (ici 12h) car j’ai l’impression qu’il va chercher les bonnes données depuis 8h mais pas depuis 12h

    Je sais que le sujet est redondant mais en m’inspirant des autres posts (qui ne reflète pas exactement ma demande) je n’arrive pas à reproduire les codes… Je suis une quiche en programmation et je pense avoir atteint les limites de ce que je pouvais faire seul.

    Je suis arrivé à mes fins avec le code précédent mais pour faire des tests multiple j’aimerai aller au bout de celui-ci… plus simple d’utilisation.

    Pouvez-vous m’aider ? avec mes excuses et mes remerciements.

    EURAUD-15-minutes-1-2.png EURAUD-15-minutes-1-2.png EURAUD-15-minutes-4.png EURAUD-15-minutes-4.png
    #117336 quote
    JC_Bywan
    Moderator
    Master

    Les versions varient selon le broker, je suppose que tu es en version v10.3 ou antérieure? Le tracé “vers l’avant” par code (=à droite du prix, “dans le futur” par rapport à la barre en cours) ne sera possible qu’à partir de la version v11. En v10.3 tu ne peux que dessiner ton segment au fur et à mesure depuis le passé vers la barre en cours.

    Pour ton autre question, tu fais une boucle if pour voir si on est à ton P2, et si oui tu mets dans une variable ton barindex correspondant, par exemple barP2=barindex, puis tant que tu es dans la plage horaire voulue depuis P2, tu fais un highest[barindex-barP2](high), comme ça selon que tu es en M5 ou M15 ou toute ut qui a un horaire de close compatible avec ton P2, le nombre de bougies à considérer s’ajustera.

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

Tracé quotidien 3 lignes horizontales : 17h30 / 8h /9h


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 16 replies,
has 5 voices, and was last updated by jeanguy
6 years, 1 month ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 11/24/2018
Status: Active
Attachments: 14 files
Logo Logo
Loading...