Trading-Attitude
Les meilleurs indicateurs techniques
-

Créer un script en MQL4 dans MetaTrader

MQL4 trading automatiqueLeçon de trading automatique n°5

Créer un script en MQL4

 

Dans cette 5ème leçon sur le trading automatique et la réalisation de robot de trading en MQL4 nous allons étudier la création de scripts MQL4 dans MetaTrader.

Je reprends un peu la publication d’articles. J’ai un peu plus de temps car j’ai terminé la réalisation de ma formation à l’analyse technique et au trading des pépites. Le développement de robots de trading me plaît bien, donc je vais multiplier les cours sur ce sujet.

Mais revenons à nos moutons.

Qu’est-ce qu’un script MQL4 ?

Un script est un bout de code qui permet d’exécuter une tâche automatiquement ou semi-automatiquement, comme ouvrir un ordre, déplacer un Stop-Loss, etc.

 

Où se trouvent les scripts dans MetaTrader ?

Les scripts sont rassemblés dans le dossier experts\scripts de l’installation de votre MT4.

Dans l’interface graphique de MT4 ils se trouvent dans le nœud Scripts du cadre Navigateur (Ctrl+N).

MT4 cadre navigateur scripts

Localisation des scripts dans MetaTrader 4

 

Comment utiliser un script MetaTrader ?

Pour utiliser un script écrit en MQL4 et présent dans MetaTrader, il sufit de le sélectionner avec la souris et de le glisser-déposer sur le graphique. On peut aussi, pour certains double-cliquer dessus.

 

Que peut faire un script MQL4 ?

Un script peut réaliser automatiquement beaucoup de choses pour vous, parmi lesquelles :

  • détecter l’endroit où il a été déposé et récupérer le prix et la date
  • écrire du texte ou tracer des objets sur le graphique
  • écrire ou lire dans un fichier
  • passer des ordres
  • modifier un ordre, notamment son Stop-Loss ou Target Price
  • envoyer un email…

 

Créer un premier script en MQL4

Nous allons ensemble créer un premier script en MQL4. Ce script sera tout simple.

Il va afficher une fenêtre contenant le prix et afficher dans le graphique un libellé contenant les mêmes informations.

 

Le code du script MQL4

Voici tout de suite le code. Je l’explique plus après.

#property copyright "Copyright © 2013 Trading Attitude"
#property link      "http://www.trading-attitude.com"

#include <WinUser32.mqh>
#include <stdlib.mqh>

int start() {

   Alert("--- START "+WindowExpertName()+" "+Symbol());

   int digits   = MarketInfo(Symbol(),MODE_DIGITS);
   double value = NormalizeDouble(WindowPriceOnDropped(),digits);
   datetime dropTime=WindowTimeOnDropped();

   Alert("--- Value= "+value + " at " + TimeToStr(dropTime));

   if(!ObjectCreate("my text object", OBJ_TEXT, 0, dropTime, value)) {
     Print("error: can't create my text object! code #",GetLastError());
     return(0);
    }
   ObjectSetText("my text object", "Value= "+value + " at " + TimeToStr(dropTime), 12, "Times New Roman", White);

   return(0);
  }

 

Pour le créer, ouvrez MetEditor et créez un nouveau fichier.

Choisissez le type Script (nous avons déjà crée un Expert Advisor dans la leçon précédente).

Collez le code en remplacement du contenu généré automatiquement.

 

Explication du code du script

Les deux instructions include permettent d’ajouter des librairies nécessaires. Il faut les ajouter, c’est tout !

 

La fonction Alert ouvre une fenêtre dans laquelle on affiche un texte. En s’ouvrant elle fait un petit bruit (assez stressant 🙂 ).

 

La variable digits permet de calculer le prix. Les brokers n’affichent pas tous le même nombre de décimales. digits indique le nombre de décimales.

La fonction WindowPriceOnDropped() récupère le prix où a été déposé le script (pointeur de la souris).

La fonction NormalizeDouble() le transforme en prix à la bonne « échelle ».

WindowTimeOnDropped() renvoie la date et l’heure (et les minutes) sous la forme d’une variable de type datetime.

