Programmation asynchrone et multithread dans MQL - page 32

 
Реter Konow:

Et comment récupérez-vous les résultats des calculs ?

En principe, il pourrait les écrire dans une ressource, non ?

Et si vous devez passer un tableau de données pour des calculs ? Donnez-lui une commande via OnChartEvent(), il accédera à la ressource, lira les données, effectuera le calcul, puis écrira le résultat dans la ressource ?

Mais, de toute façon, la commande ne peut être donnée que par l'EventChartCustom() ?

Et si nous le bouclons après le premier appel, de sorte qu'il appelle et lise constamment la ressource et exécute des commandes à partir de celle-ci ?

Désolé pour le grand nombre de questions. ))

Une période d'expérimentation intéressante vous attend !

Je délègue toute la logique commerciale. Je ne suis pas obligé de communiquer les résultats, ils peuvent être consultés de n'importe où dans le terminal.

 
Andrey Barinov:

Une période d'expérimentation intéressante vous attend !

Je délègue toute la logique commerciale. Ses résultats n'ont pas besoin d'être communiqués à un endroit en particulier, ils sont déjà disponibles de n'importe où dans le terminal.

Merci pour toute votre aide. J'ai appris beaucoup de nouvelles choses. Je vais faire des expériences et je publierai les résultats dans ce fil. Mais ce ne sera pas rapide, car j'ai encore de nombreuses tâches à résoudre avant.

Je pense comme ça. Si, au démarrage d'OBJ_CHART, la boucle est bouclée pour lire la ressource, vous pouvez communiquer avec lui par son intermédiaire, et il effectuera toutes les tâches qui lui ont été transmises et que l'original qui l'a démarré peut effectuer.


Ajouté : la documentation indique que le modèle ne peut pas être placé dans l'EA comme une ressource. Il y a donc un problème de portabilité. Mais ! l'EA peut créer un modèle de lui-même en cas de besoin et, en outre, le charger et forcer sa copie à n'exécuter que les fonctions requises, en communiquant avec lui via des ressources après avoir été bouclé. Je me demande si si cette option n'échoue pas à un moment donné, le problème du multithreading peut être clos.

 
Реter Konow:

Ajouté : la documentation indique que le modèle ne peut pas être placé dans l'EA comme une ressource. Il y a donc un problème de portabilité. Mais ! l'EA peut créer un modèle de lui-même en cas de besoin et, en outre, le charger et forcer sa copie à n'exécuter que les fonctions requises, en communiquant avec lui via des ressources après avoir été bouclé. Il est intéressant de noter que si cette option n'échoue à aucun moment, le problème du multithreading peut être clos.

Le modèle ne doit être transféré nulle part. Il doit être créé une fois au début de l'EA principale (tant qu'aucun agent n'est créé).

 
Andrey Barinov:

Le modèle n'a pas besoin d'être déplacé. Il doit être créé une fois lors du démarrage de l'EA principal (alors qu'aucun agent n'est créé).

Je voulais parler de la portabilité des programmes utilisant les modèles. Vous pouvez créer un grand nombre de modèles avec différentes fonctionnalités et les exécuter, si nécessaire, à partir de l'EA principale. Mais un tel conseiller expert doit être transféré avec tous les modèles d'un ordinateur à l'autre, car ils ne peuvent pas y être placés.
 
Реter Konow:

Merci pour votre aide. J'ai appris beaucoup de nouvelles choses. Je vais expérimenter et rapporter les résultats dans ce fil. Mais cela ne sera pas rapide, car il y a encore beaucoup de tâches à accomplir avant cela.

Je pense comme ça. Si, au démarrage d'OBJ_CHART, la boucle est bouclée pour lire la ressource, vous pouvez communiquer avec lui par son intermédiaire, et il effectuera toutes les tâches qui lui ont été transmises et que l'original qui l'a démarré peut effectuer.


Ajouté : la documentation indique que le modèle ne peut pas être placé dans l'EA comme une ressource. Il y a donc un problème de portabilité. Mais ! l'EA peut créer un modèle de lui-même en cas de besoin et, en outre, le charger et forcer sa copie à n'exécuter que les fonctions requises, en communiquant avec lui via des ressources après avoir été bouclé. Je me demande si si cette option n'échoue pas à un moment donné, le problème du multithreading peut être clos.

