English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Accélération des calculs avec le réseau cloud MQL5

Accélération des calculs avec le réseau cloud MQL5

MetaTrader 5Exemples | 22 décembre 2021, 16:57
440 0
MetaQuotes
MetaQuotes

Tests multi-threads dans MetaTrader 5

Vous pouvez longuement énumérer tous les avantages de la nouvelle plateforme de trading MetaTrader 5 et affirmer qu'elle est meilleure que les autres programmes d'analyse technique et de trading sur les marchés financiers. Il y a un autre argument indiscutable en faveur de la plate-forme. Et ce dernier argument est le Testeur de stratégie dans le terminal client MetaTrader 5. Dans cet article, nous décrivons ses excellentes fonctionnalités et expliquons pourquoi les développeurs de MetaQuotes Software Corp. en sont si fiers.

Le terminal client de 5ème génération dispose non seulement d'un nouveau langage MQL5 pour la programmation de stratégies de trading puissant et rapide, mais également d'un tout nouveau testeur de stratégie qui a été conçu à partir de zéro. Le Testeur sert non seulement à recevoir les résultats des stratégies de trading testées sur des données historiques, mais permet également de les optimiser, c'est-à-dire de trouver les paramètres optimaux.

L'optimisation de la stratégie est une exécution multiple d'une stratégie de trading sur la même période de l'histoire avec différents ensembles de paramètres dont elle dépend. Il s'agit d'une tâche standard de calculs massifs, qui peut être parallélisée, et comme vous l'avez peut-être deviné - le testeur de MetaTrader 5 est multithread ! Ce que cela signifie réellement, nous allons maintenant le voir sur base d’un exemple d'optimisation d'un Expert Advisor à partir du paquet de distribution standard.


Conditions d'essai

Aux fins indiquées ci-dessus, nous utilisons un ordinateur avec Intel Core i7 (8 cœurs, 3,07 GHz) et 12 Go de mémoire avec le système d'exploitation Windows 7 64 bits et MetaTrader 5 build 1075.

L'Expert Advisor Moving Average.mq5 de paquet de livraison standard avec les paramètres suivants est testé :

  • Symbole : EURUSD H1
  • Intervalle de test : du 2011.01.01 au 2011.10.01
  • Mode simulation de prix : 1 minute OHLC (les prix Open, High, Low et Close sur les barres de 1 minute sont utilisés)
  • Type d'optimisation : algorithme complet lent, au total 14 040 passes
Paramètres optimisés :

Paramètres d'optimisation


Optimisation sur les agents locaux

Tout d'abord, exécutons l'optimisation sur les agents locaux. Nous avons huit agents de test - le nombre optimal par le nombre de cœurs. Désactivez l'utilisation des agents distants du réseau local et des agents du MQL5 Cloud Network :

Activation/désactivation des groupes d'agents

Une fois l'optimisation terminée, allez au Journal : 14 040 passages sur 8 agents locaux ont pris 1 heure, 3 minutes et 44 secondes.

2015.02.05 16:44:38	Statistics	locals 14040 tasks (100%), remote 0 tasks (0%), cloud 0 tasks (0%)
2015.02.05 16:44:38	Statistics	optimization passed in 1 hours 03 minutes 46 seconds
2015.02.05 16:44:38	Tester	optimization finished, total passes 14040


Optimisation à l'aide d'une ferme locale d'agents

Comment effectuer plus de tâches en parallèle ? Bien sûr, vous pouvez acheter un processeur avec un grand nombre de cœurs. Cependant, cela ne vous permettrait pas de multiplier le nombre de tâches simultanées. Strategy Tester résout ce problème. Vous pouvez créer votre propre ferme d'agents de traitement dans votre réseau local.


Comment créer une ferme d'agents ?

Les agents doivent être installés sur chaque ordinateur du réseau local. Si MetaTrader 5 est installé sur un ordinateur, ouvrez le gestionnaire d'agents de test en utilisant la commande correspondante du menu « Outils ».

Gestionnaire Agents du Testeur de stratégie

Sinon, téléchargez une application distincte pour la gestion des agents du testeur de stratégie de MetaTrader 5 et suivez le processus d'installation simple.

Agent du testeur de stratégie MetaTrader 5

Dans le gestionnaire, ouvrez l'onglet Agents :

  1. Sélectionnez le nombre d'agents à installer. Les agents sont installés en fonction du nombre de cœurs logiques. 
  2. Saisissez le mot de passe qui sera utilisé pour connecter les agents à utiliser.
  3. Sélectionnez une plage de ports pour la connexion.
  4. Cliquez sur Ajouter.

C'est tout. Les agents sont prêts à être utilisés à partir d'autres ordinateurs du réseau local.


