Voir comment télécharger gratuitement des robots de trading
Retrouvez-nous sur Telegram !
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 contrôle du mode multidevise "Panneau de contrôle MCM" - expert pour MetaTrader 5

Vues:
69
Note:
(43)
Publié:
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 est qu'il permet de créer des outils pour les indicateurs et les Expert Advisors afin de travailler en mode multidevise réel. Le script que j'ai publié dans la base de code "Multicurrency tick handler OnTickMarketWatch" le confirme.

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 l'aide :

Все возникающие события клиентский терминал складывает в общую очередь. Таким образом события обрабатываются одно за другим в порядке поступления. Исключение составляет событие NewTick. Если в очереди уже есть такое событие либо это событие находится в состоянии обработки, то новое событие NewTick в очередь не ставится.
Очередь событий имеет ограниченный размер. При переполнении очереди старые события удаляются без обработки для того, чтобы освободить место для вновь поступающих событий. Поэтому крайне рекомендуется писать эффективные обработчики событий и не рекомендуется использовать бесконечные циклы.

En outre, il est parfois nécessaire de négocier ou de calculer des indicateurs uniquement lorsqu'une nouvelle barre apparaît. Ou de désactiver d'urgence le trading multidevise sur un instrument sans interrompre son travail, pour ainsi dire "à la volée". Ou de changer, par exemple, la période d'un symbole sans interrompre le trading multidevise. Et ces "nombreuses autres choses" sont souvent des données provenant de l'environnement externe dans lequel l'indicateur ou le conseiller expert travaille.

C'est pour définir l'environnement externe dans lequel l'indicateur multidevise ou l'Expert Advisor travaille que le panneau de contrôle du mode multidevise "Panneau de contrôle MCM" (Panneau de contrôle du mode multidevise) a été conçu.

D'ailleurs, ce panneau peut être facilement utilisé pour les opérations dans une seule devise.


Avantages de la version du "Panneau de contrôle MCM" soumise au concours

Fonctionnalité
La version présentée dispose de tous les éléments suivants minimum minimum de fonctions nécessaires à la mise en place du mode multidevise des indicateurs et des conseillers experts, à savoir :

  • Connecter/déconnecter les symboles de la fenêtre "Market Watch" pour le trading ou l'analyse.
  • Définir le mode de négociation par ticks ou par événement "nouvelle barre" pour toute période et tout symbole sélectionnés dans "Market Watch".
  • Modifier tous les paramètres ci-dessus "à la volée" sans décharger, arrêter ou accéder à la fenêtre des propriétés d'un conseiller expert ou d'un indicateur.
  • Le panneau peut être installé en tant qu'unité indépendante sur un graphique, puis les conseillers experts et les indicateurs compatibles avec le panneau peuvent être "lancés" sur le graphique.
  • Le tableau peut être inclus en tant qu'unité composite d'indicateurs ou de conseillers experts. Il sera chargé en même temps qu'eux.
  • Tout cela ne limite pas votre créativité dans la création d'indicateurs et de conseillers experts multidevises. De plus, grâce à "Control panel MCM", vous n'aurez pas à "coudre" dans votre code ce que ce développement vous apporte.

En étudiant le menu "Control panel MCM", vous pourrez voir le service supplémentaire, qui est possible, mais qui n'est pas inclus dans la version compétitive.

Une description plus détaillée de la fonctionnalité "Panneau de contrôle MCM" est donnée ci-dessous dans la section "Travailler avec le panneau de contrôle en mode multidevise".

Limitation des fonctionnalités : cette version ne sauvegarde pas les paramètres lors du rechargement du panneau, et n'inclut pas de modules supplémentaires qui étendent les fonctionnalités de base.


Facilité d'installation et de maintenance du tableau de bord

Le "panneau de contrôle MCM" est facile à installer. Elle peut se faire de trois manières :

  • Charger l'indicateur "iControl panel MCM", qui est le "moteur" du tableau, sur le graphique souhaité.
  • Exécutez le script "scControl panel MCM". Ce script est fait juste pour l'exemple, il exécute l'indicateur "iControl panel MCM".
  • Activez le chargement du tableau de bord à partir de votre indicateur ou EA. L'exemple de l'Expert Advisor se trouve dans le fichier "exControl panel MCM".

