Programmation asynchrone et multithread dans MQL - page 30

 
fxsaber:

On parle d'un cinq.

Aviez-vous que result.order==0 && result.deal==0 ?

 
Andrey Barinov:

...

Au fait, toutes les informations ci-dessus n'annulent pas le conseil que je vous ai donné de ne plus utiliser EventChartCustom() et de passer complètement aux ressources. Croyez-moi, cette méthode est meilleure et plus universelle. Et le modèle peut être appliqué à un graphique ordinaire, en définissant CHART_SHOW 0 (afin qu'il ne reçoive pas d'événements inutiles).

 
Andrey Barinov:

Aviez-vous que result.order==0 && result.deal==0 ?

&& non. Mais Resultat.deal == 0 - ce n'est pas suffisant. De plus, il est dangereux d'agir lorsque l'historique des transactions n'a pas encore eu le temps de se synchroniser.

 
Bien sûr, cette option de multithreading est coûteuse, mais s'il n'y en a pas d'autre, elle résoudra le problème. A peine.)
 
fxsaber:

&& - non. Mais Resultat.deal == 0 - ce n'est pas suffisant. De plus, il est dangereux d'agir lorsque l'historique des transactions n'a pas encore eu le temps de se synchroniser.

Donnez-moi un exemple de problème. Jusqu'à présent, cela m'a toujours suffi pour savoir que la commande avait été envoyée.

 
Andrey Barinov:

Donnez-moi un exemple de problème. Jusqu'à présent, j'ai toujours été satisfait des informations relatives à l'envoi de la commande.

Il y a beaucoup de nuances, je ne peux pas me souvenir de toutes en même temps. En un coup d'œil

  • Un ordre au marché est passé avec succès. Il est devenu vrai et 10009. Mais il n'a pas encore été exécuté.
  • La position est fermée, mais il n'y a aucune mention de celle-ci dans l'historique des transactions.
  • L'ordre est exécuté et la position est ouverte. Mais l'ordre n'a pas encore été supprimé du terminal. Ainsi, l'ordre et la position existent simultanément dans le terminal. Leurs étiquettes sont les mêmes.
 
fxsaber:

Il y a beaucoup de nuances, je ne peux pas me souvenir de toutes en même temps. En un coup d'œil

  • L'ordre de marché est passé avec succès. Nous avons obtenu True et 10009. Mais il n'a pas encore été exécuté.
  • La position est fermée, mais il n'y a aucune mention de celle-ci dans l'historique des transactions.
  • L'ordre est exécuté et la position est ouverte. Mais l'ordre n'a pas encore été supprimé du terminal. Ainsi, l'ordre et la position existent simultanément dans le terminal. Leurs étiquettes sont les mêmes.

Il y a en effet beaucoup de nuances. Vous avez vous-même résolu bon nombre de ces problèmes dans MTOrders.

Je construis ma logique de trading de telle manière que l'information result.order me suffit. Pendant plusieurs années, il n'y a pas eu de tâches (problèmes) insolubles.

P.S. Déjà hors sujet.

 
Andrey Barinov:

Peter, tu ne comprends pas.

Il n'y a qu'un seul conseiller. Il s' exécute en outre sur un graphique invisible, uniquement en mode agent. Il n'y a AUCUN événement en cours sur l'agent. Cela signifie que la ressource ne peut pas être interrogée de quelque manière que ce soit, que la minuterie n'est pas démarrée, qu'aucun tic n'arrive.

Le conseiller expert peut multiplier autant de ces agents qu'il le souhaite. Chacun d'entre eux devient un fil distinct.

Pouvez-vous clarifier cette affirmation une fois de plus ? Si un modèle est appliqué à un graphique ordinaire et qu'une copie de l'EA est lancée, tous les événements arriveront normalement. N'est-ce pas ?

Et si le modèle est appliqué à _OBJ_CHART, comment l'EA peut-il même fonctionner dessus si même les ticks ne viennent pas ?

 
Andrey Barinov:

Il y a vraiment beaucoup de nuances. Vous avez vous-même résolu bon nombre de ces problèmes dans MTOrders.

J'ai tout résolu là-bas.

Je construis ma logique de trading de telle sorte que je dispose de suffisamment d'informations sur les résultats et les ordres. Pendant plusieurs années, il n'y a pas eu de tâches (problèmes) insolubles.

Vous devez prendre certains serveurs.

P.S. Déjà hors sujet.

Oui, finissons-en.

 
Реter Konow:

Pouvez-vous expliquer à nouveau cette déclaration ? Après tout, si vous appliquez un modèle à un graphique normal et exécutez une copie de l'EA, tous les événements se produiront normalement. N'est-ce pas ?

Et si un modèle est appliqué à _OBJ_CHART, comment peut-il y fonctionner entièrement si même les tics ne viennent pas ?

Le tableau normal contient tous les événements. L'OBJ_CHART n'a que OnChartEvent où l'EA principal envoie OnTick et OnTimer si nécessaire.