Bonjour…
Je souhaiterais solliciter votre aide pour finaliser l’indicateur ci-joint.
J’ai eu beau fouiller sur le site je n’ai pas trouvé les réponses à mes questions !
Je souhaiterais rajouter à cette petite formule simple une condition de validation et une condition d’invalidation.
1- Validation = Bougie clôture au-dessus du plus haut de la configuration en 3 bougies(dans cette formule cela sera soit au-dessus de
high[3] soit high[1])
2- Invalidation = Bougie clôture en-dessous du plus bas de la configuration en 3 bougies(soit low[2])
3- Si la configuration en 3 bougies que j’ai appelé “PriceActionSignal” devait se reproduire consécutivement sans que la précédente
ne soit “Validée” ou “Invalidée” alors on ne retiendra que la plus récente.
PS : J’espère avoir été limpide. Mais pour simplifier ma demande. Ce que je voudrais faire c’est récupérer un plus haut et un plus bas
dans une configuration à plusieurs bougies. Et valider ou invalider un signal [X] bougies après.
Par avance merci.
//"PriceActionSignal" la configuration graphique consiste à déterminer le bon moment pour ouvrir une position acheteuse sur le marché.
//Entrer en position lorsque le marché clôture au-dessus de la bougie dont le high est le plus haut.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Formulation de l'algorithme PriceActionSignal
PriceActionSignal = low[3] > low[2] and low[2] < low[1] and high[3] > high[2] and high[2] < high[1] //and close[0] > high[x]
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Signal = 0
// Représentation graphique PriceActionSignal
if PriceActionSignal then
//Drawcandle(open,high,low,close)coloured(255,99,71)
Signal = 1
endif
Return Signal as "Signal"
Bonjour,
pour essayer de t’avancer en espérant avoir compris ton signal, j’ai juste ajouté de quoi visualiser toutes les validations et invalidations en histogrammes après stockage dans des variables du haut voulu et du bas voulu. Pas trop le temps de rester, et sans doute que d’autres pourront intervenir aussi, mais en partant de là tu peux ou bien le garder tel quel vu que c’est juste un indicateur graphique à ce stade, ou bien peut-être garder une seule validation ou invalidation par signal en cours pour enlever les histogrammes superflus une fois validé/invalidé, tout dépend de ce que tu souhaites garder sous les yeux…
//"PriceActionSignal" la configuration graphique consiste à déterminer le bon moment pour ouvrir une position acheteuse sur le marché.
//Entrer en position lorsque le marché clôture au-dessus de la bougie dont le high est le plus haut.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Formulation de l'algorithme PriceActionSignal
PriceActionSignal = low[3] > low[2] and low[2] < low[1] and high[3] > high[2] and high[2] < high[1] //and close[0] > high[x]
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Signal = 0
// Représentation graphique PriceActionSignal
if PriceActionSignal then
//Drawcandle(open,high,low,close)coloured(255,99,71)
hautvoulu=max(high[1], high[3])
basvoulu=low[2]
Signal = 2
endif
Validation= close>hautvoulu
Invalidation= - (close<basvoulu)
Return Signal as "Signal", Validation coloured(0,255,0) style(histogram) as "Validation", Invalidation coloured(255,0,0) style(histogram) as "Invalidation"
Merci, je crois que je vais pouvoir avancer un peu grâce à toi… Les lignes 11 12 15 et 16 devrait m’aider à mettre en place ce que je cherche !
En rajoutant des conditions ligne 11 et 12, les lignes se mettent en “Erreur” ! Aurais-tu une idée ?
11 hautvoulu = max(high[1], high[2], high[3])
12 basvoulu = min(low[1], low[2], low[3])
La cause de l’erreur pour cette modification est que max() et min() ne s’utilisent que pour comparaison directe de 2 valeurs dans les parenthèses.
Tu peux soit faire un max d’une valeur et d’une 2e valeur étant elle-même un max de 2 valeurs: max(high[1], max(high[2], high[3]))
soit passer par highest avec la syntaxe suivante pour l’appliquer sur 3 valeurs, mais au rang précédent: highest[3](high)[1]
(c’était juste pour info sur la programmation, mais en pratique par définition du signal qui imposait déjà que high[2] est plus bas que les 2 autres, et low[1] et low[3] sont plus hauts que low[2], la modif n’est pas nécessaire)
Merci pour les infos. Mais je n’arrive toujours pas à le faire fonctionner !
Je reformule(code ci-joint).
1- Je veux déclencher un “Achat” lorsque une bougie clôture au-dessus du plus haut de ma configuration “PriceActionSignal”
2- Je veux invalider un possible “Achat” si une bougie clôture sous le plus bas de ma configuration “PriceActionSignal”
//"PriceActionSignal" la configuration graphique consiste à déterminer le bon moment pour ouvrir une position acheteuse sur le marché.
//Entrer en position lorsque le marché clôture au-dessus de la bougie dont le high est le plus haut.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Formulation de l'algorithme PriceActionSignal
PriceActionSignal = open[3] > close[3] and open[2] > close[2] and open[1] > close[1]
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Signal = 0
// Représentation graphique PriceActionSignal
if PriceActionSignal then
hautvoulu=max(high[1], max(high[2], high[3]))
basvoulu=min(low[1], min(low[2], low[3]))
Signal = 2
endif
Validation= close>hautvoulu
Invalidation= - (close<basvoulu)
Return Signal as "Signal"
Les niveaux à 1, 1.5 ou 2 n’ont pas une signification particulière, c’est juste pour visualiser plus vite, le résultat final étant l’histogramme vert “achat”
//"PriceActionSignal" la configuration graphique consiste à déterminer le bon moment pour ouvrir une position acheteuse sur le marché.
//Entrer en position lorsque le marché clôture au-dessus de la bougie dont le high est le plus haut.
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
once surveillerachat=0
// Formulation de l'algorithme PriceActionSignal
PriceActionSignal = low[3] > low[2] and low[2] < low[1] and high[3] > high[2] and high[2] < high[1] //and close[0] > high[x]
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Signal = 0
achat = 0
// Représentation graphique PriceActionSignal
if PriceActionSignal then
hautvoulu=max(high[1], high[3])
basvoulu=low[2]
Signal = 1.5
surveillerachat=1
endif
Validation= close>hautvoulu
Invalidation= - (close<basvoulu)
if surveillerachat=1 and validation and not PriceActionSignal then
achat=2
surveillerachat=0
elsif surveillerachat=1 and Invalidation=-1 then
surveillerachat=-1
endif
Return Signal as "Signal", surveillerachat style(dottedline,1) as "surveillerachat", achat coloured(0,255,0) style(histogram) as "achat"//Validation coloured(0,255,0) style(histogram) as "Validation", Invalidation coloured(255,0,0) style(histogram) as "Invalidation"
Bonjour… Tu m’as un peu perdu là !!! Je vais essayer de comprendre tout ça ce week end. Merci
L’idée, c’est que puisque “priceactionsignal” ne dure qu’une barre, et que la validation/invalidation se fait sur une autre barre, il faut séparer quand le code doit guetter une validation/invalidation de quand il ne le doit pas. C’est le rôle joué par la variable “surveillerachat”, qui est à mise à 1 quand il faut surveiller à partir d’un nouveau “priceactionsignal”, puis passe à 0 si un achat est fait, ou à -1 quand il y a invalidation (juste pour visualiser, aurait pu être à 0 aussi).
J’ai enfin saisi… ! Merci
Si j’ai 4 high à surveiller pour déclencher une validation, j’écris ça comment ???
hautvoulu=max(high[1], high[3]) /Pour deux high
hautvoulu=max(high[1], max(high[2], high[3])) / Pour trois high
Et pour Quatre ???
Est ce que cela peut ressembler à ceci pour Quatre High “max(high[1],max(high[2], max(high[3], high[4])))” ???
Oui,
ou bien aussi: hautvoulu=highest[4](high)[1]
ou encore pour être complet une variante: mettre en mémoire dans X le plus grand high de la barre en cours et des 3 barres précédentes X=highest[4](high), et utiliser hautvoulu=X[1] pour avoir le plus grand high des 4 barres précédentes