Dans la dernière variante, le panneau sera chargé avec votre indicateur ou Expert Advisor dans une fenêtre. Dans les deux premières variantes, le tableau de bord lui-même sera installé. Ensuite, votre Expert Advisor ou votre indicateur peut être installé dans cette fenêtre, qui doit être compatible avec le "Panneau de contrôle MCM". La seule condition de compatibilité pour vos programmes MQL est la présence du gestionnaire d'événements standard OnChartEvent() dans ceux-ci.


Conception de l'interface

Simple. Elle se présente sous la forme d'un menu traditionnel. L'ajustement des couleurs et de la taille se fait par le biais des propriétés de l'indicateur. Le panneau et les boutons du panneau se présentent comme suit :

Réglage des couleurs et de la taille de l'écran MCM de la micro-console iControl


L'ergonomie du travail dans les activités quotidiennes

Ici aussi, tout est très simple. Le panneau lui-même n'est nécessaire que pour définir les événements nécessaires au système multidevise au tout début du travail. La taille des fenêtres est adaptée à la taille de la fenêtre graphique, si possible. Si le menu est suffisamment long, une ligne de défilement vertical de la liste des menus apparaît. Après ajustement, le panneau peut être minimisé et il "dormira" dans le coin inférieur gauche de la fenêtre jusqu'à ce qu'il soit réveillé. Il n'encombre pas le graphique et n'interfère pas beaucoup.

Panneau iControl plié Panneau nidicateur MCM

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

Réglages de la police de l'indicateur MCM de la micro-console iControl

Par exemple, pour le glamour aveugle blaaaandinks, le panneau peut ressembler à ceci :

Réglage des couleurs du panneau iControl Panneau d'affichage MCM

Et pour les mystérieuses OGE qui voient tout, le panel pourrait ressembler à ceci, par exemple :

Réglage des couleurs du panneau iControl Panneau d'affichage MCM


Actions faciles à apprendre et à mémoriser

Le menu du tableau de bord est intuitif. Étant donné que le menu ne comporte que quelques boutons, il est difficile de s'y perdre et facile à mémoriser.

Le bouton de menu "Panneau de contrôle MCM" contient des outils supplémentaires qui étendent les capacités du panneau (non connectés dans cette version) :

Outils supplémentaires du panneau iControl Panneau indicateur MCM

Le bouton de menu "Graphique" contient des réglages pour le symbole et la période du graphique actuel. En sélectionnant un symbole ou une période différents, vous pouvez modifier les paramètres du graphique actuel :

Modification des paramètres du graphique MCM actuel de la micro-console iControl

Le bouton de menu "Evénements" permet d'activer/désactiver à la volée (sans désactiver l'Expert Advisor ou l'indicateur) les symboles pour le trading ou l'analyse, ainsi que de configurer les événements nécessaires pour les symboles sélectionnés. Ces événements peuvent être contrôlés par la fonction OnChartEvent() d'un Expert Advisor ou d'un indicateur.

Le menu n'affiche que les symboles sélectionnés dans la fenêtre "Market Watch". Vous pouvez sélectionner n'importe quel événement unique ou combiner plusieurs événements. Tous ces événements seront introduits dans le moniteur multidevises. Maintenant, dans vos indicateurs ou conseillers experts, vous n'avez pas besoin de vous préoccuper, 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 par le biais du gestionnaire d'événement OnChartEvent() :

Événement nouveau panneau iControl Barre de panneaux MCM

Le bouton de menu "Aide" a été créé par pur intérêt personnel - pour témoigner de ma paternité et vous envoyer, dans le sens de "diriger" vers ce forum :

Aide pour le panneau iControl MCM


Solutions de savoir-faire, ou Approche intéressante

En fait, j'ai révélé ma solution de savoir-faire en publiant "OnTickMarketWatch multi-currency tick handler". Mais ce panneau contient des solutions supplémentaires et exclut tous les inconvénients du script proposé précédemment :

  • Le "panneau de contrôle MCM" offre un service qui n'est pas mis en œuvre de manière standard dans le terminal. En effet, il offre la possibilité d'un véritable mode multidevise par le biais du gestionnaire d'événements OnChartEvent() et vous permet de déplacer certains paramètres en dehors des Expert Advisors, avec la possibilité de les modifier rapidement "à la volée".
  • Pour générer des événements pour le gestionnaire d'événements standard OnChartEvent(), le panneau utilise ses propres "agents", qui fournissent les événements correspondants pour le conseiller expert multidevise. Cela vous permet de "décharger" l'Expert Advisor multidevise en parallélisant le traitement des données. Par agents, j'entends les indicateurs qui sont lancés par le "Panneau de contrôle MCM" sur le symbole sélectionné.
  • Le panneau peut être utilisé comme un outil indépendant ou intégré dans des conseillers experts ou des indicateurs. Cela vous permet de l'utiliser de manière très flexible.
  • Le "Panneau de contrôle MCM" ne limite pas le potentiel créatif des programmeurs lors de la création d'indicateurs multidevises et de conseillers experts. De plus, grâce à "Control panel MCM", vous n'aurez plus à "coudre" dans le code ce que ce développement fournit.
  • Il crée (ou du moins prétend créer) une nouvelle norme plus simple pour l'architecture des conseillers experts et des indicateurs. IMHO, bien sûr. Si j'ai le temps, je posterai quelques exemples.


