Bibliothèque graphique GUI pour MetaTrader : guide d’installation et d’utilisation

Bibliothèque graphique GUI pour MetaTrader : guide d’installation et d’utilisation

10 novembre 2026, 16:44
Omar Alkassar
0
5

✔️ Bibliothèque graphique GUI MT4© :   https://www.mql5.com/en/market/product/206760

✔️ Bibliothèque graphique GUI MT5© :   https://www.mql5.com/en/market/product/206761

✔️ Documentation complète, galerie d'éléments et outil Image to Code⁵ :   https://www.betasoft.dev/gui-graphic-library



Un tableau des positions, un bon de commande et un graphique en direct.

La bibliothèque graphique GUI offre à vos Expert Advisors et indicateurs une interface complète : fenêtres, onglets, menus, tableaux, graphiques, sélecteurs, boîtes de dialogue et widgets de trading. Tout est affiché sur une seule interface, le même code est compatible avec MetaTrader 4 et MetaTrader 5, et l’API complète ne comporte que 15 fonctions.

Ce guide vous accompagne du téléchargement à la création de votre premier panneau de contrôle, puis vous présente les tâches les plus fréquentes. Chaque exemple de code utilise uniquement le fichier d'en-tête public ; vous pouvez donc le copier-coller dans votre propre programme.

Une petite partie des 78 éléments : boutons, champs de saisie, curseurs et onglets.

1. Avant de commencer

  • MetaTrader 4 ou MetaTrader 5 sous Windows. Les polices et les icônes suivent l'échelle d'affichage de Windows (100, 125, 150 et 200 %).
  • MetaEditor, pour compiler les démos et vos propres programmes.
  • Aucune option à autoriser dans les paramètres du terminal : la bibliothèque n’utilise aucune DLL, n’effectue aucune requête web et n’utilise aucune variable globale du terminal.
  • Les versions MT4 et MT5 sont des produits distincts. Installez celle qui correspond à votre terminal.

2. Installation

  1. Dans le terminal, choisissez Fichier, puis Ouvrir le dossier de données.
  2. Ouvrez le dossier MQL5 (MetaTrader 5) ou le dossier MQL4 (MetaTrader 4).
  3. Copiez chaque fichier dans le dossier indiqué dans le tableau ci-dessus : Bibliothèques, Inclure, Experts et Indicateurs.
  4. Ouvrez chaque démo dans MetaEditor et appuyez sur F7. Le résultat devrait afficher 0 erreurs, 0 avertissements.
  5. De retour dans le terminal, actualisez le Navigateur (clic droit, Actualiser) pour que les nouveaux programmes apparaissent.

Les dossiers devraient ressembler à ceci :

MQL5/

  Include/GUI_Graphic_Library.mqh

  Libraries/GUI_Graphic_Library.ex5

  Experts/GUI_Graphic_Library_FullDemo.mq5

          GUI_Graphic_Library_ElementTests.mq5

  Indicators/GUI_Graphic_Library_IndicatorWindow.mq5

             GUI_Graphic_Library_IndicatorChart.mq5

MQL4/   the same files with .mq4 and .ex4

Ne renommez pas le fichier de bibliothèque. Le fichier d'en-tête le charge sous ce nom.

Vérifications après l'installation

Vérifier

Où

Le fichier .ex5 (ou .ex4) se trouve dans les bibliothèques.

Dossier de données

Le fichier .mqh se trouve dans Include

Dossier de données

La démo se compile sans erreur.

MétaÉditeur

La démo affiche une fenêtre sur le graphique

Graphique

L'onglet Experts ne contient aucune ligne « non prise en charge ».

Terminal, boîte à outils

Que contient le fichier GUI_Graphic_Library.mqh ?

