ProRealTime
Pour partager sur le trading automatique, nos algorithmes, nos backtests
Répondre • Page 1 sur 1

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é.

Re: Condition EA à l'aide de Heiken Ashi

par pingoo67 » 24 nov. 2017 15:28

Je n'ai pas ajouté tout le code pour simplifier. En réalité il y a plusieurs condition + celle du compteur de position à 0. Quand il est à 1 on ne prend pas de position.
Et je le réinitialise à 0 à 7H.
Cependant j'ai beau tester rien à faire ca ne fonctionne pas.
Voici avec les conditions :

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

if ((ConditionUn>0) && (ConditionDeux>0) && (ConditionTrois>0) && (ConditionQuatre>0) && (CouleurHH>0) && (PremOrdre>0) && (CompteurPosition==0 )) {
CompteurPosition=1;
"Prise de position"
}

:(

Re: Condition EA à l'aide de Heiken Ashi

par Euraed » 24 nov. 2017 16:36

OK, je vois un bug
1/ if (ValHeure==7)
ce n'est pas assez précis. Si par exemple tu passes une fois par minute, ou plus peu importe, tu vas constamment réinitialiser ton compteur. A 7h01, 7h02 etc même si entre temps une position a été ouverte.
En fonction de la fréquence de passage sur cette instruction il faudrait l'adapter avec un test sur heure minute seconde

Je vois que tu as 7 conditions à remplir pour entrer en position et qu'alors tu places le compteur à 1.
Cela devrait marcher
Comme ce n'est pas le cas, soit il y a une erreur sur le test ValHeure, soit il y a un reset du compteur ailleurs dans le code ( normalement sur la condition si fermeture position alors compteur=0), soit il ya une erreur sur l'instruction compteur=1 lors de l'ouverture de la position

Pour débugger ce genre de truc, normalement ton éditeur te permet en phase de test de mettre des points d'arrêt dans l'exécution du programme et de vérifier l'état des variables à ce moment là.
C'est laborieux mais efficace

Re: Condition EA à l'aide de Heiken Ashi

par BearIsDead » 24 nov. 2017 16:48

Euraed, tu fais bien de me corriger ce n'était pas clair : j'ai considéré que Pingoo montait une stratégie intraday, ce qui semble être le cas ? Pingoo? Je pensais pas ailleurs qu'il était sur prt, ce qui n'est pas le cas.

Sinon bien vu Euraed pour Valheure, je ne vois pas d'autre raison pour laquelle le compteur se remettrait à zéro.

Re: Condition EA à l'aide de Heiken Ashi

par pingoo67 » 24 nov. 2017 17:10

L'une des conditions est que l'EA ne peut prendre de position avant 8H, donc il peut réinitialiser sans soucis vu qu'aucune position ne sera prise.

Je n'arrive pas à comprendre pourquoi plus aucune position n'est prise lorsque j'ajoute cette condition :(

Re: Condition EA à l'aide de Heiken Ashi

par Euraed » 24 nov. 2017 17:47

Ah... difficile de jouer aux devinettes sans voir le code, mais cela pourrait éventuellement être parce que ton filtre sur 'pas de position avant 8h' t'empêcherait de passer sur l'ordre de reset du compteur à 7h.
Dans ce cas ton compteur serait toujours à 1, contrairement à ce que tu as dit, et donc plus aucune position prise puisque compteur=0 est l'une des 7 conditions à remplir pour ouvrir un ordre.

Re: Condition EA à l'aide de Heiken Ashi

par BearIsDead » 24 nov. 2017 19:10

Pingoo, comme mentionné par Euraed, il faudrait que tu sois plus précis sur le problème que tu rencontres. Je sais que c'est pas facile au début (je pense que tu débutes en programmation).

Re: Condition EA à l'aide de Heiken Ashi

par Euraed » 24 nov. 2017 19:14

Bearl :top:

Re: Condition EA à l'aide de Heiken Ashi

par pingoo67 » 28 nov. 2017 10:12

Après plusieurs tests les positions sont bien prisent mais la condition issu du compteur de position ne fonctionne pas.
Je ne voulais pas mettre tout le code sachant qu'il y a plus de 300 Lignes.

Les autres conditions ne sont testés qu'après l'initialisation du compteur :

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

if ((ConditionUn>0) && (ConditionDeux>0) && (ConditionTrois>0) && (ConditionQuatre>0) && (CouleurHH>0) && (PremOrdre>0) && (CompteurPosition==0 )) {
CompteurPosition=1;
Prise de position
}

Mais la condition n'est pas prise en compte.

Je dois me tromper quelque part c'est pas possible...

Merci pour votre aide

Re: Condition EA à l'aide de Heiken Ashi

par artes88 » 04 janv. 2019 01:05

Bonjour qqun aurait il le code sur prorealtime premium pour trader en condition de bougies Heiken Ashi. Je suis en train d'étudier cela en vue d'effectuer le trading automatique.

Par exemple
Open long après deux bougies ut_15 vertes
reverse apres deux bougies ut_15 rouges
et vice versa


Une EMA 9 et 21 peuvent faire office de restriction éventuelle.

Un truc du genre....

Merci d'avance pour vos idées et commentaires

Sujets similaires
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)
Sur MT4 je cherche a simplifier une condition...
par JFLB » 18 févr. 2020 00:18 (13 Réponses)