Support d'information sur les événements et les alertes du trader

À cette fin, le panneau dispose d'une barre d'état où tous les événements et actions de l'opérateur sont affichés. En fait, il existe un module d'extension pour le journal des événements, mais je ne l'ai pas inclus dans cette version par dépit.


Quelques particularités du travail avec le "Panneau de contrôle MCM".

Installation du panneau.

Pour installer le panneau, il est nécessaire de décompresser le fichier d'archive "Control panel MCM.rar" dans le répertoire mql5. Lors de la décompression, vous obtiendrez plusieurs fichiers :

  • /mql5/experts/exPanneau de contrôle MCM.mq5 - un exemple de conseiller expert utilisant le modèle ;
  • /mql5/scripts/scControl panel MCM.mq5 - script qui charge 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 - collection de fonctions et de classes de "Control panel MCM".

Compilez le conseiller expert, le script et les deux indicateurs.

Chargement du tableau de bord

Le chargement du tableau de bord est simple : exécutez l'indicateur "iControl panel MCM.mq5" sur n'importe quel symbole et n'importe quelle période. C'est tout. Vous pouvez ensuite jouer avec le tableau de bord. Vous pouvez attacher des Expert Advisors et des indicateurs compatibles avec le "Panneau de contrôle MCM" au graphique.

Pour moi, il est plus pratique de charger le tableau de bord à partir de l'Expert Advisor. Lancez le Conseiller Expert "ex-panneau de contrôle MCM" et obtenez :

Exemple d'utilisation du panneau iControl MCM

En outre, par exemple, j'ai joint mon propre indicateur MultiTrend multidevise, spécialement conçu pour être utilisé avec le panneau de contrôle en mode multidevise. L'indicateur montre le mouvement du dollar (ligne rose) en se basant sur l'analyse du mouvement de quatre devises.

Le code de l'Expert Advisor est donné ci-dessous :

//+------------------------------------------------------------------+ 
//|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 "L'expert démontre le fonctionnement du panneau de contrôle du mode multidevise.
#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 sélection 
input int font_size=10;         // Taille de la police 
#include <Control panel MCM.mqh> //<--- Fichier de plug-in MCM du panneau de contrôle 
//+------------------------------------------------------------------+ 
//| Fonction d'initialisation de l'expert| 
//+------------------------------------------------------------------+ 
int OnInit()
  {    //--- Initialisation du panneau de contrôle MCA. 
//--- Il n'est pas nécessaire de spécifier des paramètres de couleur (la coloration par défaut du menu sera définie). 
   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 contrôle MCA : 
  }
