Accueil Trading Systématique Publication

Optimisez vos Transactions avec le Panneau de Contrôle MCM pour MetaTrader 5

Pièce jointe
215.zip (19.4 KB, Télécharger 0 fois)

L'un des avantages du langage MQL5 est la possibilité d'utiliser des indicateurs et des systèmes de trading multicurrency. Consultez le gestionnaire d'événements Multicurrency OnTickMarketWatch dans la CodeBase de MQL5.

Cependant, l'utilisation du concept proposé dans le script n'est pas toujours pratique. En effet, en cas de nombreux événements, il peut y avoir un débordement de la file d'attente des événements.

Voici une note provenant de la référence MQL5 :

Le terminal client ajoute les événements apparaissants à la file d'attente. Ces événements sont traités un par un selon l'ordre dans lequel ils ont été reçus. Il y a une exception pour l'événement NewTick. Si la file d'attente contient déjà un tel événement ou si cet événement est en cours de traitement, le nouvel événement NewTick n'est pas mis en attente.

La file d'attente des événements est de taille limitée. En cas de débordement, les anciens événements sont supprimés sans être traités, afin de permettre la réception de nouveaux événements. Il est donc recommandé d'écrire des gestionnaires d'événements efficaces, et il n'est pas conseillé d'utiliser des boucles infinies (à l'exception des scripts qui ne gèrent que l'événement Start).

De plus, il est parfois nécessaire de recalculer les valeurs de l'indicateur uniquement lorsque la nouvelle bougie est apparue. Un autre cas pourrait être le besoin de désactiver le trading "à la volée" sur un symbole dans un système de trading multicurrency, de changer la période d'un symbole ou de faire autre chose.

Ce "quelque chose d'autre" pourrait être des données externes. Le Panneau de Contrôle MCM (MultiCurrency Mode) est basé sur cette idée.

Au fait, il peut également être utilisé dans un trading à devise unique.

Les caractéristiques du Panneau de Contrôle MCM (version concours) :

Il dispose d'un minimum de fonctions nécessaires pour utiliser le mode multicurrency dans les systèmes de trading et les indicateurs :

  • Ajouter/Retirer des symboles pour le trading et l'analyse.
  • Il permet de suivre les événements "nouveau tick" et "nouvelle bougie" pour n'importe quel symbole et période.
  • Tous les paramètres peuvent être modifiés "à la volée" sans redémarrer le système de trading ou l'indicateur. 
  • Le panneau peut être utilisé avec nos systèmes de trading et indicateurs.
  • Il peut également être inclus dans votre code, il sera chargé avec eux.
  • Il est transparent. Vous n'avez pas besoin d'ajouter le code du Panneau de Contrôle MCM à vos systèmes de trading ou indicateurs.

En utilisant le "Panneau de Contrôle MCM", vous pouvez ajouter vos propres fonctionnalités. Voir ci-dessous pour plus de détails.

La sauvegarde/restauration des paramètres du Panneau de Contrôle n'est pas prise en charge dans cette version.


Démarrage du Panneau de Contrôle MCM

Le lancement du "Panneau de Contrôle MCM" peut se faire de plusieurs manières : 

  • Attachez l'indicateur "iControl panel MCM" au graphique.
  • Lancez le script "scControl panel MCM". Ce script charge l'indicateur "iControl panel MCM".
  • Chargez le Panneau depuis votre système de trading ou indicateur. Voir "exControl panel MCM" pour plus de détails.

Dans le 3ème cas, le Panneau sera chargé avec notre système de trading ou indicateur et attaché au graphique.

Votre système de trading doit avoir un gestionnaire d'événements OnChartEvent() pour traiter les événements du Panneau de Contrôle MCM.

Interface

L'interface utilisateur est simple, elle est mise en œuvre sous forme de menu. La taille et les couleurs du menu peuvent être configurées par des paramètres d'entrée.

Elle ressemble à ceci :


 

Design

Le Panneau est utilisé pour configurer les événements pour les systèmes de trading et les indicateurs multicurrency.

La taille et la position du Panneau dépendent de la taille du graphique et de la taille de la police (définie dans les paramètres d'entrée). Pour libérer de l'espace de travail, le Panneau peut être minimisé.


 

La taille du Panneau peut être modifiée en ajustant la taille de la police dans les paramètres d'entrée (Taille de police=10 par défaut) :

 

Vous pouvez définir toutes les couleurs que vous souhaitez.

Par exemple, le schéma rose :


Le schéma EMO :


 

 

Facile à utiliser

Le menu est intuitif, il est facile à utiliser.

Le bouton "Panneau de Contrôle MCM" contient des fonctionnalités supplémentaires (non incluses dans cette version) :


Avec le bouton "Graphique", vous pouvez facilement changer le symbole et la période en cours, il vous suffit de le choisir :


 

Les "Événements" vous permettent d'activer/désactiver les événements "à la volée" (sans redémarrer le système de trading ou l'indicateur) pour un symbole donné et de spécifier l'événement nécessaire. Ces événements peuvent être traités à l'intérieur de la fonction OnChartEvent() du système de trading ou de l'indicateur. Le menu des symboles contient uniquement les symboles sélectionnés à partir de "Market Watch". Vous pouvez combiner tous les événements, tous seront traités.

