Trading-Attitude
Apprendre la bourse en ligne facilement et gagner de l'argent avec les actions, les CFD ou le Forex

 

Nous respectons vos données personnelles. Nous détestons les spams. C'est pour cela que nous nous engageons à ne pas vendre votre adresse email.
Email Marketing by AWeber

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.

 

Faites développer votre Expert Advisor

 

Si vous avez une idée de stratégie mais n’arrivez pas à la coder, comme j’ai plus de temps depuis que j’ai fini d’écrire ma formation sur le trading, vous pouvez me proposer votre stratégie pour que je la code. Attention cependant ! Si les demandes sont nombreuses ou dépassent ma disponibilité, je sélectionnerai.

 

 

Comments ( 2 )

  1. Replydenis
    comment faire pour deplacer les graphiques sur 3 ou 4 ecran hors de mt4
    • ReplyMichel
      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

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