Bonjour,
j’ai codé quelques lignes pour me donner un signal de vente avec le point pivot Jour.
Le principe de croiser à la baisse le point pivot JOUR ( ou la hausse )
et je viens de me rendre compte que j’ai une erreur et pourtant j’utilise
l’expression crosses.
Dans l’image jointe le PP Jour n’est pas croisé à la baisse, et j’ai
la flèche noire qui s’affiche
Je joins le code , et je voudrais comprendre d’où vient l’erreur
Merci pour la réponse
// VALEUR JOUR
dh = DHigh(1)
dl = DLow(1)
// FIBONACCI AVEC POINTS PIVOTS
P = (dh + dl + DClose(1))/3
// HORAIRES D'AFFICHAGE DES SIGNAUX
TimeAchat = time >= 080000 and time <= 220000
TimeVente = time >= 080000 and time <= 220000
// --- // -- ---------------------------------------- SIGNAUX PIVOT JOUR -------------------------------------------------
if close crosses under P and TimeVente then
C = close
ENDIF
if CLOSE crosses under C - 3 then
DRAWARROWDOWN (barindex , High + 15 ) coloured(0,0,0) // Noir
ENDIF
if close crosses over P and TimeAchat then
D = close
ENDIF
if CLOSE crosses over D + 3 then
DRAWARROWUP (barindex , low - 5 ) coloured(0,191,255) // Deep Sky Blue
ENDIF
RETURN
provient l’erreur
En ligne 24, la condition pour faire apparaitre un signal est que la clôture passe sous C-3, mais même si C n’a pas été mis à jour en ligne 21 (pivot pas croisé), il a tout de même une ancienne valeur. Par exemple sur un graphe Dax UT15 cfd IG, C serait à 15864 depuis le 01/09 bougie de 14h30 à 14h45, et même si pas modifié le 02/09 au matin par ce non-cross, il y a bien passage sous vieille valeur 15864-3=15861.
Il faut donc décider le moment où une valeur de C n’est plus utile, pour réinitialiser C suffisamment haut, de sorte que le if de la ligne 24 ne puisse pas intervenir tant que C n’a pas été à nouveau placé en valeur exploitable par la ligne 21 (même chose respectivement pour réinitialisation de D suffisamment bas dans l’autre sens)
Par exemple comme ceci, en réinitialisant C (resp.D) juste après drawarrowdown (resp.up) si pas utilisé plus loin dans une autre partie du code:
// VALEUR JOUR
dh = DHigh(1)
dl = DLow(1)
// FIBONACCI AVEC POINTS PIVOTS
P = (dh + dl + DClose(1))/3
// HORAIRES D'AFFICHAGE DES SIGNAUX
TimeAchat = time > 080000 and time <= 220000
TimeVente = time > 080000 and time <= 220000
// --- // -- ---------------------------------------- SIGNAUX PIVOT JOUR -------------------------------------------------
if close crosses under P and TimeVente then
C = close
ENDIF
if CLOSE crosses under C - 3 then
DRAWARROWDOWN (barindex , High + 15 ) coloured(0,0,0) // Noir
C=10*high[1]
ENDIF
if close crosses over P and TimeAchat then
D = close
ENDIF
if CLOSE crosses over D + 3 then
DRAWARROWUP (barindex , low - 5 ) coloured(0,191,255) // Deep Sky Blue
D=0
ENDIF
RETURN C as "C", d as "D", P as "P"
Avec les c, d et p en ligne return, on peut visualiser avec et sans les réinitialisations pour voir leur impact avant/après.
Aussi, dans le cas où le but était de ne commencer qu’à 8h, “time” étant un horaire de fin de bougie et non de début, j’ai changé le time>=8h par un time>8h (mais si c’eétait intentionnel pour avoir un signal avant 8h il suffit de remettre le >=).
Merci JC_bywan.
Beaucoup d’explications que je vais appliquer.
Pour info, il n’y a rien d’autres dans le code que ce que j’ai envoyé.
Donc les explications me vont parfaitement et je comprends bien
ou j’ai fait les erreurs de codage.
Merci encore pour toutes ces explications.
Bonne soirée
Cordialement