Programmation asynchrone et multithread dans MQL - page 28

 
Andrey Barinov:

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

Oui, c'est un inconvénient. Presque comme dans l'ancien MQL4.

 
Реter Konow:
Et comment ce "multithreading" correspond-il à sa notion ? Est-il possible de diviser les tâches du programme en threads à l'aide de cette fonction ?

Pour certaines tâches, 100%. Par exemple, vous devez gérer des transactions - Trawl ou autre chose.

Cette tâche peut être exécutée sur l'agent à chaque tick aussi longtemps que vous le souhaitez et l'interface graphique fonctionnera toujours.

 
Andrey Barinov:

Avec ce système, les protections sont faites

  • Contre quelqu'un qui ferme OBJ_CHART. Par exemple, le script "intelligent" de quelqu'un.
  • Le mécanisme de l'événement ami ou ennemi n'est pas seulement le fait de l'ID.
Échange de données via des fichiers - aucun problème physique avec le disque ? Il me semble que tous les copieurs du marché font quelque chose d'affreux à cause de cette synchronisation.


Quel drapeau utilisez-vous pour identifier le mode EA esclave/maître ? Si j'utilise OBJ_CHART, c'est un esclave. Et dans MT4 ? Mon entrée était une date, donc j'ai facilement résolu le problème en utilisant une date négative. Mais je ne l'ai pas essayé sans contribution.

 
Andrey Barinov:

Pour certaines tâches, 100%. Par exemple, vous devez gérer des transactions - Trawl ou autre chose.

Cette tâche peut être exécutée sur l'agent à chaque tick aussi longtemps que vous le souhaitez et l'interface graphique fonctionnera toujours.

C'est toujours une forêt sombre. La fonction enregistre le modèle de graphique et ensuite, puis-je ouvrir un nouveau graphique à partir de l'EA et y appliquer le modèle enregistré, et ce faisant, une copie de l'EA fonctionnera sur ce graphique ?
 
fxsaber:

Avec ce système, les protections sont faites

  • Contre quelqu'un qui ferme OBJ_CHART. Par exemple, le script "intelligent" de quelqu'un.
  • Le mécanisme de l'événement ami ou ennemi n'est pas seulement le fait de l'ID.
Échange de données via des fichiers - aucun problème physique avec le disque ? Il me semble que tous les copieurs du marché font quelque chose d'affreux à cause de cette synchronisation.

Oui, une protection est nécessaire, comme toujours.

Les fichiers doivent être utilisés à bon escient. Seulement en cas de besoin. Après tout, seuls les moments de changements significatifs d'environnement/état que l'agent lui-même ne peut pas reconnaître sont synchronisés.

Les copieurs travaillent généralement sur un VPS, donc ce n'est pas vraiment un problème.

 
Andrey Barinov:

Les copieurs travaillent généralement sur un VPS, donc ce n'est pas trop effrayant.

Pauvre VPS... ci-dessus a complété la question.

 
Реter Konow:
Toujours une forêt sombre. La fonction crée une copie sauvegardée du graphique et ensuite, puis-je ouvrir un nouveau graphique à partir de l'EA et exécuter le modèle sauvegardé sur celui-ci, et ce faisant, la copie de l'EA fonctionnera sur ce graphique ?

L'utilisateur place l'EA sur un graphique vierge.

2. L'EA crée un modèle (avec lui-même sur le graphique)

3. Le conseiller expert crée un nouveau graphique (OBJ_CHART ou un graphique normal dans le cas de MT4).

4. Le conseiller expert applique le modèle au nouveau graphique.

5. Une copie de l'EA démarre sur le nouveau graphique, maintenant il devrait comprendre que c'est l'agent, pas l'EA principal :)

6. Ils commencent à communiquer.

Ils vivent heureux et meurent le même jour :)

 
fxsaber:

Pauvre VPS... ci-dessus a complété la question.

Vous ne pouvez pas faire de copie sans fichiers (pour le marché). Et la synchronisation des fichiers de l'environnement commercial entre les terminaux prend beaucoup plus d'opérations que la synchronisation entre les agents.


L'agent dans MT4 est déterminé par la présence de variables globales appropriées qui sont définies par l'EA principal avant d'appliquer un modèle à un nouveau graphique.

 
fxsaber:

Pauvre VPS... ci-dessus a complété la question.

Il faut tenir compte du fait que le système d'exploitation n'écrase pas les écritures sur le disque, il sait comment mettre en cache. Je ne me souviens plus où, mais il y a même un réglage quelque part dans le vent.

 
Andrey Barinov:

L'utilisateur place l'EA sur un graphique vierge.

2. L'EA crée un modèle (avec lui-même sur le graphique)

3. Le conseiller expert crée un nouveau graphique (OBJ_CHART ou un graphique normal dans le cas de MT4).

4. Le conseiller expert applique le modèle au nouveau graphique.

5. Sur le nouveau graphique, une copie de l'EA démarre, maintenant il devrait comprendre que c'est l'agent, pas l'EA principal :)

6. Ils commencent à communiquer.

Ils vivent heureux et meurent le même jour :)

Génial !)) Merci !

Oui, c'est celui avec le multithreading. Vous devez exécuter pour chaque tâche lourde une copie de l'EA sur un graphique séparé via un modèle et indiquer à cette copie de n'exécuter que la fonction que vous voulez qu'elle exécute. Les autres fonctions de la copie peuvent se reposer.

La communication via des ressources avec des copies sur des graphiques réguliers (pas OBJ_CHART) fonctionnera-t-elle ? Ou y a-t-il des restrictions ?