C'est une solution intéressante, mais c'est l'absence d'une autre solution à part entière.
N'oubliez pas non plus qu'en utilisant cette approche, vous ne pouvez pas créer plus de 98 fils !
Puisque le terminal ne vous permet pas d'ouvrir plus de 99 graphiques. Et c'est déjà une limitation des possibilités.
Pour les programmes GUI qui ne nécessitent pas un grand nombre de threads, la solution fonctionne bien, mais elle n'est pas une option lorsque plus de 98 threads sont nécessaires.
Quelqu'un a-t-il vérifié combien de temps il faut pour lancer l'agent expert dans cette approche ? Lorsqu'il crée une copie d'un modèle, etc.
Quel est le temps de coût de cette solution ?

 
Roman:

C'est une solution intéressante, mais c'est l'absence d'une autre solution à part entière.
N'oubliez pas non plus qu'en utilisant cette approche, vous ne pouvez pas créer plus de 98 fils !
Puisque le terminal ne vous permet pas d'ouvrir plus de 99 graphiques. Et c'est déjà une limitation des possibilités.
Pour les programmes GUI qui ne nécessitent pas un grand nombre de threads, la solution fonctionne bien, mais elle n'est pas une option lorsque plus de 98 threads sont nécessaires.
Quelqu'un a-t-il vérifié combien de temps il faut pour lancer le conseiller expert dans cette approche ? Lorsqu'il crée une copie d'un modèle, etc.
Quel est le temps de coût de cette solution ?

Je suis d'accord. C'est une solution de béquille et même si tous les espoirs sont comblés, elle n'est disponible que pour moi et quelques autres personnes qui ont développé une technologie d'inter-programmation. Cela ne fonctionnera pas pour les autres. Fait.
 
Roman:

C'est une solution intéressante, mais c'est l'absence d'une autre solution à part entière.
N'oubliez pas non plus qu'en utilisant cette approche, vous ne pouvez pas créer plus de 98 fils !
Puisque le terminal ne vous permet pas d'ouvrir plus de 99 graphiques. Et c'est déjà une limitation des possibilités.
Pour les programmes GUI qui ne nécessitent pas un grand nombre de threads, la solution fonctionne bien, mais elle n'est pas une option lorsque plus de 98 threads sont nécessaires.
Quelqu'un a-t-il vérifié combien de temps il faut pour lancer l'agent expert dans cette approche ? Lorsqu'il crée une copie d'un modèle, etc.
Quel est le temps de coût de cette solution ?

Tu n'aimes pas tout, alors tu fais ton propre chemin vers le dll. Je vous ai laissé des liens vers le livre de référence avec des exemples, l'avez-vous regardé ? Ou l'avez-vous manqué ?

 
Vict:

Tu n'aimes pas tout, alors tu fais ton propre chemin vers le dll. Je vous ai laissé des liens vers le livre de référence avec des exemples, l'avez-vous vu ? Ou l'avez-vous manqué ?

Vous êtes en avance sur moi avec la réponse ;) je suis en train de le parcourir, merci pour les liens, c'est le bon pour le sujet C++ ;))
Et le fait que ce soit difficile ou non, c'est une autre question, j'ai une compréhension de ce que c'est ;))
J'aime tout cela :) différentes approches pour comprendre, et ensuite choisir celle qui a le plus de sens pour moi et qui répond aux exigences, tout est simple.

 
Roman:

Vous êtes en avance sur moi avec la réponse ;) je les regarde en ce moment, merci pour les liens, c'est juste ce dont j'ai besoin sur le sujet du C++ ;))
Et le fait que ce soit difficile ou non, c'est une autre question, j'ai une compréhension de ce qu'est l'avenir ;))
J'aime tout ça :) différentes approches pour comprendre, et ensuite choisir celle qui a le plus de sens pour moi, tout est simple.

ok, faites-moi savoir si vous avez besoin de quoi que ce soit, nous ferons un croquis de votre euentloop, je pense ;))

 
Реter Konow:
C'est une solution de béquille

Non, c'est un bon filtre de compétence.

Raison: