ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests

Condition EA à l'aide de Heiken Ashi

par pingoo67 » 22 nov. 2017 22:19

Bonsoir à tous,

Je travail sur un EA depuis quelques temps cependant j'ai un problème de fiabilité sur l'une de mes conditions.
Celle-ci est simple, lorsque l'indicateur Heiken ashi passe de baissier(Rouge) à Haussier(vert) on valide la condition.
Pour simplifier le marché baisse donc Heiken ashi rouge. Le marché s'arrête et la bar en affichage Heiken ashi passe au vert donc condition validée.

J'ai donc utilisé le calcul traditionnel en décalent de 1 afin d'avoir la "couleur" de la bar précédente :

haOpen=(Open[2]+Close[2])/2;
haClose=(Open[1]+High[1]+Low[1]+Close[1])/4;
if(haOpen<haClose)
{
CouleurHH = 1; // Couleur Bougie Heiken ashi : Vert
}
else
{
CouleurHH = 0; // Couleur Bougie Heiken ashi : Rouge
}
Je me suis rendu compte après plusieurs test que sur le graphique l'indicateur n'était pas toujours identique au codage ci-dessus.

Je ne sais pas si quelqu'un peut m'aider.

merci

Re: Condition EA à l'aide de Heiken Ashi

par Euraed » 23 nov. 2017 13:07

Le code n'est pas assez complet pour comprendre d'où vient le bug.
D'après ton code et Heikin Ashi , la valeur 2 dans Open[2]+Close[2] devrait correspondre à l'état antérieur.
Et la valeur 1 pour le présent

Je suis allé chercher les formules sur internet:

xClose = (Open+High+Low+Close)/4
o Average price of the current bar

xOpen = [xOpen(Previous Bar) + xClose(Previous Bar)]/2
o Midpoint of the previous bar

xHigh = Max(High, xOpen, xClose)
o Highest value in the set

xLow = Min(Low, xOpen, xClose)
o Lowest value in the set

Je n'ai pas l'impression que ton code respecte ces formules et que tu mélanges passé et présent dans ton indexation. Si 2 est bien la valeur du passé, alors
haOpen=(haOpen[2]+haClose[2])/2

Et mis à part une question de lisibilité du code, je ne vois pas trop l'intérêt de travailler avec une variable Couleur. Pour moi autant faire au plus simple et traiter directement la logique algorithmique avec les xclose etc

Mais peut être que d'autres programmeurs plus compétents que moi pourront s'exprimer

Re: Condition EA à l'aide de Heiken Ashi

par pingoo67 » 23 nov. 2017 14:22

Tout d'abord merci pour ton aide :)

En théorie le Open[0] et le "bars" en cours, [1] la bars précédente et ainsi de suite.
Donc d'après mon code il devrait me donner le sens (Couleur) de la bar au format Heiken ashi précédente non?

Ce n'est pas la couleur qui m'importe mais le sens matérialisé par la couleur.
Que veux-tu dire par les "xclose"?

Ma condition est simple, si la bar en Heiken ashi précédente passe en mode "Hausse" et par conséquent haOpen<haClose, dans ce cas ma condition est validé.

Je n'arrive pas à comprendre ou est mon erreur :s

Re: Condition EA à l'aide de Heiken Ashi

par Euraed » 23 nov. 2017 15:23

J'ai regardé la définition du Heikin Ashi. Le haOpen est construit à partir des haOpen et haClose de la barre précédente ! pas de l'OHLC en cours. C'est là que se trouve ton erreur + une autre dans l'indexation du temps

si 0 est le présent et 1 la barre précédente alors
haClose = (Open(0) + High(0) + Low(0) + Close(0)) / 4
haOpen = (Heikin AshiOpen(1) + haClose(1)) / 2

L'Heikin Ashi est partiellement auto-référentiel: pour construire chaque nouvelle barre il s'appuie sur un mix de l'Heikin Ashi précédent et de l'OHLC du signal en cours. Ta formule haOpen ne s'appuyait que sur l'OHLC en cours. Tu as donc construit un indicateur Heikin Pingoo :mrgreen:
Voilà ce que faisait ton code:
Tu construisais la moyenne nommée faussement haOpen entre open et close d'il y a deux barres, puis tu construisais la moyenne OHLC d'il y a une barre pour déterminer une décision concernant la prochaine barre.
ça fait une barre de retard et ce n'est pas du tout du heikin ashi.

Si tu parles anglais, la construction du heikin ashi est très bien expliquée ici
http://stockcharts.com/school/doku.php?id=chart_school:chart_analysis:heikin_ashi


