Programmation asynchrone et multithread dans MQL - page 27

[Supprimé]  
Roman:

J'ai commencé à relire le sujet et Igor a déjà écrit à ce sujet.

C'est ce que j'essayais de dire, Yuri, que nous devons allouer de la mémoire et enregistrer le thread.
Igor dit que vous devez allouer et enregistrer, alors que vous dites que vous n'avez rien à faire.
C'est pour ça que j'ai la tête qui tourne. Le résultat est une impasse.

Igor a étudié à l'université en tant que spécialiste, et il devrait en savoir plus que nous autres autodidactes.
Dès le début, j'étais enclin à la même idée - que la mémoire doit être allouée et initialisée.
L'initialisation et l'allocation de la mémoire sont la clé d'un codage correct, car elles ne doivent pas couler et ne doivent pas être des déchets.

Je demande donc à Igor de m'expliquer comment le faire en C++ ?
Pas en mots, avec un exemple, je ne comprends rien ;))

Mec, tu ne peux pas faire du multithread sur les pros, sans vouloir te vexer. Mais si vous êtes d'humeur massacrante, lisez et comprenez :

https://en.cppreference.com/w/cpp/thread

https://en.cppreference.com/w/cpp/atomic

Si vous avez besoin d'un exemple, voyez ci-dessous :

https://en.cppreference.com/w/cpp/thread/thread/join

https://en.cppreference.com/w/cpp/thread/async


Encore une fois, il s'agit d'un sujet délicat, facile à nagovonoko (par exemple, décrocher d'un thread spawné qui se détruit plus tard que les données partagées, optimisation du compilateur s'il n'y a pas de synchronisation appropriée et bien d'autres choses encore).

 
Реter Konow:
Je propose d'utiliser l'indicateur comme support de l'interface graphique, et les ressources - pour la communication avec le conseiller expert. En outre, dans MT4, vous serez en mesure de contrôler le testeur Expert Advisor à partir d'un graphique standard en utilisant le panneau. Toutes les commandes fonctionneront, pas seulement les boutons. Vous pourrez envoyer du texte et n'importe quoi d'autre à l'EA en cours de test. Je l'ai déjà testé. Tout fonctionne.

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. C'est-à-dire que la ressource ne peut pas l'appeler, la minuterie ne démarre pas, les tics n'arrivent pas.

Si l'indicateur déclenche un EA, il s'agit de deux entités.

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

 
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. C'est-à-dire que la ressource ne peut pas l'appeler, la minuterie ne démarre pas, les tics n'arrivent pas.

Si l'indicateur déclenche un EA, il s'agit de deux entités.

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

Vous voulez dire comme se lancer en mode agent sur une carte invisible ? C'est quelque chose de nouveau. Je n'étais pas au courant.
 
Реter Konow:
Vous voulez dire comme s'exécuter en mode agent sur un graphique invisible ? C'est quelque chose de nouveau. Je n'étais pas au courant.

ChartApplyTemplate

 
Andrey Barinov:

Peter, tu ne comprends pas.

...

Un conseiller peut avoir autant de ces agents qu'il le souhaite. Chacun d'eux sort comme un flux séparé.

Le multithreading existe donc déjà ? Et personne ici ne le sait ?

 
Andrey Barinov:

Il n'y a qu'un seul conseiller. Il fonctionne aussi tout seul.

Le testeur KB a le même principe. Avez-vous réussi à résoudre le problème du débogage d'un tel EA ? Lorsque le testeur a été réalisé sur ce principe, l'inconvénient de son écriture résidait dans la difficulté de son débogage.

 
Реter Konow:

Puis il s'avère que le multithreading existe déjà ? Et personne ici ne le sait ?

Cela s'appelle "ne pas entendre son interlocuteur".

Forum sur le trading, les systèmes de trading automatisé et les tests de stratégies de trading

Programmation asynchrone et multithread dans MQL

fxsaber, 2019.07.25 12:16

Dans MQL uniquement, les deux tâches sont résolues par l'exécution automatique d'un comptage EA.

 
Реter Konow:

Cela signifie-t-il que le multithreading existe déjà ? Et personne ici ne le sait ?

C'est un truc bien connu. Ce n'est pas moi qui l'ai inventé. C'est moi qui l'ai inventé sur un forum il y a plusieurs années.

 
fxsaber:

Le testeur CB a le même principe. Avez-vous réussi à résoudre le problème du débogage d'un tel EA ? Lorsque je faisais le testeur sur ce principe, l'inconvénient de l'écrire était la difficulté de le déboguer.

Imprimer, ASSERT, DEBUG. Je n'utilise pas le débogueur standard dans ce cas...

 
Andrey Barinov:

C'est un truc bien connu. Ce n'est pas moi qui l'ai inventé. Je l'ai eu sur un forum il y a quelques années.

Dans quelle mesure ce "multithreading" correspond-il à sa notion ? Est-il possible de diviser les tâches d'un programme en threads en utilisant cette fonction ?