Le fichier d'en-tête est volontairement court. Au-dessus du bloc d'importation, il déclare les énumérations (types d'objets, propriétés, événements, thèmes et icônes). Le bloc d'importation situé en dessous charge la bibliothèque compilée et liste ses 15 fonctions. MetaTrader 5 charge le fichier .ex5 et MetaTrader 4 charge le fichier .ex4, choisi par le compilateur. Vous incluez le fichier, vous ne le modifiez jamais.

 #ifdef __MQL5__
#import "\\Market\\GUI_Graphic_Library.ex5"
#else
#import "\\Market\\GUI_Graphic_Library.ex4"
#endif
   string Gui_Version();
   bool    Gui_Create( const long chart= 0 , const string name= "GUI_Graphic_Library" , const int subwin= 0 );
   void    Gui_Destroy();
   void    Gui_ChartEvent( const int id, const long lparam, const double dparam, const string sparam);
   void    Gui_Timer();
   void    Gui_Update( const bool force= false );
   bool    Gui_NextEvent(ENUM_GUI_EVENT &event, int &sender, long &lparam, double &dparam, string &sparam);
   int     Gui_Add( const ENUM_GUI_OBJECT type, const int parent, const string name, const string text, const int x, const int y, const int w, const int h);
   int     Gui_Set( const int id, const ENUM_GUI_PROP prop, const string s= "" , const double a= EMPTY_VALUE , const double b= EMPTY_VALUE , const double c= EMPTY_VALUE , const double d= EMPTY_VALUE );
   string Gui_Get( const int id, const ENUM_GUI_PROP prop, const string s= "" , const double a= EMPTY_VALUE , const double b= EMPTY_VALUE );
   double Gui_GetNum( const int id, const ENUM_GUI_PROP prop, const string s= "" , const double a= EMPTY_VALUE , const double b= EMPTY_VALUE );
   int     Gui_SetArray( const int id, const ENUM_GUI_PROP prop, const double &values[], const double a= EMPTY_VALUE );
   int     Gui_AddImage( const string name, const uint &argb[], const int w, const int h);
   int     Gui_Find( const string name);
   void    Gui_BringToFront();
#import

Les 15 fonctions dans l'ordre où elles apparaissent :

Fonction

Ce que cela fait

Là où vous l'appelez

Version de l'interface graphique

Renvoie la version de la bibliothèque sous forme de texte.

N'importe où

Créer une interface graphique

Lance l'interface graphique sur un graphique. Indiquez 0 pour le graphique actuel, un nom pour votre programme et un numéro de sous-fenêtre pour les indicateurs. Renvoie vrai en cas de succès.

OnInit

Détruire l'interface graphique

Supprime l'interface graphique et tout ce qu'elle affichait.

OnDeinit

Événement Gui_Chart

Transmet l'événement du graphique (souris, touches, clics) à la bibliothèque.

Événement OnChart

Minuteur d'interface graphique

Exécute les minuteurs de la bibliothèque : animations, notifications, compteurs.

Minuteur

Mise à jour de l'interface graphique

Repeint ce qui a changé. Utilisez « true » pour tout repeindre.

Fin de chaque gestionnaire

Événement Gui_Next

Prend l'événement suivant dans la file d'attente (clic, modification, résultat de dialogue, demande d'échange). Renvoie faux si la file d'attente est vide.

boucle d'événements

Ajout d'interface graphique

Crée un élément et renvoie son identifiant. Vous devez fournir le type, le parent, un nom, le texte, ainsi que les coordonnées x, y, la largeur et la hauteur.

OnInit

Ensemble d'interfaces graphiques

Modifie une propriété ou exécute une action sur un élément. Renvoie -1 et consigne une ligne si l'élément ne le prend pas en charge.

N'importe où

Gui_Get

Lit une propriété sous forme de texte.

N'importe où

Gui_GetNum

Interprète une propriété sous forme de nombre.

N'importe où

Gui_SetArray

Envoie une liste de nombres à un élément, par exemple une série graphique complète.

N'importe où

Gui_AjouterImage

Enregistre une image à partir d'un tableau de pixels ARGB, afin que les éléments puissent l'afficher. L'outil « Image vers code » du site web crée ce tableau à partir d'un fichier PNG.

OnInit

Gui_Find

Recherche l'identifiant d'un élément par son nom.

N'importe où

Gui_BringToFront

Déplace l'interface graphique au-dessus des objets graphiques que vous avez dessinés après elle.

Après avoir créé des objets graphiques

Voilà l'interface complète. Tout le reste de ce guide est une combinaison de ces 15 appels.

3. Lancez la démo complète

  1. Ouvrez un graphique. Une grande fenêtre, par exemple de 1280 x 720 pixels ou plus, offre le meilleur affichage.
  2. Faites glisser GUI_Graphic_Library_FullDemo depuis le Navigateur vers le graphique.
  3. Utilisez les onglets de section en haut : Accueil, Cas d’utilisation, Boutons, Entrées, Sélecteurs, Données, Graphiques, Mise en page, Commentaires, Trading et Paramètres.

La démo n'envoie jamais d'ordres sauf si vous activez l'option InpLiveTrading. Laissez-la désactivée sur un compte réel. Si vous fermez la fenêtre principale, le conseiller expert se ferme automatiquement.

Utilisez GUI_Graphic_Library_ElementTests lorsque vous souhaitez examiner un élément à la fois : cliquez sur un groupe dans sa fenêtre de sélection.

Un tableau de bord construit uniquement à partir des éléments de la bibliothèque.

4. Votre premier panneau

Il s'agit d'un Expert Advisor complet : une fenêtre avec un champ de sélection de la taille du lot, un bouton « Acheter » et une barre d'état. Il n'effectue aucune transaction ; il affiche un message.

 #include <GUI_Graphic_Library.mqh>
int wMain, spLots, btnBuy, lblInfo;
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   if (!Gui_Create( 0 , "MyPanel" ))
       return INIT_FAILED ;       // 0 = this chart
   Gui_Set( 0 , GUI_PROP_THEME, "" , GUI_THEME_DARK);
   wMain = Gui_Add(GUI_OBJ_WINDOW, 0 , "wMain" , "My panel" , 20 , 40 , 300 , 170 );
   Gui_Set(wMain, GUI_PROP_THEME_BUTTON, "" , true );       // sun / moon button
   Gui_Set(wMain, GUI_PROP_MAIN_WINDOW, "" , true );         // close asks to remove the program
   spLots = Gui_Add(GUI_OBJ_SPIN, wMain, "spLots" , "" , 10 , 10 , 280 , 30 );
   Gui_Set(spLots, GUI_PROP_RANGE, "" , 0.01 , 50 , 0.01 , 2 ); // min, max, step, digits
   Gui_Set(spLots, GUI_PROP_VALUE, "" , 0.10 );
   Gui_Set(spLots, GUI_PROP_SUFFIX, "lots" );
   btnBuy = Gui_Add(GUI_OBJ_BUTTON, wMain, "btnBuy" , "BUY" , 10 , 50 , 280 , 40 );
   Gui_Set(btnBuy, GUI_PROP_STYLE, "" , GUI_BUTTON_SUCCESS);
   Gui_Set(btnBuy, GUI_PROP_ICON, "" , GUI_ICON_ARROW_UP);
   lblInfo = Gui_Add(GUI_OBJ_LABEL, wMain, "lblInfo" , "Ready" , 10 , 100 , 280 , 20 );
   Gui_Set(lblInfo, GUI_PROP_DIM, "" , true );
   Gui_Set( 0 , GUI_PROP_REDRAW);
   return INIT_SUCCEEDED ;
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ProcessEvents()
  {
   ENUM_GUI_EVENT ev;
   int sender;
   long l;
   double d;
   string s;
   while (Gui_NextEvent(ev, sender, l, d, s))
       if (ev == GUI_EVENT_CLICK && sender == btnBuy)
        {
         double lots = Gui_GetNum(spLots, GUI_PROP_VALUE);
         Gui_Set(lblInfo, GUI_PROP_TEXT, "Buy " + DoubleToString (lots, 2 ) + " lots" );
         Gui_Set( 0 , GUI_PROP_TOAST, "Buy|" + DoubleToString (lots, 2 ) + " lots" , GUI_NOTICE_SUCCESS, 3000 );
        }
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int r)
  {
   Gui_Destroy();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   Gui_Timer();
   ProcessEvents();
   Gui_Update();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id, const long &l, const double &d, const string &s)
  {
   Gui_ChartEvent(id, l, d, s);
   ProcessEvents();
   Gui_Update();
  }

Le schéma ne change jamais :

  1. OnInit crée l'interface graphique et ses éléments.
  2. OnChartEvent et OnTimer transmettent des événements à la bibliothèque, lisent la file d'attente et appellent Gui_Update.
  3. OnDeinit détruit l'interface graphique.

5. Comment la bibliothèque réfléchit

  • Gui_Add renvoie un identifiant numérique. Conservez les identifiants dont vous avez besoin ou retrouvez-en un ultérieurement par son nom avec Gui_Find("nom"). L'identifiant 0 correspond à l'interface graphique elle-même : thème, notifications, boîtes de dialogue, compteurs.
  • Éléments parents. Chaque élément est ajouté à un parent : une fenêtre ou un conteneur. Les fenêtres, les menus et les étiquettes de prix utilisent le parent 0. Pour un onglet, le parent est l’élément « onglets » et l’identifiant renvoyé correspond à la page à laquelle vous ajoutez les éléments enfants.
  • Propriétés. La fonction Gui_Set(id, property, text, a, b, c, d) modifie une propriété ou exécute une action. Le texte est placé dans l'argument text ; les nombres, les couleurs et les énumérations sont placés dans les arguments a à d. Gui_Get lit le texte et Gui_GetNum lit les nombres.
  • Événements. La bibliothèque enregistre les actions de l'utilisateur. Consultez la file d'attente avec Gui_NextEvent.
  • Les coordonnées sont exprimées en pixels à l'échelle 100 %. La bibliothèque les multiplie automatiquement par l'échelle d'affichage Windows.

Si vous transmettez une propriété qu'un élément ne prend pas en charge, rien ne se casse : l'appel renvoie -1 et une ligne est écrite dans le journal des experts.

6. Les tâches que vous effectuerez le plus souvent

Lisez ce que l'utilisateur a saisi ou choisi.

 string name=Gui_Get(edName,GUI_PROP_TEXT);
double lots=Gui_GetNum(spLots,GUI_PROP_VALUE);
int     tab =( int )Gui_GetNum(tabs,GUI_PROP_SELECTED);

Onglets

 int t=Gui_Add(GUI_OBJ_TABS,win, "tabs" , "" , 10 , 10 , 600 , 300 );
int pOrders =Gui_Add(GUI_OBJ_TAB,t, "" , "Orders" , 0 , 0 , 0 , 0 );     // returns the page
int pHistory=Gui_Add(GUI_OBJ_TAB,t, "" , "History" , 0 , 0 , 0 , 0 );
Gui_Add(GUI_OBJ_BUTTON,pOrders, "b1" , "Close all" , 10 , 10 , 120 , 30 );

Tables

 int tb=Gui_Add(GUI_OBJ_TABLE,page, "tbl" , "" , 10 , 10 , 600 , 300 );
Gui_Set(tb,GUI_PROP_ADD_COLUMN, "Symbol" , 120 ,GUI_ALIGN_LEFT);
Gui_Set(tb,GUI_PROP_ADD_COLUMN, "Strength" , 130 ,GUI_ALIGN_LEFT,GUI_COL_PROGRESS);
Gui_Set(tb,GUI_PROP_ADD_BUTTON_COLUMN, "Action" , 100 ,GUI_BUTTON_PRIMARY);
Gui_Set(tb,GUI_PROP_ADD_ROW, "EURUSD|64|Trade" );
Gui_Set(tb,GUI_PROP_SORT, "" , 0 , true );

Un clic sur une cellule de bouton envoie GUI_EVENT_CELL_BUTTON avec la ligne dans lparam et la colonne dans dparam.

Graphiques

 int ch=Gui_Add(GUI_OBJ_LINECHART,page, "chart" , "Price" , 10 , 10 , 500 , 260 );
int ln=Gui_Set(ch,GUI_PROP_ADD_SERIES, "Close" , clrDodgerBlue );     // returns the series index
double closes[]; CopyClose ( _Symbol , PERIOD_H1 , 0 , 100 ,closes);
Gui_SetArray(ch,GUI_PROP_SERIES,closes,ln);                       // a whole series at once

int cd=Gui_Add(GUI_OBJ_CANDLECHART,page, "cd" , _Symbol , 10 , 280 , 500 , 260 );
Gui_Set(cd,GUI_PROP_LOAD_BARS, _Symbol , 80 );
Gui_Set(cd,GUI_PROP_ADD_MA, "" , 20 , clrDodgerBlue );
Gui_Set(cd,GUI_PROP_ADD_BANDS, "" , 20 , 2.0 );

Dialogues et toasts

 enum { CMD_CLOSE_ALL= 500 };
Gui_Set( 0 ,GUI_PROP_CONFIRM, "Close all|Close every position?|Close|Cancel" ,CMD_CLOSE_ALL);
// later, in the event loop:
if (ev==GUI_EVENT_DIALOG && Gui_GetNum(sender,GUI_PROP_CMD)==CMD_CLOSE_ALL && l== 0 )
   CloseAll();                       // l = button index, -1 = cancelled

Gui_Set( 0 ,GUI_PROP_TOAST, "Order|Filled" ,GUI_NOTICE_SUCCESS, 3000 );

Thèmes et couleurs

Gui_Set( 0 ,GUI_PROP_THEME, "" ,GUI_THEME_MIDNIGHT);   // DARK, LIGHT, MIDNIGHT, HIGHCONTRAST, SOFT
Gui_Set( 0 ,GUI_PROP_ACCENT, "" , clrOrange );
Gui_Set( 0 ,GUI_PROP_RADIUS, "" , 10 );

N'oubliez pas les fenêtres et les valeurs

Gui_Set( 0 ,GUI_PROP_AUTO_LAYOUT, "" , true );   // load now, save when the GUI is destroyed
Gui_Set( 0 ,GUI_PROP_LOAD_VALUES);             // in OnInit
Gui_Set( 0 ,GUI_PROP_SAVE_VALUES);             // in OnDeinit

Les deux utilisent de petits fichiers texte. Aucune variable globale du terminal n'est utilisée.

Faites quelque chose chaque seconde

Gui_Set( 0 ,GUI_PROP_COUNTER, "refresh" , 1000 , true );   // name, ms, repeat
// in OnTimer:
if (Gui_GetNum( 0 ,GUI_PROP_COUNTER_DONE, "refresh" )!= 0 ) RefreshNumbers();

7. Un panneau de trading avec votre propre fonction de commande

Le carnet d'ordres, le panneau de positions et le calculateur de risque analysent le compte et le symbole, puis vous informent des événements. Ils n'envoient jamais d'ordres. Vous décidez de ce qui se passe lorsque l'utilisateur clique sur « Acheter » ou « Vendre ».

 #include <GUI_Graphic_Library.mqh>
#ifdef __MQL5__
#include <Trade\Trade.mqh>
CTrade g_trade;
#endif
input bool InpLiveTrading = false ;   // send real orders
int g_ticket = 0 ;

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
int OnInit ()
  {
   if (!Gui_Create( 0 , "GUI_TradePanel" ))
       return INIT_FAILED ;
   int w = Gui_Add(GUI_OBJ_WINDOW, 0 , "w" , "Trade" , 20 , 40 , 360 , 260 );
   Gui_Set(w, GUI_PROP_MAIN_WINDOW, "" , true );
   g_ticket = Gui_Add(GUI_OBJ_ORDERTICKET, w, "ticket" , _Symbol , 10 , 10 , 340 , 212 );
   Gui_Set(g_ticket, GUI_PROP_LOTS, "" , 0.10 );
   Gui_Set(g_ticket, GUI_PROP_STOP_POINTS, "" , 300 );
   Gui_Set(g_ticket, GUI_PROP_TP_POINTS, "" , 600 );
   Gui_Set(g_ticket, GUI_PROP_SHOW_LINES, "" , true );   // SL and TP lines on the chart
   Gui_Set( 0 , GUI_PROP_CLEAR_EVENTS);
   return INIT_SUCCEEDED ;
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void MyTrade( const bool buy, const double lots, const double sl, const double tp)
  {
   if (!InpLiveTrading)
     {
       Print ( "Trading is off. Would " , buy ? "buy " : "sell " , lots, " lots" );
       return ;
     }
#ifdef __MQL5__
   if (buy)
      g_trade.Buy(lots, _Symbol , 0.0 , sl, tp);
   else
      g_trade.Sell(lots, _Symbol , 0.0 , sl, tp);
#else
   if (buy)
       OrderSend ( _Symbol , OP_BUY, lots, Ask, 3 , sl, tp, "GUI" , 0 , 0 , clrGreen );
   else
       OrderSend ( _Symbol , OP_SELL, lots, Bid, 3 , sl, tp, "GUI" , 0 , 0 , clrRed );
#endif
   }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void ProcessEvents()
  {
   ENUM_GUI_EVENT ev;
   int sender;
   long l;
   double d;
   string s;
   while (Gui_NextEvent(ev, sender, l, d, s))
       if (ev == GUI_EVENT_TRADE)           // l: 0 buy, 1 sell   d: lots   s: "sl|tp" prices
        {
         string p[];
         StringSplit (s, '|' , p);
         double sl = ( ArraySize (p) > 0 ) ? StringToDouble (p[ 0 ]) : 0.0 ;
         double tp = ( ArraySize (p) > 1 ) ? StringToDouble (p[ 1 ]) : 0.0 ;
         MyTrade(l == 0 , d, sl, tp);
        }
  }

//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnDeinit ( const int r)
  {
   Gui_Destroy();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnTimer ()
  {
   Gui_Timer();
   ProcessEvents();
   Gui_Update();
  }
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnChartEvent ( const int id, const long &l, const double &d, const string &s)
  {
   Gui_ChartEvent(id, l, d, s);
   ProcessEvents();
   Gui_Update();
  }

Testez d'abord sur un compte démo. Avant de passer des ordres réels, vérifiez également la taille du lot par rapport aux valeurs minimales, maximales et d'incrémentation du symbole, ainsi que la distance du stop par rapport au niveau de stop de votre courtier.

Les positions fonctionnent de la même manière : ajoutez GUI_OBJ_POSITIONS, puis réagissez à GUI_EVENT_POSITION (lparam est le ticket, dparam vaut 1 pour Fermer et 2 pour Modifier).

8. Son utilisation comme indicateur

Un indicateur peut afficher l'interface graphique dans sa propre sous-fenêtre. Transmettez le numéro de cette fenêtre à Gui_Create :

 #property indicator_separate_window
int OnInit ()
  {
   int sub= ChartWindowFind ();
   Gui_Create( 0 , "GUI_MyIndicator" ,sub);
   // add windows and controls as usual
   return INIT_SUCCEEDED ;
  }

Pour tracer des lignes sur le graphique des prix à partir d'un indicateur, utilisez la sous-fenêtre 0. Les deux exemples d'indicateurs sont complets. Chaque programme et chaque graphique possède sa propre interface graphique ; attribuez donc un nom d'interface graphique distinct à chaque programme.

9. MetaTrader 4 et MetaTrader 5

Sujet

MetaTrader 4

MetaTrader 5

fichier de bibliothèque

.ex4

.ex5

Menu contextuel

Appuyez longuement sur le bouton gauche, ou Ctrl + clic

clic droit

Molette de la souris

Message non envoyé par le terminal. Utilisez les barres de défilement.

Travaux

Profondeur du marché

Ajoutez les niveaux vous-même

Lit le livre du marché

Calendrier économique

Ajoutez les lignes vous-même

Chargements depuis le terminal

Dactylographie

Carte des touches américaines intégrée

Toutes les configurations de clavier fonctionnent

10. Si quelque chose ne fonctionne pas

Problème

Ce qu'il faut faire

Rien n'apparaît sur le graphique

Vérifiez que Gui_Create a renvoyé la valeur « true » et lisez les dernières lignes de l'onglet Experts.

Le compilateur ne peut pas ouvrir GUI_Graphic_Library.mqh

Le fichier d'inclusion ne se trouve pas dans le dossier Include du même dossier de données que votre programme.

Le programme ne peut pas charger la bibliothèque lors de l'exécution.

Le fichier .ex5 ou .ex4 est absent des bibliothèques, ou son nom a été modifié.

Une valeur modifiée dans le code ne s'affiche pas.

Appelez Gui_Update() à la fin de votre gestionnaire.

L'onglet Experts indique qu'une propriété n'est pas prise en charge

Cette propriété n'existe pas pour cet élément. Consultez la documentation de l'API.

Deux programmes s'affrontent sur un même graphique

Donnez à chacun un nom différent dans Gui_Create.

Les lignes du graphique recouvrent l'interface graphique.

Appelez Gui_BringToFront() après avoir créé les objets graphiques.

Le texte est trop petit ou trop grand

Définissez Gui_Set(0,GUI_PROP_SCALE,"",1.5), ou redémarrez le terminal après avoir modifié l'échelle Windows.

Vous voulez voir ce que fait la bibliothèque

Activez Gui_Set(0,GUI_PROP_DEBUG,"",true) pour la superposition de débogage.

11. Conseils

  • Appelez Gui_Update() à la fin de chaque gestionnaire. Cette fonction ne redessine que les éléments qui ont changé.
  • Les onglets masqués et les fenêtres réduites n'entraînent pas de rafraîchissement, leur mise à jour à l'aide d'une minuterie est donc peu coûteuse.
  • Utilisez GUI_PROP_MAX_FPS pour limiter la fréquence d'images si vous exécutez de nombreux graphiques.
  • Utilisez GUI_PROP_CLEAR_EVENTS à la fin de OnInit pour supprimer les événements mis en file d'attente pendant la construction du panneau.
  • Utilisez l'outil Image to Code sur le site web pour convertir un logo ou une icône PNG en un tableau pour Gui_AddImage.
  • Les nouvelles valeurs d'énumération ne sont ajoutées qu'à la fin ; ainsi, les programmes compilés avec un fichier d'en-tête plus ancien continuent de fonctionner après une mise à jour. Remplacez simultanément le fichier de bibliothèque et le fichier d'en-tête.

12. Où aller ensuite ?

Votre avis est le bienvenu. Pour toute question ou suggestion d'amélioration, veuillez laisser un commentaire sur le produit ou m'envoyer un message sur MQL5.com.




Dossiers :