Macd Inversion et Signal
Forums › ProRealTime forum Français › Support ProBuilder › Macd Inversion et Signal
- This topic has 14 replies, 3 voices, and was last updated 1 year ago by Alai-n.
-
-
08/10/2023 at 3:58 PM #218907
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!)
123456789101112131415161718192021222324252627282930313233//////////////////////////////////////////////////////////////////////////////////////////Macd | Indicator////////////////////////////////////////////////////////////////////////////////////////MyMacd = Macd[12,26,9](close)////////////////////////////////////////////////////////////////////////////////////////MinBarRange = 3//BottomMacdMin = high[2]>high[1] and high[1]<high[0] and MyMacd[0]<0eTrade = 0//Bottomif MacdMin thenMacdMin1 = MyMacd[1]Bottom1 = low[1]for I = MinBarRange to 30if MacdMin[I] thenMacdMin2 = MyMacd[I + 1]Bottom2 =low[I + 1]If Bottom1<=Bottom2 and MacdMin1>MacdMin2 and MyMacd[0]>0 TheneTrade = 1endifbreakendifnextendif////////////////////////////////////////////////////////////////////////////////////////Return eTrade as "eTrade"////////////////////////////////////////////////////////////////////////////////////////08/10/2023 at 3:59 PM #21890808/18/2023 at 5:22 PM #21932108/19/2023 at 3:07 PM #219336Bonjour,
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
1 user thanked author for this post.
08/19/2023 at 5:21 PM #219347Bonjour,
ci joint fichiers indicateur semblant répondre à votre demande
1 user thanked author for this post.
08/19/2023 at 5:40 PM #219350et le proscreener associé
08/21/2023 at 3:17 PM #219435@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
08/21/2023 at 7:13 PM #219455Mea 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:
1234567891011121314151617181920212223242526272829303132eTrade=0MyMacd= Macd[12,26,9](close)if MyMacd>0 thenBACKGROUNDCOLOR(255,255,255)elseBACKGROUNDCOLOR(200,200,200)endifif MyMacd crosses under 0 thenbottom1=0//bottom2=0endifmavar= low // choisir low ou close ou autreplusbas1= mavar[2]>mavar[1] and mavar[1]<mavar and MyMacd<0plusbas2= mavar[2]>mavar[1] and mavar[1]<mavar and MyMacd>0if plusbas1 and (bottom1=0 or mavar[1]<=bottom1) thenMacdMin1= MyMacd[1]bottom1= mavar[1]endifif plusbas2 and bottom1>0 and mavar[1]<bottom1 and MyMacd[1]>0 thenMacdMin2= MyMacd[1]bottom2= mavar[1]eTrade= 1endifreturn eTrade as "eTrade"08/22/2023 at 2:15 PM #219487Bonjour 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
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162/////////////////////////////////////////////////////////////////////////////////////// Macd | Indicator/////////////////////////////////////////////////////////////////////////////////////MyMacd= Macd[12,26,9](close)/////////////////////////////////////////////////////////////////////////////////////if MyMacd>0 thenbackgroundcolor("darkolivegreen")elsebackgroundcolor("black")endif/////////////////////////////////////////////////////////////////////////////////////MyVariable = close // choisir low ou close ou autre/////////////////////////////////////////////////////////////////////////////////////eTrade=0if MyMacd crosses under 0 thenBottom1=0//Bottom2=0endifPlusbas1= MyVariable[1]<MyVariable and MyMacd<0Plusbas2= MyVariable[1]<MyVariable and MyMacd>0if Plusbas1 and (Bottom1=0 or MyVariable[1]<=Bottom1) thenMacdMin1= MyMacd[1]Bottom1 = MyVariable[1]endifif Plusbas2 and Bottom1>0 and MyVariable[1]<=Bottom1 and MyMacd[1]>0 thenMacdMin2= MyMacd[1]Bottom2 = MyVariable[1]eTrade = 1endif/////////////////////////////////////////////////////////////////////////////////////if MyMacd crosses over 0 thenTop1=0//Top2=0endifPlushaut1= MyVariable[1]>MyVariable and MyMacd>0Plushaut2= MyVariable[1]>MyVariable and MyMacd<0if Plushaut1 and (Top1=0 or MyVariable[1]>=Top1) thenMacdMax1= MyMacd[1]Top1 = MyVariable[1]endifif Plushaut2 and Top1<0 and MyVariable[1]>=Top1 and MyMacd[1]<0 thenMacdMax2= MyMacd[1]Top2 = MyVariable[1]eTrade = -1endif/////////////////////////////////////////////////////////////////////////////////////Return eTrade as "eTrade"/////////////////////////////////////////////////////////////////////////////////////08/23/2023 at 5:59 AM #219510Je 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 thenA tester avec ce changement pour voir s’il suffit à résoudre le cas des top ou s’il y autre chose…08/23/2023 at 5:51 PM #219583@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.
08/24/2023 at 6:21 AM #219602Si 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])08/24/2023 at 11:06 AM #219723Salut 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!
08/24/2023 at 7:57 PM #219756Effectivement 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]
)08/29/2023 at 9:16 AM #219987 -
AuthorPosts
Find exclusive trading pro-tools on