Donchian Channel Tendance

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

    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

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    DnU = DonchianChannelUp[20]
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    U = DnU[1] crosses over DnU[2] 
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    DonchianU = 0
    
    if U then
    DonchianU = 1
    endif
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Return DonchianU as "DonchianU"
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #208937 quote
    Nicolas
    Keymaster
    Master

    Je 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:

    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    DnU = DonchianChannelUp[20]
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    U = DnU[1] crosses over DnU[2] 
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    
    if u then 
     start=barindex
    endif 
    
    DonchianU = barindex-start
    
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Return DonchianU as "DonchianU"
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    #208946 quote
    Alai-n
    Participant
    Veteran

    Bonjour Nicolas,

    Et si je souhaitais faire perdurer le signal jusqu’au prochain “crosses under” cela donnerait quoi ?

    J’ai tenté de l’écrire seul mais je n’ai pas réussi !

    #208956 quote
    Alai-n
    Participant
    Veteran

    En 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
    endif

    if D then
    start2 = barindex
    endif

    DonchianU = barindex-start2

    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Return DonchianU as “DonchianU”
    ///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

    #209020 quote
    Nicolas
    Keymaster
    Master

    Désolé j’ai du mal à saisir ce que tu cherches à faire, selon moi tu cherches à trouver l’instant où le haut du canal grimpe et l’instant où celui ci descend, c’est bien cela ?

    #209024 quote
    Alai-n
    Participant
    Veteran

    En 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…

    #209037 quote
    Nicolas
    Keymaster
    Master

    Trè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.

    DnU = DonchianChannelUp[20]
    
    if dnu>dnu[1] then 
     camonte = 1
    endif
    
    if dnu<dnu[1] then 
     camonte = 0
    endif 
    
    return camonte
    #209212 quote
    Alai-n
    Participant
    Veteran

    Bonjour 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

    DnU = DonchianchannelUp[20]
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 1ère Ecriture
    DBuy  = 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 = 0
    if DBuy then
    DonchianS = 1
    endif
    
    
    /////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    // 2ème Ecriture
    DBuy  = open < close
    camonte = Dnu > Dnu[1]
    //Conclusion Identique à la première formulation
    
    DonchianS = 0
    if DBuy and camonte then
    DonchianS = 1
    endif
    
    
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Return DonchianS as "DonchianS"
    //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
    Capture-decran-2023-02-06-104849.png Capture-decran-2023-02-06-104849.png
    #209228 quote
    Alai-n
    Participant
    Veteran

    En 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 ???

    1.png 1.png 2.png 2.png
    #209237 quote
    Nicolas
    Keymaster
    Master

    Le 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.

    #209243 quote
    Alai-n
    Participant
    Veteran

    Tu 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 !!!

    #209278 quote
    Nicolas
    Keymaster
    Master

    Je 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.

    #209290 quote
    Alai-n
    Participant
    Veteran

    On 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]) ?

    ceci.png ceci.png
    #209307 quote
    Nicolas
    Keymaster
    Master

    On reprend mon code et on ajoute la condition pour la bougie verte:

    DnU = DonchianChannelUp[20]
    
    if dnu>dnu[1] then 
     camonte = 1
    endif
    
    if dnu<dnu[1] then 
     camonte = 0
    endif 
    
    return camonte and close>open

    tu obtiendras alors un signal à 1 lorsque les 2 conditions sont réunies.

    Alai-n thanked this post
    #209309 quote
    Alai-n
    Participant
    Veteran

    Ca fonctionne, super… Je ne comprends pas du tout comment et encore moins que l’on puisse mettre close>open dans le Return. Mais cela fonctionne !

    Merci

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

Donchian Channel Tendance


ProBuilder : Indicateurs & Outils Personnalisés

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

This topic contains 15 replies,
has 2 voices, and was last updated by Nicolas
3 years, 1 month ago.

Topic Details
Forum: ProBuilder : Indicateurs & Outils Personnalisés
Language: French
Started: 02/01/2023
Status: Active
Attachments: 4 files
Logo Logo
Loading...