Par exemple, il n'est pas nécessaire de s'inquiéter de l'apparition d'un nouveau tick/bar pour les symboles sur des périodes, le moteur du Panneau enverra les événements :


  

Voici l'aide :


 

Savoir-faire et mise en œuvre

Ma solution est publiée dans le gestionnaire d'événements Multicurrency OnTickMarketWatch, mais ce Panneau a quelques fonctionnalités supplémentaires :

  • "Le Panneau de Contrôle MCM" fournit une interface, non implémentée directement dans le terminal client. Il vous permet d'utiliser le mode multicurrency via le gestionnaire d'événements OnChartEvent(). L'autre fonctionnalité est la possibilité de changer les paramètres "à la volée".
  • Pour générer les événements pour le gestionnaire d'événements OnChartEvent(), le Panneau de Contrôle MCM utilise ses propres "agents" (indicateurs, lancés par le Panneau de Contrôle MCM sur un symbole donné), fournissant l'événement pour le trading multicurrency.
  • Le Panneau peut être inclus dans des systèmes de trading ou des indicateurs.
  • Le Panneau de Contrôle MCM offre de nouvelles possibilités pour les développeurs MQL5.
  • À mon avis, le Panneau est un exemple d'une nouvelle structure de systèmes de trading et d'indicateurs. Je fournirai quelques exemples plus tard.

Informations sur les événements et alertes

Le Panneau a une barre d'état pour afficher les événements.


Installation du Panneau de Contrôle MCM

Décompressez le fichier archive mcm_control_panel.zip dans le dossier du terminal client. Après cela, les fichiers suivants apparaîtront :

  • /mql5/experts/exControl panel MCM.mq5 - exemple de système de trading ;
  • /mql5/scripts/scControl panel MCM.mq5  - exemple de script ;
  • /mql5/indicators/iControl panel MCM.mq5 - indicateur, le moteur principal du "Panneau de Contrôle MCM" ;
  • /mql5/indicators/Spy Control panel MCM.mq5 - indicateur, agent du "Panneau de Contrôle MCM"
  • /mql5/include/Control panel MCM.mqh - un ensemble de classes et de fonctions du "Panneau de Contrôle MCM".

Ensuite, compilez les indicateurs, le script et le système de trading.


Lancement du Panneau de Contrôle MCM

Pour lancer le Panneau de Contrôle MCM, attachez l'indicateur iControl panel MCM.mq5 à n'importe quel graphique.

Le Panneau peut être lancé depuis le système de trading, il suffit d'attacher le système de trading "exControl panel MCM" au graphique :


 

À titre d'exemple de multicurrency, j'ai écrit le système de trading MultiTrend. L'indicateur trace la tendance USD, basé sur l'analyse de 4 paires de devises :

Voici le code :

//+------------------------------------------------------------------+ 
//|                                                   MultiTrend.mq5 | 
//|                                                  Copyright 2010, Lizar | 
//|                            https://www.mql5.com/ru/users/Lizar | 
//+------------------------------------------------------------------+ 
#define VERSION       "1.00 Build 2 (09 Dec 2010)" 
#property copyright   "Copyright 2010, Lizar"
#property link        "https://www.mql5.com/ru/users/Lizar"
#property version     VERSION
#property description "Cet Expert Advisor utilise le Panneau de Contrôle MCM"
input color bg_color=Gray;         // Couleur du menu 
input color font_color=Gainsboro; // Couleur du texte 
input color select_color=Yellow  // Couleur du texte sélectionné 
input int font_size=10;          // Taille de la police 
#include <Control panel MCM.mqh> //<--- Fichier à inclure 
//+------------------------------------------------------------------+ 
//| Fonction d'initialisation de l'Expert Advisor                                   | 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- Initialisation du Panneau de Contrôle MCM.     
//--- Il n'est pas nécessaire de définir les couleurs, si elles ne sont pas spécifiées, les couleurs par défaut seront utilisées.      
   InitControlPanelMCM(bg_color,font_color,select_color,font_size);
//---    
  return(0);   
  } 
//+------------------------------------------------------------------+ 
//| Fonction de désinitialisation de l'Expert Advisor                                 | 
//+------------------------------------------------------------------+ 
void OnDeinit(const int reason)
  {
   DeinitControlPanelMCM();   //<--- Désinitialisation du Panneau de Contrôle MCM  
  }