Comment connecter vos agents ?

Les agents sont connectés en quelques clics. Ouvrez le testeur de stratégie dans le terminal et allez dans l'onglet « Agents ». Sélectionnez « Local Network Farm » et cliquez sur « Ajouter » dans le menu contextuel.

Comment ajouter des agents distants

Le moyen le plus simple et le plus rapide consiste à analyser automatiquement le réseau local pour une plage d'adresses IP et de ports. Sélectionnez-les et entrez le mot de passe de connexion de l'agent qui a été spécifié lors de l'installation.

Recherche d’agents sur le LAN

Cliquez sur « Terminer », et tous les agents trouvés seront disponibles pour les tests.


Test de rapidité

Nous avons ajouté 20 agents distants à 8 agents locaux. Nous avons donc 28 agents au total, soit 3,5 fois plus que ce que nous avions à l'origine. Optimisons notre Expert Advisor et voyons à quelle vitesse il sera exécuté.

2015.02.05 15:14:44 Statistiques locales 3412 tâches (24 %), distantes 10628 tâches (75 %), cloud 0 tâches (0 %)
2015.02.05 15:14:44 Optimisation des statistiques passée en 15 minutes 47 secondes
2015.02.05 15:14:44 Optimisation du testeur terminée, total des réussites 14040

Les trois quarts des tâches ont été effectuées par des agents à distance. Le temps d'optimisation a été réduit à 15 minutes 47 secondes, ce qui est presque 4 fois plus rapide.

Une croissance impressionnante de la vitesse, mais cette solution n'est pas accessible à tout le monde. Pas de panique. Il est possible d'optimiser l'EA encore plus rapidement - essayons d'utiliser des agents du réseau cloud MQL5 !


Optimisation à l'aide du réseau cloud MQL5

Cette fois, nous n'utilisons pas d'agents locaux, mais uniquement des agents de MQL5 Cloud Network. Cliquez sur le bouton « Démarrer » et observez la progression de l'optimisation. La vidéo montre le processus en temps réel.


Avec MQL5 Cloud Network, le processus d'optimisation est 150 fois plus rapide !

Lors de l'optimisation, chaque nœud du réseau cloud MQL5 distribue des tâches (exécutions uniques) aux agents disponibles. L'optimisation n'a pris que 26 secondes, donnant l'accélération en 147 (!) fois. Les traders peuvent avoir besoin d'exécuter des centaines de milliers de passes d'optimisation dans un délai raisonnable. Avec le testeur MetaTrader 5, vous n'avez besoin que d'une heure pour les calculs dans le réseau cloud MQL5, alors que sans le réseau, vous passeriez quelques jours. Désormais, en un seul clic, vous pouvez impliquer des milliers de cœurs pour résoudre une tâche. Et c'est accessible à tous ! Comment ça marche ?


Le réseau cloud MQL5 comprend des milliers d'ordinateurs

Le réseau cloud MQL5 se compose de nœuds - serveurs dédiés, auxquels les agents de test se connectent pour effectuer des tâches. Ces nœuds sont des gestionnaires (poolers), car ils combinent des agents du monde entier dans des pools plus grands en fonction de leur emplacement géographique. Étant en mode inactif, chaque agent envoie un message indiquant qu'il est prêt à effectuer une tâche. L'intervalle entre ces messages dépend de la charge actuelle du réseau cloud MQL5.

Chaque nœud du réseau est en même temps traité par MetaTrader 5 comme un point d'accès au réseau MQL5 Cloud ; un terminal s'y connecte à l'aide des coordonnées du compte MQL5.com. La liste des serveurs du MQL5 Cloud Network et le nombre d'agents cloud disponibles par leur intermédiaire peuvent être trouvés dans le terminal, la fenêtre du testeur, l’onglet « Agents ».

Un agent est libre, c'est-à-dire en mode veille, au cas où il n'est pas occupé à effectuer ses propres tâches locales reçues d'un ordinateur local ou d'un réseau local. Lorsqu'un agent est occupé, il n'essaie pas de prendre des tâches du réseau cloud MQL5. Quelques minutes après avoir terminé les calculs locaux, l'agent prend contact avec le nœud du réseau cloud MQL5 le plus proche et propose ses services. Ainsi, vos agents de test ne travaillent sur le réseau que si vous n'en avez pas besoin. Et, bien sûr, les agents travaillent sur le réseau selon le calendrier fixe.

Grâce à la facilité d'installation et les paramètres minimum nécessaires du gestionnaire d'agents MetaTrader 5, des milliers d'agents de test sont disponibles sur le réseau à tout moment. Les statistiques générales des agents MQL5 Cloud Network et des tâches terminées sont disponibles sur la page principale du projet à l'adresse https://cloud.mql5.com.


