récupérer le dernier “signal” d’une seul bougie sur un croisement

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #155793 quote
    Xavier01
    Participant
    Average

    Bonjour a tous,

    Y a t’il une fonction et ou une phrase magique pour programmer dans notre code uniquement le dernier “signal” d’une seul bougie sur un croisement et non tous les anciens croisements ou autre historique?

    J’arrive bien a marquer les bougies que je souhaite prendre en considération mais je voudrais uniquement  la dernière ou dernier “signal”.

    J’épluche la documentation dans la documentation du forum mais je trouve po.

    #155817 quote
    JC_Bywan
    Moderator
    Master

    Bonsoir, j’ai un post en attente de validation soumis hier dans la library qui code ce genre de situation. Il devrait être validé au retour des fêtes. Bon réveillon du nouvel an à toi et aux derniers forumeurs du soir.

    #155818 quote
    Xavier01
    Participant
    Average

    Bonsoir Nooby, merci, Bon réveillon et très bonne soirée

    #156203 quote
    JC_Bywan
    Moderator
    Master

    Bonjour,

    le voici: https://www.prorealcode.com/prorealtime-indicators/v11-dynamic-rectangle-from-moving-average-breakout-zone-to-any-future-bar/

    il te faut la ligne 7 pour constamment ne redessiner que l’occurence la plus récente, et à l’intérieur du bloc if de la ligne 14 tu définis ton cross et les valeurs de la barre et caractéristiques de la bougie dont tu as besoin pour marquer ton signal, et enfin la ligne 20 du drawrectangle peut être remplacée par l’objet graphique que tu veux pour marquer ton signal (un drawarrowup ou down, un drawtextt, etc…)

    #156576 quote
    Xavier01
    Participant
    Average

    Hello Nooby, merci, je vais potasser, ca ne fonctionne pas, en fait lorsque j’ajoute

    DRAWONLASTBARONLY=true
    ben ca efface tout. je vais potasser.
    #156589 quote
    Xavier01
    Participant
    Average

    En faite ca donne ca, j’ajoute ce code au prix.Je marque et colorie en vert la bougie qui casse par le haut les 50 d’un rsi 21 jours et en jaune la bougie qui casse par le bas, mais je n’arrive pas a avoir juste le dernier signal sur le graph ou éventuellement les deux dernières.

    //Parametre de l'indication
    myRSI=RSI[21](close)
    Echelle=100/0
    //Equilibre
    ZE=50
    //Plus haut et plus bas de la bougie
    H1=highest[1](high)/ZA
    H2=lowest[1](low)/ZA
    B1=highest[1](high)/ZA
    B2=lowest[1](low)/ZA
    
    
    ZA=myRSI[0]crosses over ZE[0]
    if ZA and H1 then
    drawcandle(open,high,low,close[0])coloured(0,128,0)
    if ZA and H1 then
    drawtext("B",barindex[0],low[0])
    if ZA and H2 then
    drawtext("H",barindex[0],high[0])
    endif
    endif
    endif
    ZV=myRSI[0]crosses under ZE[0]
    if ZV and B1 then
    drawcandle(open,high,low,close[0])coloured(218,165,32)
    if ZV and B1 then
    drawtext("B",barindex[0],low[0])
    if ZV and B1 then
    drawtext("H",barindex[0],high[0])
    endif
    endif
    endif
    return
    
    #156608 quote
    Nicolas
    Keymaster
    Master

    Pour ne dessiner que les 2 derniers, il faudrait qu’il soit déjà connu et donc pouvoir les afficher dans le passé à partir de la bougie présente. Hors on ne peut pas dessiner de chandeliers dans le passé avec DRAWCANDLE. Il faudrait les distinguer autrement (avec une autre instruction graphique ? un rectangle, etc..).

    #156654 quote
    Xavier01
    Participant
    Average

    Bonjour Nicolas, d’accord, je début. J’ai suivis vos deux formations(MERCI BEAUCOUP) qui m’ont vraiment bien éclairés et fait comprendre beaucoup de possibilités mais c’est encore très tout neuf pour moi et je ne maitrise pas encore toutes les instructions possible.

    #156730 quote
    Xavier01
    Participant
    Average

    Pas moyen de créer une boucle, j’ai essayé avec l’instruction BREAK tournée dans tous les sens. Je seche

    #156750 quote
    Nicolas
    Keymaster
    Master

    Le code ci-dessous enregistre dans des tableaux les occurrences de tes détections de chandeliers. Puis à partir de la bougie courante, on fait une recherche dans les occurrences du tableau et on les affiche en les comptant, puis si on en a affiché suffisamment, on sort de la boucle.

    defparam drawonlastbaronly=true
    
    quantite = 2 //combien de signaux à afficher ?
    // -------------------------
    //Parametre de l'indication
    myRSI=RSI[21](close)
    Echelle=100/0
    //Equilibre
    ZE=50
    //Plus haut et plus bas de la bougie
    H1=highest[1](high)/ZA
    H2=lowest[1](low)/ZA
    B1=highest[1](high)/ZA
    B2=lowest[1](low)/ZA
    
    
    ZA=myRSI[0]crosses over ZE[0]
    if ZA and H1 then
    $za[lastset($za)+1]=barindex
    endif
    ZV=myRSI[0]crosses under ZE[0]
    if ZV and B1 then
    $zv[lastset($zv)+1]=barindex
    endif
    
    count=0
    if isset($za[1]) then 
    for i = lastset($za) downto 1 do 
    offset=barindex-$za[i]
    count=count+1
    drawtext("B",barindex[offset],low[offset]) coloured(0,128,0)
    drawtext("H",barindex[offset],high[offset]) coloured(0,128,0)
    drawvline(barindex[offset])  coloured(0,128,0)
    if count>=quantite then 
    break
    endif 
    next
    endif
    if isset($zv[1]) then
    for i = lastset($zv) downto 1 do
    offset=barindex-$zv[i]
    count=count+1
    drawtext("B",barindex[offset],low[offset]) coloured(218,165,32)
    drawtext("H",barindex[offset],high[offset]) coloured(218,165,32)
    drawvline(barindex[offset]) coloured(218,165,32)
    if count>=quantite then
    break
    endif
    next
    endif
    
    return

    J’ai remplacé la coloration des bougies par des lignes verticales, à toi de voir ce que tu voudrais à la place.

    #156803 quote
    Xavier01
    Participant
    Average

    WHAAA Tu est une machine Nicolas.Je n’est pas essayé avec ces deux instructions pensant qu’elles n’avaient rien a voir avec ce que je voulais faire. Un très grand merci Nicolas
    C’est le genre d’instruction que je vais essayer d’utiliser pour un open breakout
    Est ce qu’il est possible d’ajouter une extension de Fibo a un programme? Il faut coder tous les paramètres?

    #156860 quote
    Nicolas
    Keymaster
    Master

    Un niveau de prix Fibonacci ou autre, c’est un prix multiplié par un facteur, donc oui il faudra les calculer d’abord si tu veux les afficher, avec des lignes ou autre.

    #156873 quote
    Xavier01
    Participant
    Average

    Oui en fouillant un peu sur le forum j’ai vue quelques exemples. En tous cas merci beaucoup

    #158312 quote
    JC_Bywan
    Moderator
    Master

    Bonjour, plusieurs remarques à propos de ton code en post #156589:

    • Echelle=100/0 ne sert à rien (sans même débattre de la division par 0)
    • les h1,h2,b1,b2 pourquoi les diviser par za (qui vaut 1 ou 0, division par zéro?)
    • les h1,h2,b1,b2 n’interviennent que dans des if comme des conditions au lieu de valeurs, ils seront toujours vrais et donc ne servent pas, soit on les élimine entièrement, soit il faut revoir leur véritable usage pour réécrire les conditions des if différemment si leurs valeurs doivent jouer quelque part
    • les [0] même si corrects en syntaxe sont inutiles car par défaut sans valeurs entre crochets c’est la même chose que [0]

    Le code simplifié pour le même résultat devient:

    myRSI=RSI[21](close)
    if myRSI crosses over 50 then
     drawcandle(open,high,low,close[0])coloured(0,128,0)
     drawtext("B",barindex[0],low[0])
     drawtext("H",barindex[0],high[0])
    endif
    if myRSI crosses under 50 then
     drawcandle(open,high,low,close[0])coloured(218,165,32)
     drawtext("B",barindex[0],low[0])
     drawtext("H",barindex[0],high[0])
    endif
    
    return

    ce qui est très similaire au post library, et une version sans boucle pour avoir les 2 dernières occurences peut s’écrire, sans drawcandle comme le faisait justement remarquer Nicolas, mais avec des drawrectangle/segment qui redessinent des candles grassouillettes:

    defparam drawonlastbaronly=true
    
    myRSI=RSI[21](close)
    if myRSI crosses over 50 then
     barre1=barindex
     open1=open
     haut1=high
     bas1=low
     close1=close
    endif
    if myRSI crosses under 50 then
     barre2=barindex
     open2=open
     haut2=high
     bas2=low
     close2=close
    endif
    
    drawrectangle(barre1-1,open1,barre1+1,close1) coloured(0,128,0) bordercolor(0,128,0)
    DRAWSEGMENT(barre1, bas1, barre1, min(open1,close1)) coloured(0,128,0) style(line,3)
    DRAWSEGMENT(barre1, haut1, barre1, max(open1,close1)) coloured(0,128,0) style(line,3)
    drawtext("B",barre1,bas1)
    drawtext("H",barre1,haut1)
    
    drawrectangle(barre2-1,open2,barre2+1,close2) coloured(218,165,32) bordercolor(218,165,32)
    DRAWSEGMENT(barre2, bas2, barre2, min(open2,close2)) coloured(218,165,32) style(line,3)
    DRAWSEGMENT(barre2, haut2, barre2, max(open2,close2)) coloured(218,165,32) style(line,3)
    drawtext("B",barre2,bas2)
    drawtext("H",barre2,haut2)
    
    return
    #158314 quote
    Xavier01
    Participant
    Average

    Waahh, Merci Nooby, moi qui pensais avoir écrit quelque chose de potable et qui me fournissait une info. Effectivement le code est beaucoup plus propre selon votre version.

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

récupérer le dernier “signal” d’une seul bougie sur un croisement


Support ProBuilder

New Reply
Author
author-avatar
Xavier01 @xavier01 Participant
Summary

This topic contains 14 replies,
has 3 voices, and was last updated by Xavier01
5 years ago.

Topic Details
Forum: Support ProBuilder
Language: French
Started: 12/31/2020
Status: Active
Attachments: No files
Logo Logo
Loading...