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"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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"
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 !
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”
///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 ?
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…
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
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"
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
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 ???
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.
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 !!!
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.
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]) ?
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.
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