TRACER UN RECTANGLE entre 2 horaires avec les plus hauts et les plus bas

Viewing 15 posts - 1 through 15 (of 18 total)
  • Author
    Posts
  • #207674 quote
    VALLEE
    Participant
    New

    Tracer un rectangle

    Bonjour,

    Pouvez-vous m’aider?

    Je souhaiterai un indicateur qui me trace un rectangle, a partir d’une heure précise (ex: 9h15) pour finir a X bougies (ex: 30 bougies)  dont le haut est le bas du rectangle soit tracé sur le plus haut et le plus bas (incluant les mèches) des bougies  qui sont dans cet espace des 30 bougies. Et pouvoir colorier l’intérieur de ce rectangle.
    Merci d’avance

    #207677 quote
    JC_Bywan
    Moderator
    Master

    Bjr,

    Plusieurs façons de faire selon le niveau de robustesse et de personnalisation voulu, mais sans lister toutes les variantes disons que pour un coup de main suffisamment rapide et simple, cette façon-ci devrait faire l’affaire:

    defparam DRAWONLASTBARONLY=true
    
    depart=091500
    nombrebougies=30
    
    if opentime=depart then
    mabarre=barindex
    ll=low
    hh=high
    endif
    
    if time>depart and barindex<mabarre+nombrebougies then
    ll=min(ll,low)
    hh=max(hh,high)
    endif
    
    DRAWRECTANGLE(mabarre, ll, mabarre+nombrebougies, hh) coloured (0,0,255,150) bordercolor(0,0,255)
    
    return
    #207679 quote
    Nicolas
    Keymaster
    Master

    Voilà ce que je peux proposer rapidement, pas des rectangles, mais un fond coloré progressif entre le plus haut et le plus bas depuis l’heure de démarrage et cela pendant 30 bougies.

    start = 091500
    
    if time=start then 
    hh=high
    ll=low
    startbar=barindex
    endif 
    
    if barindex-startbar<=30 and barindex>startbar then 
    hh=max(hh,high)
    ll=min(ll,low)
    alpha=100
    ELSE 
    alpha=0
    endif
    
    colorbetween(hh,ll,"crimson",alpha)
    
    return
    
    colorbetween.png colorbetween.png
    #207710 quote
    VALLEE
    Participant
    New

    Merci beaucoup, par contre , le rectangle n’apparait que sur la dernière session, y a t il un moyen de le voir rétrospectivement, pour pouvoir faire des backtests?

    Merci d’avance

    #207711 quote
    VALLEE
    Participant
    New

    Merci beaucoup super

    #207723 quote
    Nicolas
    Keymaster
    Master

    le voir rétrospectivement, pour pouvoir faire des backtests

    C’est ce que tu obtiens avec ma version du code.

    Tu peux renvoyer les valeurs des plus hauts/bas en temps réel en modifiant la dernière ligne avec :

    return hh,ll
    #210232 quote
    VALLEE
    Participant
    New

    Bonjour voila quelques semaines, un membre de cette communauté, m’avez proposé un indicateur me permettant de délimiter a l’aide d’un rectangle , la session d’Asie, que j’ai amélioré  pour mes besoins. . D’ailleurs je le remercie encore. Sauf que cela ne m’affiche que la dernière session. Pour pouvoir faire du back test, il faudrait que ces rectangles s’affichent dans le temps passé. Si quelqu’un pouvez m’aider. je joins ci-apres le programme qui me permet d’avoir le dernier rectangle. Ce serait super d’avoir ceux d’avant

    Merci pour votre aide

     

    defparam DRAWONLASTBARONLY=true
    
    If M15 then
    
    depart=010000
    nombrebougies=20
    
    if opentime=depart then
    mabarre=barindex
    ll=low
    hh=high
    endif
    
    if time>depart and barindex<mabarre+nombrebougies then
    ll=min(ll,low)
    hh=max(hh,high)
    endif
    
    DRAWRECTANGLE(mabarre, ll, mabarre+nombrebougies, hh) coloured (0,255,255) bordercolor(0,0,255)
    Endif
    
    If M5 then
    
    depart=010000
    nombrebougies=60
    
    if opentime=depart then
    mabarre=barindex
    ll=low
    hh=high
    endif
    
    if time>depart and barindex<mabarre+nombrebougies then
    ll=min(ll,low)
    hh=max(hh,high)
    endif
    
    DRAWRECTANGLE(mabarre, ll, mabarre+nombrebougies, hh) coloured (0,255,255) bordercolor(0,0,255)
    Endif
    If M1 then
    depart=010000
    nombrebougies=300
    
    if opentime=depart then
    mabarre=barindex
    ll=low
    hh=high
    endif
    
    if time>depart and barindex<mabarre+nombrebougies then
    ll=min(ll,low)
    hh=max(hh,high)
    endif
    
    DRAWRECTANGLE(mabarre, ll, mabarre+nombrebougies, hh) coloured (0,255,255) bordercolor(0,0,255)
    Endif
    
    return
    #210238 quote
    JC_Bywan
    Moderator
    Master

    Bjr,

    Dès que je peux je reviens sur le post #210232 ci-dessus pour le fusionner avec la requête initiale, où il me semble qu’il y a avait eu 2 suggestions, une avec dernier rectangle, une autre avec tous les rectangles, pour voir pourquoi tu n’as pas pris l’autre qui semble correspondre à vouloir tous les rectangles.

    De façon plus générale pour l’usage du forum, merci de ne pas étaler une même discussion dans des sujets séparés pour garder une vue d’ensemble sans redite (et pour ne pas me faire dire ce que je n’ai pas dit, inversement pour des questions non liées, on peut et doit faire des sujets séparés même si discutés le même jour en parallèle).

    #210239 quote
    VALLEE
    Participant
    New

    Merci et désolé, d’avoir ouvert une autre discussion. Je ne savais pas. Je ferai attention a l’avenir. Pourquoi, j’ai choisi la suggestion du dernier rectangle, précisément parce que ce programme formait un rectangle alors que l’autre faisait un coloriage, de la session sans déterminer un rectangle, ce qui ne me va pas pour ma stratégie. Merci pour ta réponse est désolé encore de ma petite bétise de répétition

    #210276 quote
    JC_Bywan
    Moderator
    Master

    Ok, les 2 sujets sont réassemblés en un seul. Pour avoir les rectangles tous les jours, il suffisait de ne pas mettre defparam DRAWONLASTBARONLY=true, comme dans l’autre solution, tout en gardant la façon de faire “rectangle”.

    D’autre part, j’ai gardé le nombre de bougies comme spécifié dans la requête initiale plutôt qu’un horaire de fin, mais comme je vois que tu veux gérer trois cas M15,M5,M1,  j’ai rajouté en plus simple tes M15,M5,M1 dans un petit bloc if…elsif… au lieu de tout dupliquer à chaque fois.

    //defparam DRAWONLASTBARONLY=true
    M5=1
    m1=0
    m15=0
    depart=091500
    
    if M15 then
    nombrebougies=20
    elsif M5 then
    nombrebougies=60
    elsif M1 then
    nombrebougies=300
    endif
    
    if opentime=depart then
    mabarre=barindex
    ll=low
    hh=high
    endif
    
    if time>depart and barindex<mabarre+nombrebougies then
    ll=min(ll,low)
    hh=max(hh,high)
    endif
    
    DRAWRECTANGLE(mabarre, ll, mabarre+nombrebougies, hh) coloured (0,0,255,100) bordercolor(0,0,255)
    
    return
    #210292 quote
    VALLEE
    Participant
    New

    Et bé, je suis bluffé, en effet c, est exactement ce que je voulais mais en nettement mieux, alors un grand merci. Même 1000 fois Merci

    JC_Bywan thanked this post
    #210314 quote
    VALLEE
    Participant
    New

    Me revoila, car, j’ai quand même un petit PB.  En effet, que je mette en M15, M5 ou M1, ca m’affiche 60 bougie. Maintenat si le fait de mettre une heure de depart et une heure de fin facilite la chose. Ca ne me gène pas

    Désolé

    JPV

    #210316 quote
    JC_Bywan
    Moderator
    Master

    Ah oui pardon, c’est de ma faute, comme je n’avais pas voulu créer de paramètres externes pour aller plus vite, j’avais mis en début de code un choix forcé de M5=1 (d’où les 60 bougies dans tous les cas) et les 2 autres à 0 en lignes 2,3,4. Il faut enlever ces 3 lignes pour que mes M1,M5,M15 ajoutés pour tester le code ne se superposent pas aux tiens. Voici:

    if M15 then
    nombrebougies=20
    elsif M5 then
    nombrebougies=60
    elsif M1 then
    nombrebougies=300
    endif
    
    if opentime=depart then
    mabarre=barindex
    ll=low
    hh=high
    endif
    
    if time>depart and barindex<mabarre+nombrebougies then
    ll=min(ll,low)
    hh=max(hh,high)
    endif
    
    DRAWRECTANGLE(mabarre, ll, mabarre+nombrebougies, hh) coloured (0,0,255,100) bordercolor(0,0,255)
    
    return
    #210383 quote
    VALLEE
    Participant
    New

    Merci

    Petite question :

    Avec: //defparam DRAWONLASTBARONLY=true

    J’ai un rectangle propre mais je n’ai pas de rectangle dans le passé

    Comme dit dans un précèdent message en l’enlevant ont a les rectangles dans le passé, par contre, il ne sont pas propres avce plein de lignes a l’intérieur

    Est ce normal? peut on y faire quelque chose?

    Merci

    #210393 quote
    VALLEE
    Participant
    New

    Voila l’effet que cela fait

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

TRACER UN RECTANGLE entre 2 horaires avec les plus hauts et les plus bas


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
Summary

This topic contains 17 replies,
has 4 voices, and was last updated by Nicolas
2 years, 10 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 01/19/2023
Status: Active
Attachments: 3 files
Logo Logo
Loading...