TimeToStr() formatte ce type en une chaîne compréhensible (format date classique).

À noter que pour écrire une date en dur on peut utiliser la notation :    datetime tCurrentDate = D’2013.05.23 08:00′;

 

ObjectCreate() crée un objet. ObjectSetText() permet d’afficher le texte avec une police de caractère, une taille et une couleur.

Les paramètres de ObjectCreate() sont, dans l’ordre :

  • le nom (référence) de l’objet
  • le type d’objet (texte, ligne, …)
  • la fenêtre (ici 0 fait très bien l’affaire)
  • la date (abscisse)
  • le prix (ordonnée)

 

GetLastError() donne la dernière erreur.

 

Qu’est-ce que cela donne ?

Quand on glisse et dépose le script sur le graphique. On obtient les deux choses suivantes :

  • une popup
  • un texte affiché à l’endroit où le script a été déposé.
popup script

La popup et le libellé affichés

Pour aller plus loin en MQL4

Si vous désirez vous lancer, voici deux livres complets sur la programmation de robots de trading en MQL4.

 

 

Une formation en vidéo

Notre partenaire offre une formation en vidéo sur MQL4. Ne ratez pas cette occasion de vous enrichir.

 

Exemple d’outil en MQL

Quand on trade on se tape le spread.  Mais il est possible de développer un EA qui permet de trader à moindre spread. Tout en réduisant son risque. Lisez mon article à ce sujet.

 

 

Comments ( 8 )

  1. denis
    comment faire pour deplacer les graphiques sur 3 ou 4 ecran hors de mt4
    • Michel
      Bonjour Denis. J'ai fait une recherche rapide. Apparemment ce n'est pas possible. Si quelqu'un a la solution.... Il y a un logiciel qui semble faire cela... www.floatingcharts.com/welcome.php
  2. Patrice47
    Salut à tous. je suis un amateur du trading automatique. j'ai besoin dune ligne de commande qui poura repeter le lancement d'un ordre avec possibilité de choisir la devise et aussi d'inserrer un TP et SL
    • Michel
      Bonjour Patrice, Je me suis peut-être trop avancé en proposant mon aide. Je n'ai absolument pas le temps de m'y plonger. Juste, comme ça, je n'ai pas de réponses simple que j'aurais pu vous donner. Je vous conseille de parcourir les forums de passionnés de développement MT4. Vous pouvez aussi passer par 5euros ou Fiverr pour trouver un codeur pas cher. Je ne comprends pas bien "possibilité de choisir une devise". Dans MT4 vous êtes sur une paire... VOus devrez préciser votre besoin pour demander à quelqu'un de le coder. Cordialement.
      • Patrice47
        Merci pour ta réponse Michel! Je constate que je me suis mal exprimé ! Désolé ! Je parle d'une possibilité de choisir la paire sur laquelle traider Et si la difficulté ce trouve au niveau de créer un possibilité de choisir les paires, il faut laisser ce côté et m'aider juste avec une ligne de commande EA qui répète l'ouverture d'un ordre après fermeture de l'ordre précédemment ouvert ! Merci !
        • Michel
          OK, c'est plus clair. Dans MT4 chaque tick qui arrive redéclenche votre code (celui de l'EA). Donc, si les conditions pour ouvrir le trade sont les mêmes, il va être réouvert. En général on met un "if" qui n'ouvre la position que si on n'est pas dans le marché. Quand la précédente position a été clôturée, ce if permettra à un nouvel ordre d'être exécuté. Il me semble donc, si j'ai bien compris (:-) ) que cela se fera tout seul.... Voir cet article.
          • Patrice47
            Merci je viens de parcourir l'article que tu m'as proposé. Ca ma permis de comprendre encore plus! Je rencontre constamment des erreurs après compilation. J'aimerais savoir si tu peux avoir une adresse mail pour qu'on discute davantage ?!
          • Michel
            Oui, sur la page contact (je l'ai un peu modifiée pour éviter que les robots comprennent)

Leave a reply

Your email address will not be published.

You may use these HTML tags and attributes:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

CommentLuv badge