Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Facebook !
Rejoignez notre page de fans
Un script intéressant ?
Poster un lien vers celui-ci -
laisser les autres l'évaluer
Vous avez aimé le script ? Essayez-le dans le terminal MetaTrader 5
Experts

Panneau de configuration du mode multidevises « Control panel MCM » - expert pour MetaTrader 5

Konstantin Gruzdev
Konstantin Gruzdev
Research Engineer. Been programming since 1982. Since 2001, I write software for companies operating in the stock and currency markets. With MetaTrader been working since 2006. Since 2010 an active participant MQL5.Community.
My main creative contribution to the MQL5-coding and the community:
| French English Русский 中文 Español Deutsch 日本語 Português 한국어 Italiano Türkçe
Vues:
358
Note:
(45)
Publié:
Mise à jour:
MQL5 Freelance 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.


Simplicité d’installation et de maintenance du panneau

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 :

Réglage des couleurs et de la taille de l'indicateur du panneau iControl MCM


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.

Panneau d'affichage iControl MCM repliable

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 :

Paramètres de police de l'écran de contrôle iControl panel MCM

Par exemple, pour les filles aveugles et glamour, le panneau peut se présenter ainsi :

Réglage des couleurs du panneau de commande iControl MCM

Et pour les mystérieux ÉMO qui voient tout, le panneau pourrait ressembler, par exemple, à ceci :

Réglage des couleurs du panneau de commande iControl MCM


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) :

Outils supplémentaires du panneau de commande iControl MCM

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 :

Modification des paramètres du graphique actuel du panneau iControl MCM

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() :

Actualité : nouveau bar du panneau iControl de MCM

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 :

Fiche technique du panneau iControl MCM


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 :

Exemple d'utilisation du panneau iControl MCM

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.

Sélection des événements du panneau iControl MCM

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

Exemple de fonctionnement de l'indicateur iControl panel MCM

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 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 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 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 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.