Exécution de l'informatique distribuée à l'aide des agents de réseau MQL5 Cloud

Comme avec l'optimisation conventionnelle, vous devez définir toutes les options de test et les paramètres d'entrée de l'Expert Advisor. Avant cela, n'oubliez pas de spécifiez votre identifiant MQL5.community dans les paramètres du terminal et autorisez l'utilisation du réseau MQL5 Cloud. Les quatre étapes requises sont illustrées dans la figure ci-dessous.

Exécution de l'optimisation à l'aide de MQL5 Cloud Network

Cliquez sur le bouton « Démarrer » pour lancer le processus d'optimisation. Le terminal prépare une tâche pour les agents de test, qui comprend :

  • un fichier Expert Advisor compilé avec l'extension EX5
  • indicateurs et bibliothèques EX5 activés à l'aide des directives #property tester_indicator et #property tester_library (les DLL ne sont définitivement pas autorisées dans le cloud)
  • fichiers de données nécessaires au test, activés à l'aide de la directive #property tester_file
  • conditions de test/optimisation (nom de l'instrument financier, intervalle de test, mode de simulation, etc.)
  • environnement de trading (propriétés du symbole, conditions de trading, etc.)
  • l'ensemble des paramètres de l'Expert Advisor qui forment l'ensemble des passes requises, c'est-à-dire les tâches

Le terminal MetaTrader 5 communique avec les nœuds du réseau cloud MQL5 et attribue à chaque nœud un ensemble de tâches distinct pour effectuer des passes spécifiques. Chaque nœud est en fait un serveur proxy, puisqu'il reçoit une tâche et un paquet de passes, puis commence à distribuer ces tâches aux agents qui lui sont connectés. Dans ce cas les fichiers des Expert Advisors, indicateurs, librairies et fichiers de données ne sont pas stockés sur les disques durs des serveurs MQL5 Cloud Network.

De plus, les fichiers EX5 ne sont pas stockés sur les disques durs des agents cloud pour des raisons de confidentialité. Les fichiers de données sont enregistrés sur un disque, mais après optimisation, les fichiers de données sont supprimés.

C'est toute la procédure de communication entre votre terminal client et le réseau cloud MQL5 - en fait, il envoie des paquets de tâches au réseau et attend les résultats.


Synchronisation dans le Cloud et distribution de l'historique aux agents

Chaque nœud du MQL5 Cloud Network conserve l'historique des symboles requis et l'envoie aux agents qui lui sont connectés, selon la demande. S'il n'a pas d'historique du symbole XYZ du courtier ABC, le nœud télécharge automatiquement les données de l'historique nécessaires à partir de votre terminal. Par conséquent, votre terminal doit être prêt à fournir cet historique.

Nous vous recommandons d'exécuter un test unique préliminaire d'une stratégie sur votre ordinateur avant de l'envoyer au réseau MQL5 Cloud. Cette approche fournit automatiquement le téléchargement et la synchronisation de tout l'historique requis à partir d'un serveur de trading.

En règle générale, 4 à 8 agents sont installés sur un ordinateur moderne, mais les données de l'historique sont stockées dans un seul dossier dans le répertoire d'installation de l'agent du testeur de stratégie MQL5. Tous les agents cloud installés par un gestionnaire d'agents MQL5 Strategy Tester reçoivent l'historique de ce dossier. Si 8 agents sont installés et qu'ils sont tous disponibles pour le réseau MQL5 Cloud, l'historique requis n'est téléchargé qu'une seule fois. Cela vous permet d'économiser du trafic et de l'espace disque. Il est également pratique d'effectuer la synchronisation entre les agents cloud et les nœuds du réseau informatique distribué.

Ainsi, tous les agents qui effectuent l'optimisation d'une stratégie de trading dans un intervalle de temps donné et sur un symbole donné se voient automatiquement fournir le même historique synchronisé et environnement de marché.


Mise en train

Comment l'optimisation s'exécute-t-elle sur une optimisation d'ordinateur local ? Si vous avez 8 cœurs, vous disposez généralement de 8 agents locaux par défaut. Lorsque vous cliquez sur « Démarrer », les tâches sont distribuées aux agents locaux, tout le nécessaire est téléchargé (le cas échéant) et le processus commence. Dans ce cas, l'optimisation démarre presque instantanément. Mais si vous distribuez des tâches au MQL5 Cloud Network, la procédure change un peu.

Les agents cloud ne sont pas connectés en permanence aux gestionnaires de réseaux, c'est techniquement injustifié et coûteux à tous égards. Au lieu de cela, les agents demandent périodiquement aux serveurs MQL5 Cloud Network s'il y a de nouvelles tâches pour eux. Cela arrive assez souvent pour assurer la mobilisation rapide du nombre d'agents requis, et assez rare, pour ne pas surcharger le trafic réseau avec de tels messages. Ainsi, lorsque vous exécutez l'optimisation, vous pouvez constater la croissance du nombre d'agents qui se connectent à l'accomplissement de vos tâches. Il s'agit du processus en temps réel de la façon dont les agents cloud accèdent au réseau cloud MQL5 et reçoivent des tâches pour certaines passes.

S'il n'y a pas de tâches, les agents contactent assez rarement les responsables. Mais si un ordre de calculer des milliers (des dizaines de milliers) de tâches vient, tout change. On peut dire que l'activité du réseau cloud MQL5 augmente et qu'une fois la tâche terminée, le nombre de demandes d'agents pour de nouvelles tâches diminue. Et si après avoir terminé une tâche, par exemple depuis l'Europe, un ordre pour d'autres tâches vient d'Asie, le réseau sera prêt pour un démarrage rapide. Vous pouvez appeler ce comportement du réseau « Mise en train ».

Exécution de calculs dans le réseau cloud MQL5

Ainsi, le MQL5 Cloud Network est à nouveau prêt à accepter de nouvelles tâches pour les effectuer dans les plus brefs délais.


Utilisez le réseau cloud MQL5 !

L'expression « Le temps, c'est de l'argent » devient de plus en plus d'actualité d'année en année, et nous ne pouvons pas nous permettre d'attendre des calculs importants pendant des dizaines d'heures, voire des jours. Au moment de la rédaction de cet article, le réseau cloud MQL5 fournit une multiplication par cent des calculs. Avec son augmentation supplémentaire, le gain de temps peut être multiplié par mille ou plus. De plus, le réseau de calcul distribué ne vous permet pas de résoudre seulement des tâches d'optimisation de stratégie.

Vous pouvez développer un programme en MQL5 qui implémente des calculs mathématiques massifs et nécessite beaucoup de ressources CPU. Le langage MQL5, dans lequel sont écrits les programmes pour le terminal MetaTrader 5, est très proche du C++ et permet de traduire facilement des algorithmes écrits dans d'autres langages de haut niveau.

Une caractéristique importante du testeur de terminal MetaTrader 5 est que les tâches mathématiques difficiles visant à trouver des solutions avec de grands ensembles de variables d'entrée sont facilement parallélisées entre les agents de test. Et vous n'avez pas besoin d'écrire de code spécial pour cela - connectez-vous simplement au réseau cloud MQL5 d'informatique distribuée !

Traduit du russe par MetaQuotes Ltd.
Article original : https://www.mql5.com/ru/articles/341

Créez vos propres panneaux graphiques en MQL5 Créez vos propres panneaux graphiques en MQL5
La convivialité du programme MQL5 est déterminée à la fois par sa riche fonctionnalité et par une interface utilisateur graphique élaborée. La perception visuelle est parfois plus importante qu'un fonctionnement rapide et stable. Voici un guide étape par étape pour créer vous-même des panneaux d'affichage sur la base des classes de la bibliothèque standard.
Contrôles graphiques personnalisés. Partie 3. Formulaires Contrôles graphiques personnalisés. Partie 3. Formulaires
Ceci est le dernier des trois articles consacrés aux contrôles graphiques. Il couvre la création du composant principal de l'interface graphique - le formulaire - et son utilisation en combinaison avec d'autres contrôles. En plus des classes de formulaire, les classes CFrame, CButton, CLabel ont été ajoutées à la bibliothèque de contrôle.
Les bases de la programmation orientée objet Les bases de la programmation orientée objet
Vous n'avez pas besoin de savoir ce que sont le polymorphisme, l'encapsulation, etc. pour utiliser la programmation orientée objet (POO)... vous pouvez simplement utiliser ces fonctionnalités. Cet article couvre les bases de la POO avec des exemples pratiques.
Contrôles graphiques personnalisés. Partie 2. Bibliothèque de contrôle Contrôles graphiques personnalisés. Partie 2. Bibliothèque de contrôle
Le deuxième article de la série « Contrôles graphiques personnalisés » présente une bibliothèque de contrôles permettant de traiter les principaux problèmes d'interaction entre un programme (Expert Advisor, script, indicateur) et un utilisateur. La bibliothèque contient un grand nombre de classes (CInputBox, CSpinInputBox, CCheckBox, CRadioGroup, CVSсrollBar, CHSсrollBar, CList, CListMS, CComBox, CHMenu, CVMenu, CHProgress, CDialer, CDialerInputBox, CTable) et des exemples de leur utilisation.