Merci à l'auteur, article pertinent. J'ai également réfléchi à ce sujet, mais je n'ai pas eu le temps de lire l'article.
L'auteur indique qu'il faut surveiller attentivement les instruments qui fonctionnent et ceux qui fonctionnent. Compte tenu de l'écriture de conseillers experts qui peuvent être exécutés sur n'importe quelle paire, c'est un peu difficile. Vous devrez suivre la paire sur laquelle l'EA fonctionne et ajuster les paires de flux parallèles.
À cet égard, une question (qui ne s'adresse pas tant à l'auteur qu'aux développeurs MQ) : est-il possible d 'introduire des outils personnalisés ?
De cette manière, nous pourrions résoudre de nombreuses tâches, en commençant par la création de graphiques vides pour les calculs parallélisés et en terminant par la création de graphiques en tic-tac de notre cru.
En ce qui concerne le tampon de transfert de données, je peux vous conseiller de créer une structure globale et de transférer différents types de données par le biais de cette structure. Je sais par expérience qu'il n'est pas toujours pratique de renvoyer le résultat des calculs sous la forme d'un tableau, il faut souvent suivre certains compteurs, et pour ne pas confondre les noms, il est plus facile de tout passer sous forme de structure et de faire déjà référence aux variables en tant que membres de la structure. D'ailleurs, la même structure peut inclure des tableaux.
- www.mql5.com
À cet égard, une question (qui ne s'adresse pas tant à l'auteur qu'aux développeurs de MQ) : est-il possible d'introduire des outils personnalisés ?
Je vais peut-être répéter l'idée déjà exprimée ici à propos des outils personnalisés, mais j'aimerais ajouter....
Aujourd'hui, un Expert Advisor (indicateur, script) n'est lancé que sur un symbole spécifique. Il a accès aux données actuelles des autres symboles, mais l'événement OnTick n'est généré que pour le symbole hôte, sur le graphique duquel le conseiller expert est lancé.
Il serait peut-être logique d'introduire la possibilité de créer votre propre"outil personnalisé", qui est comme un module complémentaire. Cet outil est comme une superstructure au-dessus des conseillers experts et a la capacité de recevoir et de traiter les ticks de plusieurs symboles, en transmettant les résultats aux programmes (parties du programme ou conseillers experts, indicateurs) qui travaillent avec un symbole spécifique dans leur propre fil de discussion. Cela a grandement facilité et stimulé la création de "multidevises". Et le concept même de la programmation objet y pousse. Pourquoi lier un Expert Advisor à un symbole particulier si vous travaillez avec plusieurs symboles ?
P.S.Il serait bon d'ajouter aux fonctions SymbolInf... quelque chose comme l'événement "un nouveau tick pour ce symbole est arrivé".
Désormais, le conseiller expert (indicateur, script) n'est lancé que sur un symbole spécifique. Il a accès aux données actuelles des autres symboles, mais l'événement OnTick n'est généré que pour le symbole hôte, sur le graphique duquel le conseiller expert est lancé.
Il est difficile de comprendre pourquoi les développeurs ont répété cette béquille. Après tout, lorsque l'architecture MQL5 a été développée, il existait déjà une API très solide, dans laquelle onTick se déclenchait pour chaque tick de n'importe quel symbole signé.
En général, je ne comprends pas pourquoi ils ont choisi une telle architecture et se sont si peu inspirés de l'API existante, qui était très compétente en termes d'architecture.
Les développeurs de MQL5 se comportent comme s'ils réinventaient la roue : "nous allons réfléchir à cette fonctionnalité", "oui, vous avez raison, nous allons l'ajouter", etc.
Il a été mentionné à plusieurs reprises que plus d'un an a été consacré à l'élaboration de l'architecture. Il y a donc des arguments qui expliquent pourquoi ils ont décidé de procéder de cette manière et pas autrement.
P.S. La raison réside peut-être dans le fait que les développeurs de MetaTrader ont peu d'expérience en matière de courtage et de négociation, mais une énorme expérience dans l'écriture de plateformes. D'autres développeurs, au contraire, ont une grande expérience du courtage réel et de la négociation sur le marché.
P.P.S. J'ai écrit mes pensées, pas des spéculations. Il est toujours plus facile de critiquer que de créer. Les développeurs, malgré des erreurs évidentes, méritent le respect.
Il serait peut-être logique d'introduire la possibilité de créer votre propre"outil personnalisé" , qui est comme un add-on sur les Expert Advisors et qui a la capacité de recevoir et de traiter les ticks de plusieurs symboles, en transmettant les résultats aux programmes (parties du programme ou Expert Advisors, indicateurs travaillant avec un symbole spécifique). qui est comme une superstructure au-dessus des EA et qui a la capacité de recevoir et de traiter les ticks de plusieurs symboles, en transmettant les résultats à des programmes (parties du programme ou EA, indicateurs) travaillant avec un symbole particulier dans leur propre fil. Cela a grandement facilité et stimulé la création de "multidevises". Et le concept même de la programmation objet y pousse. Pourquoi lier un Expert Advisor à un symbole particulier si vous travaillez avec plusieurs symboles ?
P.S.Soit il serait bon d'ajouter aux fonctions SymbolInf... quelque chose comme l'événement "un nouveau tick pour ce symbole est arrivé".
Cet "add-on" peut être mis en œuvre à l'aide des outils standard de MQL5 : Multicurrency tick handler OnTickMarketWatch
Je vous remercie. C'est cet article qui m'a poussé à tirer les conclusions ci-dessus. Mais comme vous l'avez vous-même remarqué dans cet article :
Conseils d'utilisation :
1. Cette variante du gestionnaire de tic-tac multidevises est assez gourmande en ressources. Vous pouvez alléger la charge du processeur en augmentant le délai de réception des ticks dans le script, à l'aide de la variable delay. Mais en même temps, vous pouvez sauter un certain nombre de ticks.
Si vous augmentez le délai jusqu'à 1 seconde, vous pouvez obtenir le même effet en utilisant OnTimer(). Malheureusement, les inconvénients sont les mêmes.
En même temps, le terminal reçoit et traite continuellement des ticks par symboles depuis la "fenêtre de marché". Nous avons accès à ces ticks, mais nous n'avons aucun signal indiquant que ces données ont été mises à jour. C'est pourquoi nous devons effectuer la vérification artificiellement. L'avantage de MQL5 est qu'il est possible de le faire. Mais je suis d'accord qu'il serait beaucoup plus élégant d'avoir une solution intégrée dans les fonctions du terminal. Qu'il s'agisse d'un événement distinct comme OnTrade() et que le développeur puisse l'utiliser à sa guise (ou non).
Et à propos des "outils personnalisés" ou de la superstructure sur experts.... Je me rends compte qu'il s'agit d'une sorte de "rêve" et qu'il aurait fallu y penser dès la phase de conception... C'est dommage !
Je vous remercie. C'est cet article qui m'a poussé à tirer les conclusions ci-dessus. Mais comme vous l'avez vous-même souligné dans cet article :
Conseils d'utilisation :
1. Cette variante du gestionnaire de tic-tac multidevises est assez gourmande en ressources. Vous pouvez alléger la charge du processeur en augmentant le délai de réception des ticks dans le script, à l'aide de la variable delay. Mais en même temps, vous pouvez sauter un certain nombre de ticks.
Si vous augmentez le délai jusqu'à 1 seconde, vous pouvez obtenir le même effet en utilisant OnTimer(). Malheureusement, les inconvénients sont les mêmes.
En même temps, le terminal reçoit et traite continuellement des ticks par symboles depuis la "fenêtre de marché". Nous avons accès à ces ticks, mais nous n'avons aucun signal indiquant que ces données ont été mises à jour. C'est pourquoi nous devons effectuer la vérification artificiellement. L'avantage de MQL5 est qu'il est possible de le faire. Mais je suis d'accord qu'il serait beaucoup plus élégant d'avoir une solution intégrée dans les fonctions du terminal. Qu'il s'agisse d'un événement distinct comme OnTrade() et que le développeur puisse l'utiliser à sa guise (ou non).
Et à propos des "outils personnalisés" ou de la superstructure sur experts.... Je me rends compte que ce n'est qu'un "rêve" et qu'il aurait fallu y penser dès la phase de conception... C'est dommage !
D'accord ! Il reste maintenant aux développeurs à nous entendre. Il serait bon que cet add-on puisse inclure des fonctions de gestion des threads en même temps.
Il serait possible d'exécuter chaque traitement dans son propre thread. Cela permettrait peut-être de traiter un nouveau tick tout en travaillant avec le tick actuel.
Article utile. Il ouvre de nouveaux horizons.
J'ai une question : la fonction OnTick() peut-elle être transformée en une fonction avec un paramètre, comme OnTick(EURUSD), de sorte que les ticks de différents instruments puissent être traités en parallèle dans un conseiller expert ? Bien sûr, avec le traitement de chaque instance d'une fonction à paramètre unique dans un thread séparé (sur un noyau séparé).
- www.mql5.com
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Calculs Parallèles dans MetaTrader 5 a été publié :
Le temps a été une grande valeur tout au long de l'histoire de l'humanité, et nous nous efforçons de ne pas le gaspiller inutilement. Cet article vous indiquera comment accélérer le travail de votre Expert Advisor si votre ordinateur dispose d'un processeur multi-noyau. De plus, l’implémentation de la méthode proposée ne nécessite la connaissance d'aucun autre langage que MQL5.
Presque tous les PC modernes sont capables d'effectuer plusieurs tâches simultanément - en raison de la présence de plusieurs noyaux de processeur. Leur nombre augmente chaque année - 2, 3, 4, 6 noyaux ... Intel a récemment démontréun processeur expérimental à 80 noyaux (oui, ce n'est pas une faute de frappe - quatre-vingt noyaux - malheureusement, cet ordinateur n'apparaîtra pas dans les magasins, car ce processeur a été créé uniquement dans le but d'étudier les capacités potentielles de la technologie).
Pas tous les utilisateurs d'ordinateurs (et même pas tous les programmeurs novices) comprennent comment cela fonctionne. Par conséquent, quelqu'un se posera sûrement la question : pourquoi avons-nous besoin d'un processeur avec autant de noyaux, alors qu'avant même (avec un seul cœur), l'ordinateur pouvait exécuter plusieurs programmes simultanément et qu'ils fonctionnaient tous ? La confiance est, ce n'est pas le cas. Examinons le schéma suivant.
Figure 1. Exécution parallèle d'applications
Auteur : ds2