z0omParticipant
Average
Bonjour,
Je cherche à faire un indicateur pour détecter les débuts de vagues avec les bougies Heikin-Ashi.
Dans le cas d’une tendance haussière (au-dessus du nuage dans le système Ichimoku) :
- j’attends 0 ou 1 bougie verte (variable : strikeExpectedMax)
- puis entre 3 et 5 bougies rouges pour la respiration (variables : respirationExpectedMin et respirationExpectedMax)
- et une dernière clôture sous la mm20, la kijun ou la tenkan (système Ichimoku)
Parfois, ça marche bien (voir les flèches sur l’image 1), parfois, j’ai des erreurs (voir les flèches sur l’image 2).
Si vous pouviez m’aider à me débugger, ça serait top.
res = 0
i = 0
mm20 = Average[20](close)
tenkan = (Highest[9](High) + Lowest[9](Low)) / 2
kijun = (Highest[26](High) + Lowest[26](Low)) / 2
ssA = (tenkan[26] + kijun[26]) / 2
ssB = (Highest[52](High[26]) + Lowest[52](Low[26])) / 2
kumoUp = Max(ssA,ssB)
//kumoDown = Min(ssA,ssB)
HAopen = (HAopen + HAclose) / 2
HAclose = (Open + Close + High + Low) / 4
IF Close > kumoUp AND (Close < mm20 OR Close < kijun OR Close < tenkan) THEN
KO = 0
strike = 0
strikeExpectedMax = 1
WHILE (i <= strikeExpectedMax + 1 AND KO = 0) DO
IF (HAclose[i] > HAopen[i]) THEN
strike = strike + 1
ELSE
KO = 1
ENDIF
IF strike = strikeExpectedMax + 1 THEN
strike = 0
ENDIF
i = i + 1
WEND
respiration = 0
respirationExpectedMin = 3
respirationExpectedMax = 5
j = 0
WHILE (j <= respirationExpectedMax) DO
IF (HAclose[strike + j] < HAopen[strike + j]) THEN
respiration = respiration + 1
ELSE
KO = 1
ENDIF
j = j + 1
WEND
IF respiration >= respirationExpectedMin AND respiration < respirationExpectedMax THEN
res = 1
ENDIF
ENDIF
Return res AS "Warning"
A la lecture de ton code et de ton principe d’affichage des signaux de trading, je pense que le soucis se situe dans le bloc “respiration”, sauf si des bougies vertes intercalées ne te dérange pas, sinon c’est bien là.
Tu comptes les bougies baissières et si elles sont vertes, tu passes KO à 1, mais à quoi cela te sert-il ? Cette variable n’est pas réutilisée ?
z0omParticipant
Average
Merci pour ton aide. J’ai réussi à corriger. Effectivement, la variable “KO” n’était pas utilisée dans la 2ème boucle. Tu déchires, comme d’hab !
res = 0
i = 0
mm20 = Average[20](close)
tenkan = (Highest[9](High) + Lowest[9](Low)) / 2
kijun = (Highest[26](High) + Lowest[26](Low)) / 2
ssA = (tenkan[26] + kijun[26]) / 2
ssB = (Highest[52](High[26]) + Lowest[52](Low[26])) / 2
kumoUp = Max(ssA,ssB)
//kumoDown = Min(ssA,ssB)
HAclose = (Open + Close + High + Low) / 4
HAopen = (HAopen + HAclose) / 2
IF Close > kumoUp AND (Close < mm20 OR Close < kijun OR Close < tenkan) THEN
KO = 0
strike = 0
strikeExpectedMax = 1
WHILE (i <= strikeExpectedMax + 1 AND KO = 0) DO
IF (HAclose[i] > HAopen[i]) THEN
strike = strike + 1
ELSE
KO = 1
ENDIF
IF strike = strikeExpectedMax + 1 THEN
strike = 10
ENDIF
i = i + 1
WEND
respiration = 0
respirationExpectedMin = 3
respirationExpectedMax = 5
j = 0
KO = 0
WHILE (j <= respirationExpectedMax AND strike < 10 AND KO = 0) DO
IF (HAclose[strike + j] < HAopen[strike + j]) THEN
respiration = respiration + 1
ELSE
KO = 1
ENDIF
j = j + 1
WEND
IF respiration >= respirationExpectedMin AND respiration < respirationExpectedMax THEN
res = 1
ENDIF
ENDIF
Return res AS "Warning" // , strike AS "Strike", respiration AS "Respiration"