//+------------------------------------------------------------------+ 
//| Gestionnaire d'événements OnChartEvent.                                      | 
//| Voir la référence MQL5 pour plus de détails.                                  | 
//| Peut être utilisé avec le Panneau de Contrôle MCM pour le trading multicurrency     | 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // identifiant de l'événement :                                      
                  // si id-CHARTEVENT_CUSTOM==0 - événement d'initialisation (lorsque prev_calculated==0)
                  const long&   lparam, // période 
                  const double& dparam, // prix    
                  const string& sparam  // nom du symbole 
                  )
  {
   if(id>=CHARTEVENT_CUSTOM)
     {
      Print(TimeToString(TimeCurrent(),TIME_SECONDS)," -> id=", id-CHARTEVENT_CUSTOM,
                         ":  ",sparam," ",EventDescription(lparam)," prix=",dparam);
     }
  }
//+------------------------------------------------------------------+ 

Les paramètres de OnChartEvent().

Le Panneau de Contrôle génère des événements personnalisés. Ces événements peuvent être traités dans le système de trading ou l'indicateur à l'aide du gestionnaire d'événements OnChartEvent() .

Les paramètres d'entrée :

  • id - identifiant de l'événement :
          si id-CHARTEVENT_CUSTOM !=0 - il est égal à l'index du symbole dans la fenêtre "Market Watch" ;
  • lparam  -  drapeau d'événement. Voir l'énumération ENUM_CHART_EVENT_SYMBOL dans Control panel MCM.mqh.
  • dparam -  prix du tick ou prix d'ouverture de la nouvelle bougie sur une certaine période.
  • sparam -  nom du symbole

Liste des événements pris en charge dans le Panneau de Contrôle MCM

Utilisant le paramètre lparam, le Panneau de Contrôle peut envoyer jusqu'à 64 événements personnalisés différents sur un symbole. Dans cette version, les événements suivants sont pris en charge : 

  • Événement d'initialisation (Initialization) ;
  • Événement de nouveau tick (tick) ;
  • Événement de nouvelle bougie sur le graphique M1 (M1) ;
  • Événement de nouvelle bougie sur le graphique M2 (M2) ;
  • Événement de nouvelle bougie sur le graphique M3 (M3) ;
  • Événement de nouvelle bougie sur le graphique M4 (M4) ;
  • Événement de nouvelle bougie sur le graphique M5 (M5) ;
  • Événement de nouvelle bougie sur le graphique M6 (M6) ;
  • Événement de nouvelle bougie sur le graphique M10 (M10) ;
  • Événement de nouvelle bougie sur le graphique M12 (M12) ;
  • Événement de nouvelle bougie sur le graphique M15 (M15) ;
  • Événement de nouvelle bougie sur le graphique M20 (M20) ;
  • Événement de nouvelle bougie sur le graphique M30 (M30) ;
  • Événement de nouvelle bougie sur le graphique H1 (H1) ;
  • Événement de nouvelle bougie sur le graphique H2 (H2) ;
  • Événement de nouvelle bougie sur le graphique H3  (H3) ;
  • Événement de nouvelle bougie sur le graphique H4 (H4) ;
  • Événement de nouvelle bougie sur le graphique H6 (H6) ;
  • Événement de nouvelle bougie sur le graphique H8 (H8) ;
  • Événement de nouvelle bougie sur le graphique H12 (H12) ;
  • Événement de nouvelle bougie sur le graphique quotidien D1 ;
  • Événement de nouvelle bougie sur le graphique hebdomadaire (W1) ;
  • Événement de nouvelle bougie sur le graphique mensuel (MN1) ; 

La description de l'événement, renvoyée par EventDescription() est présentée entre parenthèses (Initialization, tick, Mxx, etc.). La fonction EventDescription peut être trouvée dans Control panel MCM.mqh (suivant l'énumération ENUM_CHART_EVENT_SYMBOL).

L'événement "Initialization" est généré lorsque prev_calculated=0, il peut être utilisé pour préparer les données, par exemple, vous pouvez recalculer les valeurs de l'indicateur.


Configuration des Événements

Pour définir les événements nécessaires, cliquez sur le bouton "Événements", sélectionnez le symbole et le type d'événement. Les événements sélectionnés sont affichés en jaune (ou dans la couleur sélectionnée dans les paramètres d'entrée de l'indicateur). Vous pouvez choisir un ou plusieurs événements, tous pourront être traités par notre système de trading multicurrency. Pour appliquer les modifications, cliquez sur le bouton "Activer/Désactiver les événements".

Le même processus peut être effectué pour tous les symboles nécessaires.


 

Voici un journal de l'onglet "Experts" : 


 

Articles connexes

Commentaire (0)