Récupérer l’index d’une barre particulière

Viewing 8 posts - 1 through 8 (of 8 total)
  • Author
    Posts
  • #147605 quote
    Vinco67
    Participant
    Junior

    Bonjour,

    je voudrais savoir s’il était possible de récupérer l’index d’une barre particulière par exemple du plus haut sur une période.

    Pour récupérer le plus haut j’utilise:

    Highest[period](high)

    Et là j’aimerai bien récupérer l’indice de cette barre pour pouvoir tracer une ligne, un rectangle ou autre.

    Est-ce qu’il y a une solution pour ça ?

    Merci d’avance

    #147608 quote
    robertogozzi
    Moderator
    Master

    Vous devez utiliser une boucle FOR … NEXT.

    Le voilà:

    MyHighest = highest[50](high)
    For i = 0 to BarIndex
       If high[i] = MyHighest Then
          Break
       Endif
    Next

    i est l’indice de la barre correspondant à MyHighest.

    #147615 quote
    Vinco67
    Participant
    Junior

    Ok tout bêtement ^^

    C’est pas ultra efficace mais on fera avec. Est-ce qu’il est possible de créer une fonction dans laquelle je mettrai cette boucle et que je pourrai utiliser dans ce même code voire l’appeler dans d’autres codes ?

    Merci beaucoup !

    #147616 quote
    robertogozzi
    Moderator
    Master

    Non, car il n’est pas possible de communiquer à l’indicateur (les fonctions n’existent pas pour le moment) l’événement à rechercher.

    Dans le futur, dans la v11, les fonctions seront incluses et, surtout, l’instruction BarSince (), ou similaire, qui renverra l’index de la bougie où un certain événement s’est produit.

    Nous ne savons pas quand, nous devons donc attendre.

    Vinco67 thanked this post
    #147703 quote
    Nicolas
    Keymaster
    Master

    Sinon tu enregistres la BARINDEX à la volée quand le plus haut vient de changer :

    hh = highest[50](high)
    if hh<>hh[1] then 
     mybar = barindex
    endif
    robertogozzi thanked this post
    #147725 quote
    Vinco67
    Participant
    Junior

    Ah super merci aussi pour cette version !

    J’ai une autre question concernant le dessin de rectangle.

    Si j’ai bien compris le logiciel exécute tout le code (sur un indicateur) à chaque bougie.

    Dans mon cas j’ai 2 conditions à checker:

    • l’ATR de la bougie en cours est inférieur au dernier plus haut (Highest[period](atr)) avec atr = ATR[14] par exemple
    • la clôture de la bougie en cours est inférieure à son dernier plus haut sur une période (close < Highest[period](high))

    Si les conditions sont respectées je voudrais tracer un rectangle entre le fameux dernier plus haut et le plus bas sur cette période jusqu’à la bougie actuelle.

    Voilà comment je l’ai codé:

    atr = ATR[14]
    
    LastHigh = Highest[period](high)
    
    if close < LastHigh[1] and atr < Highest[period](atr) and rect = 0 then
        drawrectangle(barindex[period],LastHigh,barindex,lowest[period](low))Coloured(0,0,255)
        rect = 1
    elsif rect >0 and (atr>atr[1] or close crosses over LastHigh[1]) then
        rect=0
    endif
    
    
    RETURN LastHigh coloured(0,180,0) as "High"

    Je dois rater quelque chose parce que je n’ai aucun rectangle qui se trace alors que clairement à la main je repère des périodes de temps où ces conditions sont respectées.

    PS: je n’ai pas intégré encore votre code pour récupérer l’indice du plus haut, donc au maximum je sais que mon plus haut est dans les x dernières bougies donc je trace mon rectangle sur ces x bougies.

    Merci d’avance pour vos réponses, elles sont super utiles !

    #147732 quote
    Vinco67
    Participant
    Junior

    [EDIT] : je viens de comprendre mon erreur, juste la fonction ATR qui n’existe pas mais comme j’ai créée un indicateur “ATR MAX” précédemment il interprétait ça comme un appelle à cet indicateur…

    C’est bon mes rectangles se dessinent bien et je vais pouvoir continuer en intégrant le code de récupération de l’indice le plus haut.

    Merci à vous !

    #147733 quote
    fifi743
    Participant
    Master

    bonjour,

    la machine ne reconnais pas ATR[14]

    atr =AverageTrueRange[14](close)

    atr = AverageTrueRange[14](close)
     period=5
    LastHigh = Highest[period](high)
     
    if close < LastHigh[1] and atr < Highest[period](atr) and rect = 0 then
    drawrectangle(barindex[period],LastHigh,barindex,lowest[period](low))Coloured(0,0,255)
    rect = 1
    elsif rect >0 and (atr>atr[1] or close crosses over LastHigh[1]) then
    rect=0
    endif
     
     
    RETURN LastHigh coloured(0,180,0) as "High"
    Vinco67 and Nicolas thanked this post
Viewing 8 posts - 1 through 8 (of 8 total)
  • You must be logged in to reply to this topic.

Récupérer l’index d’une barre particulière


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Vinco67 @vinco67 Participant
Summary

This topic contains 7 replies,
has 4 voices, and was last updated by fifi743
5 years, 4 months ago.

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