Macd Inversion et Signal

Viewing 15 posts - 1 through 15 (of 15 total)
  • Author
    Posts
  • #218907 quote
    Alai-n
    Participant
    Veteran

    Bonjour,

    Je pêche à trouver ce que je cherche depuis plusieurs jours, j’aurais bien besoin d’un petit coup de clavier!

    J’ai détourné un code déjà existant pour le remettre à ma sauce, mais je crains que la sauce a tourné.

    Ce que je cherche à faire comme dans l’image ci-jointe, c’est de mettre en évidence lorsque le prix fait de nouveaux plus bas alors que le Macd>0!

    Sur l’image le fond gris = Macd<0, fond blanc Macd>0

    Je souhaiterais récupérer le prix le plus bas lorsque le Macd<0 et le comparer avec un nouveau plus bas du prix lorsque le Macd >0.

    (Désolé pour le titre, mais je ne sais pas comment appeler ça!)

    ////////////////////////////////////////////////////////////////////////////////////////
    //Macd | Indicator
    ////////////////////////////////////////////////////////////////////////////////////////
    MyMacd = Macd[12,26,9](close)
    ////////////////////////////////////////////////////////////////////////////////////////
    
    MinBarRange = 3
    
    //Bottom
    MacdMin = high[2]>high[1] and high[1]<high[0] and MyMacd[0]<0
    
    eTrade = 0
    
    //Bottom
    if MacdMin then
    MacdMin1 = MyMacd[1]
    Bottom1  =  low[1]
    for I = MinBarRange to 30
    if MacdMin[I] then
    MacdMin2 = MyMacd[I + 1]
    Bottom2  =low[I + 1]
    If Bottom1<=Bottom2 and MacdMin1>MacdMin2 and MyMacd[0]>0 Then
    eTrade = 1
    endif
    break
    endif
    next
    endif
    
    
    ////////////////////////////////////////////////////////////////////////////////////////
    Return eTrade as "eTrade"
    ////////////////////////////////////////////////////////////////////////////////////////
    #218908 quote
    Alai-n
    Participant
    Veteran

    J’ai oublié l’image du post précédent…

    Exemple-1.png Exemple-1.png
    #219321 quote
    Alai-n
    Participant
    Veteran

    Up

    #219336 quote
    JC_Bywan
    Moderator
    Master

    Bonjour,

    tu as inclus dans la définition de macdmin que mymacd[0] est <0

    donc quand tu fais “if macdmin then”… on n’entrera pas dans ce bloc if quand mymacd[0]>0. Or en plein dans ce bloc if en ligne 22 mymacd[0]>0 y est une des conditions pour avoir ton etrade=1, ce qui du coup n’arrive jamais…

    Quoique tu veuilles chercher quand mymacd[0]>0, cela doit se faire en dehors d’un bloc nécessitant par définition mymacd[0]<0

    Alai-n thanked this post
    #219347 quote
    jacquesgermain
    Participant
    Senior

    Bonjour,

    ci joint fichiers indicateur semblant répondre à votre demande

    Alai-n thanked this post
    ADYEN-Journalier.png ADYEN-Journalier.png etrade.itf
    #219350 quote
    jacquesgermain
    Participant
    Senior

    et le proscreener associé

    etrade-filtre.itf
    #219435 quote
    Alai-n
    Participant
    Veteran

    @JC_Bywan Je comprends ce que tu veux dire! Mais j’ai beau tenter de reformuler je pêche à savoir quoi rajouter ou quoi enlever et Où!

    @jacquesgermain Merci pour votre aide, il y a de l’idée, mais la récurrence des signaux n’y est pas… Ou plutôt ne correspondent pas à ce que je cherche à faire apparaitre…

     

    Je vais essayer d’être plus loquace avec des mots et une nouvelle image d’illustration. Dans le premier post je souhaitais comparer les “Low”, ici on garde la même idée, mais en comparant des “Close”… Je sais qu’un code fonctionne en lecture de droite à gauche, donc dans l’idée de droite à gauche : Lorsque macd>0 je compare le Close actuel avec le Close(minimum) le plus bas lorsque le macd était inférieur à 0 dans la vague précédente et si le Close actuel est < au Close(minimum) alors je déclenche un signal +1 !!!

    Donc dans l’image ci-jointe je cherche à identifier le Close (Flèche Grise) par rapport au Close(Flèche Verte)…(Le fond écran gris = Macd<0 et fond écran blanc = Macd>0)

    Merci pour votre aide

    Capture-decran-2023-08-21-150006.png Capture-decran-2023-08-21-150006.png
    #219455 quote
    JC_Bywan
    Moderator
    Master

    Mea culpa j’ai mal interprété “coup de clavier” j’ai cru que tu voulais juste un coup de pouce pour voir ce qui coince et pouvoir continuer à chercher plutôt qu’une proposition directe de solution.

    En voici une, je t’ai mis une variable mavar, comme ça puisque tu passes d’un post avec les low à un post avec les close tout en ayant eu les high dans macdmin dans le listing du premier code, tu peux choisir dans mavar lequel tu veux, et/ou en changer que là sans avoir à modifier tout le code si tu passes de l’un à l’autre.

    A tester:

    eTrade=0
    
    MyMacd= Macd[12,26,9](close)
    
    if MyMacd>0 then
    BACKGROUNDCOLOR(255,255,255)
    else
    BACKGROUNDCOLOR(200,200,200)
    endif
    
    if MyMacd crosses under 0 then
    bottom1=0
    //bottom2=0
    endif
    
    mavar= low // choisir low ou close ou autre
    
    plusbas1= mavar[2]>mavar[1] and mavar[1]<mavar and MyMacd<0
    plusbas2= mavar[2]>mavar[1] and mavar[1]<mavar and MyMacd>0
    
    if plusbas1 and (bottom1=0 or mavar[1]<=bottom1) then
    MacdMin1= MyMacd[1]
    bottom1= mavar[1]
    endif
    
    if plusbas2 and bottom1>0 and mavar[1]<bottom1 and MyMacd[1]>0 then
    MacdMin2= MyMacd[1]
    bottom2= mavar[1]
    eTrade= 1
    endif
    
    return eTrade as "eTrade"
    #219487 quote
    Alai-n
    Participant
    Veteran

    Bonjour JC_Bywan , merci infiniment, c’est exactement ce que je cherchais à faire et cela fonctionne très bien pour identifier les Bottom…

    J’ai cependant essayé de le terminer afin d’identifier aussi les Top, mais visiblement même avec le copié/collé j’ai du mal car je n’arrive pas à afficher les Top!!! Si tu pouvais m’indiquer ce qui cloche ligne 42 à 60 ou ailleurs ? Merci

    /////////////////////////////////////////////////////////////////////////////////////
    // Macd | Indicator
    /////////////////////////////////////////////////////////////////////////////////////
    MyMacd= Macd[12,26,9](close)
    /////////////////////////////////////////////////////////////////////////////////////
    
    if MyMacd>0 then
    backgroundcolor("darkolivegreen")
    else
    backgroundcolor("black")
    endif
    
    /////////////////////////////////////////////////////////////////////////////////////
    MyVariable = close // choisir low ou close ou autre
    /////////////////////////////////////////////////////////////////////////////////////
    
    eTrade=0
    
    if MyMacd crosses under 0 then
    Bottom1=0
    //Bottom2=0
    endif
    
    Plusbas1= MyVariable[1]<MyVariable and MyMacd<0
    Plusbas2= MyVariable[1]<MyVariable and MyMacd>0
    
    
    if Plusbas1 and (Bottom1=0 or MyVariable[1]<=Bottom1) then
    MacdMin1= MyMacd[1]
    Bottom1 = MyVariable[1]
    endif
    
    if Plusbas2 and Bottom1>0 and MyVariable[1]<=Bottom1 and MyMacd[1]>0 then
    MacdMin2= MyMacd[1]
    Bottom2 = MyVariable[1]
    eTrade  = 1
    endif
    /////////////////////////////////////////////////////////////////////////////////////
    if MyMacd crosses over 0 then
    Top1=0
    //Top2=0
    endif
    
    Plushaut1= MyVariable[1]>MyVariable and MyMacd>0
    Plushaut2= MyVariable[1]>MyVariable and MyMacd<0
    
    
    if Plushaut1 and (Top1=0 or MyVariable[1]>=Top1) then
    MacdMax1= MyMacd[1]
    Top1    = MyVariable[1]
    endif
    
    if Plushaut2 and Top1<0 and MyVariable[1]>=Top1 and MyMacd[1]<0 then
    MacdMax2= MyMacd[1]
    Top2   = MyVariable[1]
    eTrade = -1
    endif
    
    
    /////////////////////////////////////////////////////////////////////////////////////
    Return eTrade as "eTrade"
    /////////////////////////////////////////////////////////////////////////////////////
    #219510 quote
    JC_Bywan
    Moderator
    Master

    Je ne sais pas si tu as enlevé dans plusbas les comparaisons de [2] avec [1] par oubli en changeant le nom mavar en myvariable ou bien si c’est intentionnel, vu qu’a priori le fait de garder les condtions sur bottom1 dans les if des lignes 28 et 33 fera qu’ils sont visités aussi souvent que si tu n’avais pas changé… donc sans être connecté à la plateforme en première impression je pense que ce changement n’a pas introduit d’erreur dans le cas des bottom en amont du copier coller pour créer les top.

    La ligne 53 devrait inclure un top1>0 plutôt que <0 , post- “copier-coller de la ligne33 et adaptation aux tops” :

    if Plushaut2 and Top1>0 and MyVariable[1]>=Top1 and MyMacd[1]<0 then
    A tester avec ce changement pour voir s’il suffit à résoudre le cas des top ou s’il y autre chose…
    #219583 quote
    Alai-n
    Participant
    Veteran

    @JC_Bywan En effet tu avais raison pour la ligne 53, le problème venait de là! Pour les définitions de Plusbas et Plus haut, oui c’est intentionnel de les avoir modifié…

    A tout hasard, penses-tu qu’il soit possible dans le cas du Botom de faire en sorte de comparer le close(MyVariable) avec low lorsque Macd>0?

    Et encore merci pour ton travail.

    #219602 quote
    JC_Bywan
    Moderator
    Master

    Si tu regardes un low pour créer bottom1 pendant que macd<0 et que pendant que macd>0 tu veux comparer le close au low obtenu pour bottom1, alors la ligne 14 devient:

    MyVariable=low

    on  supprime la ligne 25,

    et la ligne 33 serait:

    if close<close[1] and MyMacd>0 and Bottom1>0 and close[1]<=Bottom1 and MyMacd[1]>0 then
    (et la ligne 35 si tu as besoin de la valeur bottom2 plus tard:
    bottom2=close[1]
    )
    #219723 quote
    Alai-n
    Participant
    Veteran

    Salut JC_Bywan j’ai apporté les modifications que tu préconises, mais plus rien ne fonctionne, plus rien ne s’affiche! Et pas sûr que l’on se soit bien compris, non plus… Je mets donc une image en support pour réitérer ma demande! Si je ne dis pas d’ânerie “Bottom1” est la partie en noire sur l’image soit Macd<0, ici je veux récupérer le close le plus bas. Ensuite lorsque Macd>0 soit la partie en vert je veux déclencher le signal eTrade dès qu’un low vient coter Bottom1(il est pas impossible que je dises des âneries, non plus ;)). En simplifiant au maximum je veux récupérer le close sur écran noir et déclencher eTrade sur low écran vert!

    Capture-decran-2023-08-24-114553.png Capture-decran-2023-08-24-114553.png
    #219756 quote
    JC_Bywan
    Moderator
    Master

    Effectivement j’avais compris l’inverse (et avec une erreur en modif de ligne33 en plus), désolé, on remplace les modifs par:

    Garder en ligne 14 le MyVariable=close

    Mettre des // devant la ligne 25

    Essayer la ligne33 ainsi:

    if low[1]<low and MyMacd>0 and Bottom1>0 and low[1]<=Bottom1 and MyMacd[1]>0 then
    (et la ligne 35 si tu as besoin de la valeur bottom2 plus tard:
    bottom2=low[1]
    )
    Alai-n and Florian thanked this post
    #219987 quote
    Alai-n
    Participant
    Veteran

    C’est super, cela fonctionne très bien comme ça…

    Encore merci JC_Bywan

    Bonne journée

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

Macd Inversion et Signal


ProBuilder : Indicateurs & Outils Personnalisés

New Reply
Author
author-avatar
Alai-n @alai-n Participant
Summary

This topic contains 14 replies,
has 3 voices, and was last updated by Alai-n
2 years, 6 months ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 08/10/2023
Status: Active
Attachments: 6 files
Logo Logo
Loading...