Rejoignez notre page de fans
Panneau de configuration du mode multidevises « Control panel MCM » - expert pour MetaTrader 5
- Vues:
- 358
- Note:
- Publié:
- Mise à jour:
-
Besoin d'un robot ou d'un indicateur basé sur ce code ? Commandez-le sur Freelance Aller sur Freelance
Introduction
L'un des avantages du langage de programmation MQL5 réside dans la possibilité de créer des outils permettant aux indicateurs et aux experts conseillers de fonctionner en mode multidevise réel. Le script que j’ai publié dans la Code Base , intitulé « Gestionnaire de ticks multidevises OnTickMarketWatch », en est la preuve .
L'utilisation directe de la variante proposée dans le script entraîne un certain nombre d'inconvénients. Par exemple, un grand nombre de ticks entrant dans la fonction OnChartEvent() peut entraîner un « encombrement » de la file d'attente des événements. Voici un avertissement tiré de la documentation :
Все возникающие события клиентский терминал складывает в общую очередь. Таким образом события обрабатываются одно за другим в порядке поступления. Исключение составляет событие NewTick. Если в очереди уже есть такое событие либо это событие находится в состоянии обработки, то новое событие NewTick в очередь не ставится.
Очередь событий имеет ограниченный размер. При переполнении очереди старые события удаляются без обработки для того, чтобы освободить место для вновь поступающих событий. Поэтому крайне рекомендуется писать эффективные обработчики событий и не рекомендуется использовать бесконечные циклы.
De plus, il est parfois nécessaire de passer des ordres ou de calculer des indicateurs uniquement à l’apparition d’une nouvelle barre. Ou encore de désactiver d’urgence le trading multidevises sur un instrument donné sans interrompre son fonctionnement, pour ainsi dire « à la volée ». Ou encore modifier, par exemple, la période d’un symbole donné sans interrompre le fonctionnement du multidevise. Ou bien bien d’autres choses encore… Et ce « bien d’autres choses encore » correspond souvent à des données provenant de l’environnement externe dans lequel l’indicateur ou le conseiller technique opère.
C’est précisément pour configurer l’environnement externe dans lequel fonctionne un indicateur ou un expert en mode multidevises que le panneau de configuration du mode multidevises « Control panel MCM » (Control panel the MultiCurrency Mode) a été conçu.
D'ailleurs, ce panneau peut tout à fait être utilisé pour le trading mono-devise.
Avantages de la version du « Control panel MCM » présentée au concours
Fonctionnalités
La version présentée dispose de toutes les ensemble minimal ensemble de fonctions nécessaires à la configuration du mode multidevises des indicateurs et des robots de trading, à savoir :
- Activation/désactivation des symboles dans la fenêtre « Aperçu du marché » à des fins de trading ou d'analyse.
- Définir le mode de trading par ticks ou par événement « nouvelle barre » pour n'importe quelle période et pour le symbole sélectionné dans la « Vue d'ensemble du marché ».
- Modifier tous les paramètres susmentionnés « à la volée » sans avoir à fermer, arrêter ou accéder à la fenêtre des propriétés du robot ou de l’indicateur.
- Le panneau peut être installé comme un élément autonome sur le graphique, puis vous pouvez y « ajouter » des experts et des indicateurs compatibles avec celui-ci.
- Le panneau peut être intégré en tant qu’élément constitutif d’indicateurs ou d’experts. Il se chargera en même temps qu’eux.
- Tout cela ne limite en rien votre créativité lors de la conception d’indicateurs et d’experts multidevises. De plus, grâce au « Control panel MCM », vous n’aurez désormais plus besoin d’« intégrer » dans votre code ce que ce développement vous apporte.
En explorant le menu « Control panel MCM », vous découvrirez un service supplémentaire qui est disponible, mais qui n'est pas inclus dans la version du concours.
Vous trouverez une description plus détaillée des fonctionnalités du « Control panel MCM » ci-dessous, dans la section « Utilisation du panneau de configuration du mode multidevises ».
Limitations fonctionnelles : dans cette version, les paramètres ne sont pas conservés lors du redémarrage du panneau, et les modules supplémentaires étendant les fonctionnalités de base ne sont pas activés.
L'installation du « Control panel MCM » est simple. Elle peut s'effectuer de trois manières :
- Télécharger sur le graphique souhaité l’indicateur « iControl panel MCM », qui constitue le « moteur » du panneau.
- Lancer le script « scControl panel MCM ». Ce script est fourni à titre d'exemple uniquement ; il lance l'indicateur « iControl panel MCM ».
- Activer le chargement du panneau depuis votre indicateur ou votre expert. Un exemple d’expert se trouve dans le fichier « exControl panel MCM ».
Dans ce dernier cas, le panneau se chargera en même temps que votre indicateur ou votre expert dans une seule fenêtre. Dans les deux premiers cas, seul le panneau sera installé. Ensuite, votre expert ou votre indicateur, qui doit être compatible avec « Control panel MCM », pourra être ajouté à cette fenêtre. La seule exigence de compatibilité pour vos programmes MQL est la présence d’un gestionnaire d’événements standard OnChartEvent().
Conception de l'interface
Simple. Conçu sous la forme d’un menu traditionnel. Le réglage des couleurs et de la taille s’effectue via les propriétés de l’indicateur. Voici à quoi ressemblent le panneau et ses boutons :