//+------------------------------------------------------------------+ 
//| Une fonction standard de gestion des événements. Elle peut être utilisée | 
//| pour l'usage auquel il est destiné, tel que décrit dans la documentation. || 
//|| 
//| Avec le panneau de contrôle, MCM est un outil pratique pour la gestion des données. 
//|| Commerce multidevises.| 
//+------------------------------------------------------------------+ 
void OnChartEvent(const int id, // identifiant de l'événement : 
                  // si id-CHARTEVENT_CUSTOM==0 - initialisation, correspond au moment prev_calculated==0
                  // si id-CHARTEVENT_CUSTOM!=0 - position du symbole dans la fenêtre "Market Watch". 
                  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 OnChartEvent()

Le panneau de contrôle génère des événements utilisateur et les traduit sur le graphique installé afin de les traiter dans le conseiller 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 :
    if id-CHARTEVENT_CUSTOM !=0 - position du symbole dans la fenêtre "Market Watch" ;
  • lparam ; - drapeau de l'événement reçu de l'agent du panel. Les drapeaux correspondent à l'énumération ENUM_CHART_EVENT_SYMBOL, qui se trouve au début du fichier MCM.mqh de la micro-console, et la description se trouve un peu plus loin dans le texte.
  • dparam - prix du tick ou prix d'ouverture d'une nouvelle barre sur une certaine période.
  • sparam - nom de l'instrument de trading pour lequel l'événement s'est produit


Liste des événements fournis Panneau de contrôle MCM

Grâce à lparam, le panneau de contrôle peut, en fonction des paramètres, fournir jusqu'à 64 événements personnalisés différents par symbole. Dans cette version de la micro-console, MCM peut transmettre les événements suivants :

  • Événement d'initialisation (Initialisation) ;
  • Événement "nouveau tick" ;
  • Événement "nouvelle barre" sur le graphique 1 minute (M1) ;
  • Événement "nouvelle barre" sur le graphique 2 minutes (M2) ;
  • Evénement "nouvelle barre" sur le graphique 3 minutes (M3) ;
  • Evénement "nouvelle barre" sur le graphique 4 minutes (M4) ;
  • Evénement "nouvelle barre" sur le graphique 5 minutes (M5) ;
  • Evénement "nouvelle barre" sur le graphique 6 minutes (M6) ;
  • Événement "nouvelle barre" sur le graphique 10 minutes (M10) ;
  • Une "nouvelle barre" sur le graphique en 12 minutes (M12) ;
  • Nouvelle barre sur le graphique en 15 minutes (M15) ;
  • Nouvelle barre sur le graphique en 20 minutes (M20) ;
  • Nouvelle barre sur le graphique en 30 minutes (M30) ;
  • Nouvelle barre sur le graphique 1 heure (H1) ;
  • Nouvelle barre sur le graphique 2 heures (H2) ;
  • Nouvelle barre sur le graphique 3 heures (H3) ;
  • Nouvelle barre sur le graphique de 4 heures (H4) ;
  • Nouvelle barre sur le graphique de 6 heures (H6) ;
  • Nouvelle barre sur le graphique de 8 heures (H8) ;
  • Nouvelle barre sur le graphique de 12 heures (H12) ;
  • Nouvelle barre sur le graphique journalier (D1) ;
  • Nouvelle barre sur le graphique hebdomadaire (W1) ;
  • Nouvelle barre sur le graphique mensuel (MN1) ;

La description de l'événement renvoyée par la fonction EventDescription() est donnée entre parenthèses. La fonction elle-même se trouve également au début du fichier MCM.mqh de la micro-console, 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 mis à zéro sur le symbole à l'origine de l'événement. Par conséquent, dans notre indicateur multidevise ou Expert Advisor, il est nécessaire de prendre les mesures appropriées. Par exemple, recalculer l'indicateur sur ce symbole.


Mise en place d'événements

La configuration des événements qui seront reçus des agents du panneau de contrôle s'effectue par le biais du bouton de menu "Événements". Une liste de tous les symboles, qui sont actuellement sélectionnés dans la fenêtre "Market Watch", apparaîtra en appuyant sur le bouton. Pour activer les événements par symbole, vous devez double-cliquer sur celui-ci avec votre souris. Il est préférable de le faire lentement, afin de ressentir tout le plaisir de l'action.

Si vous avez déjà activé les événements par un symbole (ce symbole est mis en évidence par une couleur vive), il suffit de cliquer une fois dessus. Une liste d'événements apparaît. Vous pouvez sélectionner un ou plusieurs événements, tous seront reçus par votre multidevise. Pour que les changements prennent effet, vous devez appuyer sur le bouton "Activer/Désactiver les événements". Et ainsi de suite pour tous les symboles requis.

Sélection des événements de la micro-console iControl MCM

Voici ce que nous avons comme résultat du fonctionnement de l'Expert Advisor de démonstration avec le panneau :

Exemple de fonctionnement de l'indicateur MCM de la micro-console iControl

Traduit du russe par MetaQuotes Ltd.
Code original : https://www.mql5.com/ru/code/215

YURAZ_CreateCSV_HistoryFile_From_MT5_For_MT4 YURAZ_CreateCSV_HistoryFile_From_MT5_For_MT4

Ce script vous aidera à obtenir pour MetaTrader 4 un historique complet sans trous à partir de la base de données de MetaTrader 5.

Réinitialisation du graphique Réinitialisation du graphique

Réinitialisation d'un graphique avec recalcul de tous les indicateurs, ainsi qu'un exemple simple et transparent, orienté objet, de traitement de tous les graphiques à partir d'un conseiller 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.