Vous manquez des opportunités de trading :
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Inscription
Se connecter
Vous acceptez la politique du site Web et les conditions d'utilisation
Si vous n'avez pas de compte, veuillez vous inscrire
Il n'y a pas de OnStart() dans les EA mais je comprends ce que vous voulez dire. Cependant, l'OP même en réponse à vos commentaires a dit et je cite :
Oui, je voulais dire OnTick(). Vous attachez encore trop d'importance à "pendant l'exécution de l'EA". Cela ne signifie pas nécessairement, ou même le plus plausiblement, "pendant que l'EA exécute son OnTick()", plutôt que "pendant que l'EA est attaché à un graphique, c'est-à-dire pendant toute sa durée de vie".
Nous avons besoin de plus d'informations de la part de paranoyakX.
Oui, je voulais dire OnTick(). Vous attachez encore trop d'importance à "pendant l'exécution de l'EA". Cela ne signifie pas nécessairement, ou même le plus plausiblement, "pendant que l'EA exécute son OnTick()", plutôt que "pendant que l'EA est attaché à un graphique, c'est-à-dire pendant toute sa durée de vie".
Nous avons besoin de plus d'informations de la part de paranoyakX.
Salut les gars,
Laissez-moi clarifier ceci. Mon code recherche un modèle très basique sur les barres précédentes et décidera si un ordre sera ouvert mais l'ouverture d'un nouvel ordre ne sera vérifiée que lorsqu'une nouvelle barre apparaîtra. Ce que je veux dire, c'est que j'attends la clôture de la dernière barre, puis je vérifie le modèle et si c'est bon, j'ouvre l'ordre. Donc l'ouverture d'un ordre se produit à l'ouverture de la nouvelle barre. Comme @jjc l'a dit, je garde les informations de base du modèle dans des variables globales, comme quand mon modèle a commencé et s'est terminé, quelle est la valeur la plus élevée et la plus basse, etc.
D'une manière ou d'une autre, si je dois réexécuter l'EA, je veux retrouver ces informations de base (barre de début et de fin de pattern, prix les plus hauts et les plus bas, etc) et remplir à nouveau mes variables globales, c'est pourquoi j'en ai besoin. J'utiliserai les informations de début et de fin pour décider quand fermer mon ordre. Il suffit donc qu'une nouvelle barre n'apparaisse pas à OnInit, pendant l'exécution de l'EA, ce n'est pas un problème.
Oui, je voulais dire OnTick(). Vous attachez encore trop d'importance à "pendant l'exécution de l'EA". Cela ne signifie pas nécessairement, ou même le plus plausiblement, "pendant que l'EA exécute son OnTick()", plutôt que "pendant que l'EA est attaché à un graphique, c'est-à-dire pendant toute sa durée de vie".
Nous avons besoin de plus d'informations de la part de paranoyakX.
Salut les gars,
Laissez-moi clarifier ceci. Mon code recherche un modèle très basique sur les barres précédentes et décidera si un ordre sera ouvert mais l'ouverture d'un nouvel ordre ne sera vérifiée que lorsqu'une nouvelle barre apparaîtra. Ce que je veux dire, c'est que j'attends la clôture de la dernière barre, puis je vérifie le modèle et si c'est bon, j'ouvre l'ordre. Ainsi, l'ouverture d'un ordre se produit à l'ouverture de la nouvelle barre. Comme @jjc l'a dit, je conserve les informations de base du modèle dans les variables globales, comme le moment où mon modèle a commencé et s'est terminé, quelle est la valeur la plus élevée et la plus basse, etc.
D'une manière ou d'une autre, si je dois réexécuter l'EA, je veux retrouver ces informations de base (barre de début et de fin de pattern, prix les plus hauts et les plus bas, etc) et remplir à nouveau mes variables globales, c'est pourquoi j'en ai besoin. J'utiliserai les informations de début et de fin pour décider quand fermer mon ordre. Il suffit donc qu'une nouvelle barre n'apparaisse pas à OnInit, pendant l'exécution de l'EA, ce n'est pas un problème.
Vous ne devriez PAS faire tout cela dans le OnInit(). Vous devriez faire toute cette logique (y compris la récupération) dans le OnTick(). C'est important ! Le faire dans OnInit() vous causera d'autres problèmes que vous n'avez pas prévus et laissera votre EA dans un état d'"initialisation" pendant que vous faites toute cette logique. Donc, faites-le bien ! Ne faites que votre initialisation (comme les variables, les vérifications des paramètres externes, etc.) dans OnInit() et tout le reste dans OnTick().
Non non non ! Je n'ai pas pu m'expliquer, désolé, j'exécute tout dans le OnTick, mais je vérifie simplement si ce tick appartient à une nouvelle barre et je fais mon personnel. Ce que j'exécute dans OnInit, c'est de retrouver les ordres et le modèle que j'ai calculé avant, de le recalculer. J'ai dit que ce que j'exécute à OnInit, c'est de trouver le modèle auquel appartient l'ordre actuellement ouvert.
J'espère que je peux expliquer.
Non non non ! Je n'ai pas pu m'expliquer, désolé, j'exécute tout dans le OnTick, mais je vérifie simplement si ce tick appartient à une nouvelle barre et je fais mon personnel. Ce que j'exécute dans OnInit, c'est de retrouver les ordres et le modèle que j'ai calculé avant, de le recalculer. J'ai dit que ce que j'exécute à OnInit, c'est de trouver le modèle auquel appartient l'ordre actuellement ouvert.
J'espère que je peux expliquer.
Oui, j'ai compris cela dans votre post ! Ce que je dis, c'est qu'il ne faut pas faire ça dans le OnInit(). Vous devriez trouver vos ordres et modèles et tout ce calcul dans le OnTick().
Définissez juste une variable statique locale dans OnTick() et faites toutes vos vérifications et définitions de modèles, puis mettez la variable à false.
Oui, j'ai compris cela dans votre post ! Ce que je veux dire, c'est qu'il ne faut pas faire ça dans le OnInit(). Vous devriez trouver vos ordres et vos modèles et tout ce calcul dans le OnTick().
Définissez juste une variable statique locale dans OnTick() et faites toutes vos vérifications et définitions de modèles, puis mettez la variable à false.
Désolé, je vous ai mal compris. Pourquoi ne pas le faire dans OnInit ? N'est-ce pas plus pratique ? Si je fais cela, pour chaque tick après le premier, je vais exécuter une instruction if qui ne sera pas toujours vraie. Je pense que c'est une charge inutile pour le code.
La raison d'être de OnInit n'est-elle pas d'initialiser quelque chose comme mes variables globales ?
J'espère pouvoir vous expliquer.
Je pense que nous avons besoin de voir du code pour être certains de ce dont vous parlez. Par exemple, il n'est pas clair si vous recherchez le modèle historique qui a généré un trade ouvert existant parce que (a) cela vous indique comment gérer le trade ouvert, où/quand le fermer, etc. ou (b) simplement pour dessiner quelques marqueurs sur le graphique expliquant à vous-même pourquoi le trade existant a été ouvert.
Je suis généralement d'accord avec le FMIC pour dire que vous devriez essayer d'en faire le plus possible dans OnTick(), et de garder le moins d'état possible dans les variables globales.
Désolé alors, je vous ai mal compris avant. Pourquoi je ne fais pas ce OnInit ? N'est-ce pas plus pratique ? Si je fais cela, pour chaque tick après le premier, je vais exécuter une instruction if qui ne sera pas toujours vraie. Je pense que c'est une charge inutile pour le code.
La raison d'être de OnInit n'est-elle pas d'initialiser quelque chose comme mes variables globales ?
Merci pour les conseils, voici une version très simple de mon code, ce n'est pas mon vrai code mais j'espère que ce sera plus clair.
Comme je l'ai dit, ce n'est pas le vrai code, la recherche de motifs etc. est juste un exemple. La raison pour laquelle j'ai ouvert ce fil de discussion est la fonction DetectExistingPattern().