Donchian Channel Tendance
Forums › ProRealTime forum Français › Support ProBuilder › Donchian Channel Tendance
- This topic has 15 replies, 2 voices, and was last updated 1 year ago by Nicolas.
-
-
02/01/2023 at 2:31 PM #208912
Bonjour,
Suite à un crosses over sur le “DonchianChannelUp” je souhaiterais faire perdurer le signal +1 comme dans le code ci-joint dans une fenêtre sous le prix. Et ce dans l’idée de pouvoir imbriquer d’autres conditions tant que “DonchianChannelUp” = +1
Un coup de pouce serait très apprécié !
Merci
DonchianChannelUp123456789101112131415/////////////////////////////////////////////////////////////////////////////////////////////////////////////////DnU = DonchianChannelUp[20]/////////////////////////////////////////////////////////////////////////////////////////////////////////////////U = DnU[1] crosses over DnU[2]/////////////////////////////////////////////////////////////////////////////////////////////////////////////////DonchianU = 0if U thenDonchianU = 1endif///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Return DonchianU as "DonchianU"///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////02/02/2023 at 11:19 AM #208937Je ne sais pas combien de temps tu comptes le faire perdurer, mais voilà une suggestion, on compte la quantité de bougies depuis la dernière occurrence de ce signal, ainsi tu peux exploiter cette distance en quantité de bougies comme tu l’entends:
123456789101112131415/////////////////////////////////////////////////////////////////////////////////////////////////////////////////DnU = DonchianChannelUp[20]/////////////////////////////////////////////////////////////////////////////////////////////////////////////////U = DnU[1] crosses over DnU[2]/////////////////////////////////////////////////////////////////////////////////////////////////////////////////if u thenstart=barindexendifDonchianU = barindex-start///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Return DonchianU as "DonchianU"///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////02/02/2023 at 1:36 PM #20894602/02/2023 at 3:12 PM #208956En l’écrivant comme ci-joint j’arrive à l’arrêter lorsqu’il rencontre un “crosses under” ! Cependant il recommence aussitôt à être supérieur à zéro alors même qu’il n’ y a pas encore eu un nouveau “crosses over” ?!?!
Dans l’idéal ce que je souhaiterais c’est d’avoir une valeur supérieure à 0 lorsqu’un “crosses over” se produit est qu’il reste croissant et ce tant qu’il n’ y a pas eu de “crosses under” et inversement une valeur inférieure à 0 suite à un “crosses under” et ce tant qu’il n’y a pas eu le prochain “crosses over”!!!
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
DnU = DonchianChannelUp[20]
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////
U = DnU[0] crosses over DnU[1]
D = DnU[0] crosses under DnU[1]
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////if U then
start1 = barindex
endifif D then
start2 = barindex
endifDonchianU = barindex-start2
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Return DonchianU as “DonchianU”
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////02/03/2023 at 1:03 PM #20902002/03/2023 at 1:46 PM #209024En effet je cherche à matérialiser lorsque le canal est croissant ou lorsqu’il est décroissant ! Avec un moyenne mobile classique c’est très simple Sma[0] <>Sma[1] et il est très rare qu’une moyenne mobile soit = à sa valeur précédente ! Concernant le canal de Donchian lui passe par de longue période d’égalité avec sa valeur précédente sans pour autant avoir changé de direction(tendance). Donc ce que je souhaiterais c’est avoir une valeur = à (+1 ) après un “Crosses Over” et ce tant que le canal est croissant en considérant qu’il reste croissant même lorsqu’il est égal à sa valeur précédente et ce tant qu’il ne fait pas un “Crosses Under” !!! Ensuite après le “Crosses Under” la valeur retournée doit être égale à (-1) et ce tant que la canal ne fait pas un nouveau “Crosses Over” etc…
02/03/2023 at 3:03 PM #209037Très bien, on a aussi l’indicateur Aroon qui représente ce type de comportement des plus hauts / plus bas (Donchian).
Sinon pour ton code, on passe une variable à 1 si le Donchian UP > à sa valeur précédente et on le repasse à 0 dés qu’il est inférieur.
1234567891011DnU = DonchianChannelUp[20]if dnu>dnu[1] thencamonte = 1endifif dnu<dnu[1] thencamonte = 0endifreturn camonte02/06/2023 at 11:05 AM #209212Bonjour Nicolas et merci pour ton retour.
Le code que tu proposes dans ton dernier post fonctionne très bien pour l’afficher dans une fenêtre sous le prix ! Je ne comprends pas comment, mais cela fonctionne… Je n’avais même tenté de la sorte car l’indicateur passe par des égalités avec sa valeur précédente.
Cependant lorsque je tente de l’intégrer dans un code plus complet comme dans l’exemple ci-dessous et bien mon problème persiste car dès que la valeur du Donchian est égale à la précédente plus rien ne déclenche!
Pourrais-tu éclairer ma lanterne ?
Merci
12345678910111213141516171819202122232425262728DnU = DonchianchannelUp[20]/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 1ère EcritureDBuy = open < close and Dnu > Dnu[1]//Cette formulation ne fonctionne que lorsque le Donchian est réellement supérieur à sa valeur précédente et pas tant qu'il est haussier//depuis le dernier "Crosses over"DonchianS = 0if DBuy thenDonchianS = 1endif/////////////////////////////////////////////////////////////////////////////////////////////////////////////////// 2ème EcritureDBuy = open < closecamonte = Dnu > Dnu[1]//Conclusion Identique à la première formulationDonchianS = 0if DBuy and camonte thenDonchianS = 1endif//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////Return DonchianS as "DonchianS"//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////02/06/2023 at 2:00 PM #209228En complément de mon précédent post je me suis lancé dans quelques tests pratiques !
L’idée de fond autour de ma demande consiste à déterminer un sens haussier si, suite à un “Crosses over” DnU[0] >=DnU[1] ou baissier suite à un “Crosses under” DnU[0] <=DnU[1] et d’y greffer d’autres conditions pour déterminer une entrée en position !
Graphiquement le code que tu m’as proposé s’affiche correctement soit en +1 soit en -1 comme dans les images ci-jointes. Cependant on constatera que sur la fenêtre des “Alertes”(image de droite) la condition +1 n’est pas “Vérifiée” si DnU[0] = DnU[1] et ce alors même que l’indicateur “= +1”, mais elle le devient par la suite si DnU[0]>DnU[1] !!!(illustration image 1 et 2)
Comment faire pour que la plateforme retienne que l’indicateur est haussier après un “Crosses Over” et ce jusqu’au “Crosses Under” suivant et inversement ???
02/06/2023 at 2:48 PM #209237Le code que j’ai proposé est plutôt simple. Dés la première occurrence d’une montée du donchian, l’indicateur passe à 1, dés qu’il descend il repasse à 0. Sinon il ne se passe rien, il continue à tracer la dernière valeur affectée.
Si tu pouvais m’expliquer ton projet en entier, ce serait plus simple pour te proposer une solution, merci.
02/06/2023 at 3:10 PM #209243Tu as tout dans le post #209228…Images à l’appuie.
Je souhaite déclencher des “Alertes” d’une part, j’ai donc besoin que la condition (+1) soit “Vérifiée” après un Crosses Over et ce jusqu’au moment d’un Crosses under, ce qui n’est pas le cas actuellement !
D’autre part je souhaiterais pouvoir intégrer la formulation dans des “Screener”, donc même problématique !!!
02/07/2023 at 9:26 AM #209278Je crois que tu es parti très loin si je puis me permettre 🙂
Tu as demandé que la valeur reste égale à elle même pour garder le signal en mémoire:
Donc ce que je souhaiterais c’est avoir une valeur = à (+1 ) après un “Crosses Over” et ce tant que le canal est croissant en considérant qu’il reste croissant même lorsqu’il est égal à sa valeur précédente et ce tant qu’il ne fait pas un “Crosses Under”
C’est bien ce que fait mon code plus haut.
Pour tester le signal, tu dois tester si la valeur actuelle est égale à 1 et celle qui la précède égale à 0. Tu obtiendras alors le signal lors du premier chandelier ou le canal recommence à monter.
02/07/2023 at 11:23 AM #209290On va simplifier au maximum !
Sur l’image jointe:
- Fenêtre du Haut le Prix + DonchianChannelUp[20]
- Fenêtre du Bas Ton indicateur post #209037
Question :
Comment puis-je déclencher une “Alerte” lorsque le DonchianChannelUp est Jaune et qu’une bougie est haussière (open[0] < close[0]) ?
02/07/2023 at 2:49 PM #209307On reprend mon code et on ajoute la condition pour la bougie verte:
1234567891011DnU = DonchianChannelUp[20]if dnu>dnu[1] thencamonte = 1endifif dnu<dnu[1] thencamonte = 0endifreturn camonte and close>opentu obtiendras alors un signal à 1 lorsque les 2 conditions sont réunies.
1 user thanked author for this post.
02/07/2023 at 3:58 PM #209309 -
AuthorPosts
Find exclusive trading pro-tools on