Ergonomie dans les tâches quotidiennes
Ici aussi, tout est très simple. Le panneau lui-même ne sert qu’à configurer les événements nécessaires au gestionnaire multidevises au tout début de la session de travail. La taille des fenêtres s’adapte, dans la mesure du possible, à celle de la fenêtre du graphique. Si le menu est suffisamment long, une barre de défilement verticale apparaît. Une fois la configuration effectuée, le panneau peut être réduit et restera « en veille » dans le coin inférieur gauche de la fenêtre jusqu’à ce qu’on le réactive. Il n’encombre pas trop le graphique et ne gêne pas particulièrement.

La taille du panneau peut être modifiée en ajustant la taille de la police dans les « Propriétés » de l’indicateur. La taille de police par défaut est 10 :

Par exemple, pour les filles aveugles et glamour, le panneau peut se présenter ainsi :
Et pour les mystérieux ÉMO qui voient tout, le panneau pourrait ressembler, par exemple, à ceci :

Facilité d'apprentissage et de mémorisation des actions
Le menu du panneau est intuitif. Étant donné qu’il ne comporte que quelques boutons, il est difficile de s’y perdre et facile de s’en souvenir.
Le bouton de menu « Control panel MCM » contient des outils supplémentaires qui étendent les fonctionnalités du panneau (non activés dans cette version) :

Le bouton de menu « Graphique » contient les paramètres relatifs au symbole et à la période du graphique actuel. En sélectionnant un autre symbole ou une autre période, vous pouvez modifier les paramètres du graphique actuel :

Le bouton de menu « Événements » permet d’activer ou de désactiver « à la volée » (sans désactiver l’expert ou l’indicateur) des symboles à des fins de trading ou d’analyse, ainsi que de configurer les événements nécessaires pour les symboles sélectionnés. Ces événements peuvent être suivis à l'aide de la fonction OnChartEvent() dans un expert ou un indicateur.
Le menu n'affiche que les symboles sélectionnés dans la fenêtre « Aperçu du marché ». Vous pouvez choisir un seul événement selon vos préférences ou combiner plusieurs événements. Tous seront transmis au multidevise. Désormais, dans vos indicateurs ou experts, vous n’avez plus à vous soucier, par exemple, de l’apparition d’une nouvelle barre sur n’importe quelle période ; ce panneau s’en chargera et vous informera de cet événement via le gestionnaire d’événements OnChartEvent() :