NB: Une fois la construction d'Heikin Ashi intégrée, on peut remarquer que comparer la valeur actuelle et précédente d'une moyenne mobile, quelle qu'elle soit, te donnera un résultat très similaire puisque tu veux identifier la tendance, et c'est plus simple.
Heikin Ashi a été construit je pense pour l'interprétation visuelle par un humain or un robot n'a pas d'yeux...

Re: Condition EA à l'aide de Heiken Ashi

par pingoo67 » 23 nov. 2017 17:08

En voila une idée qu'elle est bonne. Vais partir sur un croisement de MM au plus proche de l'indicateur. Ce qui sera plus clair et plus facile à travailler.

Merci beaucoup pour ton aide

Bonne fin de journée

Re: Condition EA à l'aide de Heiken Ashi

par pingoo67 » 23 nov. 2017 17:34

Dernière petite question, je ne souhaite prendre qu'une position par jour et par "marché" ou "symbole", cependant je n'arrive pas à coder cela.
Pouvez-vous m'aiguiller?

merci

Re: Condition EA à l'aide de Heiken Ashi

par BearIsDead » 23 nov. 2017 22:51

Salut Pingoo. Je pense que le plus simple (si j'ai bien compris ta question) est
*avoir 1 variable compteur que tu incrémentes de 1 quand tu prends ta position.
*vérifier si compteur =1 alors ne pas prendre de position
*remettre compteur à 0 à minuit (if time = 000000)

Re: Condition EA à l'aide de Heiken Ashi

par Euraed » 24 nov. 2017 01:21

euh.. ok pour le compteur par marché, mais si tu le remets à 0 à minuit tu prendras une deuxième position si une première est toujours ouverte à ce moment et ainsi de suite. A la limite au bout de 20 jours tu pourrais te retrouver avec 20 positions ;)

Donc le compteur n'est pas à reseter à minuit mais lors de la fermeture de la première position

Je conseille également d'avoir un compteur global pour tous les marchés (somme des compteurs individuels), dans l'hypothèse où tu ne voudrais pas cumuler

Re: Condition EA à l'aide de Heiken Ashi

par pingoo67 » 24 nov. 2017 10:04

Ok pour le compteur. Je vais peut être passer pour un idiot cependant je n'arrive pas à l'incrémenter de façon définitive et le réinitialiser à une heure précise.

int CompteurPosition;
if (ValHeure==7) {
CompteurPosition=0;
}
if (CompteurPosition==0 ) {
CompteurPosition=1
}

En ce qui concerne les doubles positions pas de soucis, j'ai une condition qui n'autorise qu'une position à la fois :)

merci :) :)

Re: Condition EA à l'aide de Heiken Ashi

par Euraed » 24 nov. 2017 15:05

Tu as deux propositions contradictoires:
S'il est 7h alors passer compteur à 0
Si le compteur est à 0 le passer à 1.
Il doit manquer une partie du code car avec cela le compteur sera justement toujours à 1


la logique serait la suivante
Initialisation de la valeur par défaut du compteuri à 0
Si ouverture positioni alors compteuri =1 (attention, ce n'est pas 'si position ouverte' qui est un état, là c'est une transition ponctuelle, un changement d'état)
Si fermeture positioni alors compteuri=0
A 7H compteuri=0 (mais qu'arrive t'il si la position est encore ouverte ? je ne pense pas qu'il faille remettre le compteur à 0 ou alors ce n'est plus un compteur mais une sorte d'indicateur booléen)

Le i est là pour différencier tes différents supports. i sera différent selon le support tradé.

Sujets similaires
Aide configuration HEIKEN ASHI
par HellionReign » 11 déc. 2019 23:22 (4 Réponses)
Code du Heiken Ashi
par z0om » 14 oct. 2016 19:12 (5 Réponses)
Renko est efficace face à Heiken Ashi ?
Fichier(s) joint(s) par Burzum » 01 avr. 2018 14:38 (9 Réponses)
Les limites des bougies Heiken Ashi
par Cinquième » 03 août 2019 18:11 (10 Réponses)
Heiken Ashi question
par Amarantine » 04 sept. 2019 12:39 (4 Réponses)
Heiken-Ashi vs chandelier
Fichier(s) joint(s) par Marubozu » 04 mai 2020 11:07 (4 Réponses)
Problème intégration Heiken Ashi
par Log » 29 sept. 2021 07:35 (24 Réponses)
Mute du son / condition
par StephD » 17 juil. 2013 10:17 (16 Réponses)
libre office calcul ajouter condition à une heure
par dede6363 » 19 sept. 2015 18:10 (8 Réponses)
Limit order sous condition sous MT5 ....
par Trds » 25 sept. 2019 03:10 (1 Réponses)