Le bouton du menu « Aide » a été créé purement par intérêt personnel : pour attester de ma paternité de l’œuvre et vous « rediriger » vers ce forum :

Une solution innovante, ou une approche intéressante
En réalité, j'avais déjà dévoilé ma solution de savoir-faire lors de la publication de « Le processeur de ticks multidevises OnTickMarketWatch ». Mais ce panneau intègre des solutions supplémentaires et élimine tous les inconvénients du script proposé précédemment :
- « Control panel MCM » fournit un service qui n’est pas implémenté par défaut dans le terminal. Plus précisément, il offre la possibilité d’un véritable mode multidevises via le gestionnaire d’événements OnChartEvent() et permet de décentraliser certains paramètres hors des experts, avec la possibilité de les modifier rapidement « à la volée ».
- Pour générer des événements destinés au gestionnaire d’événements standard OnChartEvent(), le panneau utilise ses propres « agents », qui fournissent les événements correspondants pour le système multidevises. Cela permet de « décharger » l’expert multidevises en parallélisant les flux de traitement des données. Par « agents », j’entends les indicateurs lancés par le « Control panel MCM » sur le symbole sélectionné.
- Le panneau peut être utilisé aussi bien comme outil autonome que comme composant intégré à des experts ou à des indicateurs. Cela permet une utilisation assez flexible.
- Le « Control panel MCM » ne limite en rien le potentiel créatif des programmeurs lors de la création d’indicateurs et d’experts multidevises. De plus, grâce au « Control panel MCM », il n’est désormais plus nécessaire d’« intégrer » dans le code ce que propose ce développement.
- Il établit (ou du moins prétend établir) une nouvelle norme, plus simple, en matière d’architecture des experts et des indicateurs. À mon humble avis, bien sûr. Si j’en ai le temps, je posterai quelques exemples.
Suivi informatif des événements et alertes destinées au trader
Pour cela, le panneau dispose d’une barre d’état où s’affichent tous les événements et toutes les actions de l’opérateur. Il existe en fait un module de journal des événements qui peut être activé, mais par pure malice, je ne l’ai pas inclus dans cette version.
Quelques particularités de l'utilisation du « Control panel MCM ».
Installation du panneau.
Pour installer le panneau, vous devez décompresser le fichier d'archive « Control panel MCM.rar » dans le répertoire mql5. Une fois décompressé, vous obtiendrez plusieurs fichiers :
- /mql5/experts/exControl panel MCM.mq5 - exemple d'expert utilisant le modèle ;
- /mql5/scripts/scControl panel MCM.mq5 - script chargant le panneau de contrôle ;
- /mql5/indicators/iControl panel MCM.mq5 - indicateur - moteur « Control panel MCM » ;
- /mql5/indicators/Spy Control panel MCM.mq5 : indicateur – agent « Control panel MCM » ;
- /mql5/include/Control panel MCM.mqh - ensemble de fonctions et de classes « Control panel MCM ».
Compilez l'expert, le script et les deux indicateurs.
Chargement du panneau
Le chargement du panneau est très simple : lancez l'indicateur « iControl panel MCM.mq5 » sur n'importe quel instrument et n'importe quelle période. C'est tout. Vous pouvez désormais explorer le panneau. Vous pouvez ajouter au graphique des experts et des indicateurs compatibles avec « Control panel MCM ».
Pour moi, il est plus pratique de charger le panneau à partir d'un expert. Lancez l'expert « exControl panel MCM » et vous obtenez :

De plus, à titre d'exemple, j'ai ajouté mon propre indicateur multidevises MultiTrend, spécialement conçu pour être utilisé avec le panneau de contrôle du mode multidevises. L'indicateur affiche l'évolution du dollar (ligne rose) sur la base de l'analyse de l'évolution de quatre devises.
Voici le code de l'expert :
//+------------------------------------------------------------------+ //| MultiTrend.mq5 | //| Copyright 2010, Lizar | //| https://www.mql5.com/fr/users/Lizar | //+------------------------------------------------------------------+ #define VERSION "1.00 Build 2 (09 Dec 2010)" #property copyright "Copyright 2010, Lizar" #property link "https://www.mql5.com/fr/users/Lizar" #property version VERSION #property description « Un expert présente le fonctionnement du panneau de commande du mode multidevises » #property description "\Control panel MCM\" (Control panel the MultiCurrency Mode)." input color bg_color=Gray; // Couleur du menu input color font_color=Gainsboro; // Couleur de la police input color select_color=Yellow; // Couleur de mise en évidence input int font_size=10; // Taille de la police #include <Control panel MCM.mqh> //<--- Fichier inclus : Panneau de configuration MCM //+------------------------------------------------------------------+ //| Fonction d'initialisation de l'expert | //+------------------------------------------------------------------+ int OnInit() { //--- Initialisation du panneau de configuration MCA. //--- Il n'est pas nécessaire de définir les paramètres de couleur (la palette de couleurs par défaut du menu sera utilisée). InitControlPanelMCM(bg_color,font_color,select_color,font_size); //--- return(0); } //+------------------------------------------------------------------+ //| Fonction de désinitialisation de l'expert | //+------------------------------------------------------------------+ void OnDeinit(const int reason) { DeinitControlPanelMCM(); //<--- Désinitialisation du panneau de configuration MCA : } //+------------------------------------------------------------------+ //| Fonction standard de gestion des événements. Elle peut être utilisée | //| conformément à sa fonction première, telle que décrite dans la documentation. | //| | //| Associé au panneau de configuration, MCM constitue un outil pratique pour | //| du trading multidevises. | //+------------------------------------------------------------------+ void OnChartEvent(const int id, // identifiant de l'événement : // si id-CHARTEVENT_CUSTOM == 0 - initialisation, ce qui correspond au moment où prev_calculated == 0 // si id-CHARTEVENT_CUSTOM!=0 - position du symbole dans la fenêtre « Aperçu du marché » const long& lparam, // période du graphique const double& dparam, // prix const string& sparam // outil ) { if(id>=CHARTEVENT_CUSTOM) { Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM, ": ",sparam," ",EventDescription(lparam)," price=",dparam); } } //+------------------------------------------------------------------+
Description des paramètres d'entrée de la fonction OnChartEvent()
Le panneau de contrôle génère des événements personnalisés et les transmet au graphique sélectionné afin que ces événements soient traités par l'expert ou l'indicateur à l'aide de la fonction OnChartEvent(). Les paramètres d'entrée de cette fonction (dans notre cas) doivent être interprétés comme suit :
- id - identifiant de l'événement :
si id-CHARTEVENT_CUSTOM != 0 : position du symbole dans la fenêtre « Aperçu du marché » ; - lparam ; - indicateur de l’événement provenant de l’agent du panneau de contrôle. Les indicateurs correspondent à l’énumération ENUM_CHART_EVENT_SYMBOL, que vous trouverez au début du fichier inclus Control panel MCM.mqh, et dont la description figure un peu plus bas dans le texte.
- dparam : le prix du tick ou le prix d’ouverture d’une nouvelle barre sur une période donnée.
- sparam : nom de l'instrument de trading pour lequel l'événement a été reçu
Liste des événements fournis par le panneau de configuration MCM
Via lparam, le panneau de contrôle peut, en fonction des paramètres, transmettre jusqu'à 64 événements personnalisés différents par symbole. Dans cette version, le panneau de contrôle MCM peut transmettre les événements suivants :
- Événement « Initialisation » (Initialization) ;
- Événement « nouveau tick » (tick) ;
- Événement « nouvelle barre » sur le graphique 1 minute (M1) ;
- Événement « nouvelle barre » sur le graphique de 2 minutes (M2) ;
- Événement « nouvelle barre » sur le graphique de 3 minutes (M3) ;
- Événement « nouvelle barre » sur le graphique de 4 minutes (M4) ;
- Événement « nouvelle barre » sur le graphique de 5 minutes (M5) ;
- Événement « nouvelle barre » sur le graphique de 6 minutes (M6) ;
- Événement « nouvelle barre » sur le graphique de 10 minutes (M10) ;
- Événement « nouvelle barre » sur le graphique de 12 minutes (M12) ;
- Événement « nouvelle barre » sur le graphique de 15 minutes (M15) ;
- Événement « nouvelle barre » sur le graphique de 20 minutes (M20) ;
- Événement « nouvelle barre » sur le graphique de 30 minutes (M30) ;
- Événement « nouvelle barre » sur le graphique d'une heure (H1) ;
- Événement « nouvelle barre » sur le graphique de 2 heures (H2) ;
- Événement « nouvelle barre » sur le graphique de 3 heures (H3) ;
- Événement « nouvelle barre » sur le graphique de 4 heures (H4) ;
- Événement « nouvelle barre » sur le graphique de 6 heures (H6) ;
- Événement « nouvelle barre » sur le graphique de 8 heures (H8) ;
- Événement « nouvelle barre » sur le graphique de 12 heures (H12) ;
- Événement « nouvelle barre » sur le graphique journalier (D1) ;
- Événement « nouvelle barre » sur le graphique hebdomadaire (W1) ;
- Événement « nouvelle barre » sur le graphique mensuel (MN1) ;
Entre parenthèses figure la description de l'événement, qui est renvoyée par la fonction EventDescription(). La fonction elle-même se trouve également au début du fichier à inclure Control panel MCM.mqh, après l'énumération ENUM_CHART_EVENT_SYMBOL.
Notez que l'événement « Initialisation » correspond au moment où le paramètre d'entrée prev_calculated de l'indicateur est remis à zéro sur le symbole d'où provient l'événement. Par conséquent, dans notre indicateur ou expert multidevises, il convient de prendre les mesures appropriées. Par exemple, recalculer l'indicateur pour ce symbole.
Configuration des événements
La configuration des événements provenant des agents du panneau de contrôle s'effectue via le bouton de menu « Événements ». En cliquant sur ce bouton, une liste de tous les symboles actuellement sélectionnés dans la fenêtre « Aperçu du marché » s'affiche. Pour activer les événements liés à un symbole, il suffit de double-cliquer dessus avec la souris. Mieux vaut le faire lentement pour profiter pleinement du plaisir de l'action.
Si les événements liés à ce symbole étaient déjà activés (le symbole est alors surligné d’une couleur vive), il suffit de cliquer une seule fois dessus. Une liste d’événements s’affichera. Vous pouvez sélectionner un ou plusieurs événements ; ils seront tous ajoutés à votre portefeuille multidevises. Pour que les modifications prennent effet, cliquez sur le bouton « Activer/Désactiver les événements ». Répétez l'opération pour tous les symboles souhaités.

Voici le résultat obtenu grâce à l’expert de démonstration associé au panneau :

Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/215
YURAZ_Créer_un_fichier_d'historique_CSV_à_partir_de_MT5_pour_MT4
Ce script vous permettra d'obtenir pour MetaTrader 4 l'historique complet, sans lacunes, à partir de la base de données de MetaTrader 5.
ChartReinit
Réinitialisation du graphique à l'aide d'un bouton, avec recalcul de tous les indicateurs, ainsi qu'un exemple simple et clair de traitement orienté objet de tous les graphiques à partir d'un seul expert.
Indicateur d'équilibre de tendance TrendEQ
TrendEQ analyse dynamiquement les tendances du marché en combinant l'élan et la volatilité. En mesurant le momentum par rapport aux tendances du marché, TrendEQ fournit une mesure fiable de la force et de la direction de la tendance.
Calendar-Based Backtesting: an Event-Driven Trading EA
Ce script et EA permet aux codeurs de backtester leurs stratégies basées sur les actualités qui utilisent le calendrier MQL5.
