Discovering what life is about

FXPro - MQL2 - Tutoriel Metaeditor

FXPro MQL2 Tutoriel Metaeditor FXPro - MQL2 - Tutoriel Metaeditor

01 - Introduction
=================
MQL4 est l'abréviation utilisée pour désigner MetaQuotes Language 4.
MetaQuotes est la compagnie qui a développé la plate forme de trading Metatrader.

Le MQL4 vous permet de créer les 3 types de programmes suivants :
· Experts Consultants ou EA (Expert Advisors en anglais)
L’EA est un programme permettant d’automatiser vos stratégies de trading en
passant automatiquement les ordres basés sur votre stratégie, en gérant vos
trades existants ou encore en générant des signaux de trading.

· Indicateur
MetaTrader dispose déjà d’une bibliothèque très complète d’indicateurs techniques
mais vous laisse également la possibilité de modifier des indicateurs existants ou
encore d’en créer de nouveau. Un indicateur sert à analyser et interpréter les
données du marché pour vous aider à prendre vos décisions d’entrées ou sorties.

· Script
Un script est un programme destiné à exécuter un nombre d’action précis de
façon ponctuelle. En effet, contrairement à un EA qui analyse le marché à chaque
tick (= changement de cotation), le script n’est actif que lorsque l’utilisateur en
fait la demande et ne fonctionnera qu’une fois. Un script peut donc être utilisé
pour effectuer une opération que l’on ne désire pas voir se répéter à moins d’en
faire la demande comme par exemple la clôture de toutes les positions ouvertes.

02 - MetaEditor
===============

03 - Les types de données
=========================
En MQL4, on dispose des types de données suivants (le mot en caractère gras est en fait
le mot clé utilisé pour désigner le type d'une variable) :
· int - entier
· double - réel (nombre à virgule flottante)
· bool - booléen
· char - caractère
· string - chaîne de caractère
· color - couleur
· datetime - date et heure

04 - Les variables
=========================
- Déclaration
- Affectation et initialisation
- Locales, globales ou externes

05 - Expressions et opérateurs
==============================

06 - Les fonctions
==============================

07 - Instructions conditionnelles et boucles
==============================

08 - Indentations, commentaires et syntaxe
==============================

09 - Les préprocesseurs
==============================

10 - Votre premier expert advisor #1
==============================

11 - Votre premier expert advisor #2
==============================

PERIOD_M1    1 minutes
PERIOD_M5    5 minutes
PERIOD_M15    15 minutes
PERIOD_M30    30 minutes
PERIOD_H1    1 heures
PERIOD_H4    4 heures
PERIOD_D1    1 jour
PERIOD_W1    1 semaine
PERIOD_MN1    1 mois


12 - Fonctions sur les barres
==============================

double iHigh( string symbol, int timeframe, int shift)
double iLow ( string symbol, int timeframe, int shift)

Bars et iBars
Ces fonctions permettent d’obtenir le nombre de chandelles (ou barres) présentes sur votre graphique.
ex : if(Bars < 10 ) return(0);
int iBars( string symbol, int timeframe)

Close et iClose
ces fonctions permettent d’obtenir le prix de clôture d’une chandelle.
ex : if(Close[1] < Close[i+1]) baissier = True;}
double iClose( string symbol, int timeframe, int shift)

Open et iOpen
la fonction permet d’obtenir le prix d’ouverture des barres
double High[shift]
double iOpen( string symbol, int timeframe, int shift)

High et iHigh
ces deux fonctions servent à obtenir le plus haut d’une barre
double Open[shift]
double iHigh( string symbol, int timeframe, int shift)

Low et iLow
ces deux fonctions servent à obtenir le plus bas d’une barre
double Low[shift]
double iLow( string symbol, int timeframe, int shift)

Time et iTime
Les fonctions Time et iTime servent à obtenir l’heure d’ouverture d’une chandelle spécifique.
datetime Time[shift]
datetime iTime( string symbol, int timeframe, int shift)

Volume et iVolume
Volume et iVolume permettent d’obtenir le volume correspondant au nombre de ticks qui se sont produits au cours de la formation de la chandelle spécifiée.
double Volume[shift]
double iVolume( string symbol, int timeframe, int shift)

iHighest
Une fonction très intéressante qui vous permet d’obtenir la position de la chandelle avec
la donnée maximale de votre choix sur une période que vous définissez.
int iHighest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)
// remplacer string symbol par la paire de votre choix
// remplacer int timeframe par l'unité de temps de votre choix (utiliser le tableau plus haut)
// remplacer int type par ... (voir tableau plus bas)
// remplacer int count=WHOLE_ARRAY par le nombre de barres constituant la période à analyser
// remplacer int start=0 par la position, sous forme d'entier positif [0 ; +∞), de la barre à partir de laquelle vous voulez effectuer l'analyse

Remarque : La fonction iHighest ne peut que retourner un entier correspondant à la
position de la chandelle répondant aux critères de votre choix. Il vous faudra donc très
souvent cumuler plusieurs fonctions pour obtenir l’information désirée. Supposons que
vous désiriez non pas la position de la chandelle mais bien le prix maximal au cours de
cette période.
Le code pour obtenir cette information sera :
Code:
double val; // déclaration de la variable réel val
val=High[iHighest(NULL,0,MODE_HIGH,10,4)];    

iLowest
Fonction qui permet d’obtenir la position de la chandelle avec
la donnée minimale de votre choix sur une période que vous définissez.
int iLowest( string symbol, int timeframe, int type, int count=WHOLE_ARRAY, int start=0)

13 - Fonctions temporelles (date et heure)
==============================

Fonctions Day, DayOfWeek et DayOfYear
Fonctions Hour, Minute, Seconds, Month et Year
Fonctions TimeDay, TimeDayOfWeek et TimeDayOfYear
Fonctions TimeHour, TimeMinute, TimeSeconds, TimeMonth et TimeYear

ex : int jour = TimeDayOfWeek(Time[10]);
int heure = TimeHour(Time[0]);

Fonctions TimeLocal et TimeCurrent

14 - Votre premier expert advisor #3
==============================

15 - Fonctions sur les objets (texte et graphique)
===============================
Fonction ObjectCreate
bool ObjectCreate(
string name, int type, int window,
datetime time1  , double price1  ,
datetime time2=0, double price2=0,
datetime time3=0, double price3=0
)

Fonction ObjectDelete
bool ObjectDelete(string name)

Fonction ObjectsDeleteAll
int ObjectsDeleteAll(int window=EMPTY, int type=EMPTY)

Fonction ObjectDescription
string ObjectDescription(string name)

Fonction ObjectFind
int ObjectFind(string name)

Fonction ObjectGet
double ObjectGet(string name, int index)
ex : color couleur = ObjectGet("triangle", OBJPROP_COLOR);

Fonction ObjectGetFiboDescription
string ObjectGetFiboDescription(string name, int index)
ex : string texte = ObjectGetFiboDescription("Fibo", 3);Print(texte);

Fonction ObjectGetShiftByValue
Cette fonction vous permet d’obtenir le numéro de la barre ou chandelle au niveau de
laquelle un objet spécifié croise un prix donné. Vous ne pouvez utiliser que des objets
linéaires du fait que la fonction ne peut retourner qu’une seule valeur, il ne peut donc y
avoir plusieurs possibilités. La fonction retourne -1 si le croisement n’existe pas.
ex : int indexCroisement = ObjectGetShiftByValue("Trendline 5879", 790.04);

Fonction ObjectGetValueByShift
ObjectGetValueByShift vous permet d’obtenir le prix associé au croisement d’un objet et d’une barre précise.
ex : double prixCroisement = ObjectGetShiftByValue("Trendline 33675", 16);

Fonction ObjectMove
ex : double price = Bid; ObjectMove("Trendline 36828", 1, Time[1], price);

Fonction ObjectsTotal

Fonction ObjectName

Fonction ObjectType

Fonction ObjectSet

Fonction ObjectSetText

16 - Votre premier expert advisor #4
==============================


Fonction OrderSend(
string         symbol,
int         cmd,
double         volume,
double         price,
int         slippage,
double         stoploss,
double         takeprofit,
string         comment=NULL,
int            magic=0,
datetime     expiration=0,
color         arrow_color=CLR_NONE
)



17 - Fonctions de trading
================================

int OrderSend(
string             symbol,
int             cmd,
double             volume,
double             price,
int             slippage,
double             stoploss,
double             takeprofit,
string             comment=NULL,
int    magic=0,
datetime         expiration=0,
color             arrow_color=CLR_NONE
)

bool OrderClose(
int     ticket,
double     lots,
double     price,
int     slippage,
color     Color=CLR_NONE
)

bool OrderCloseBy(
int     ticket,
int     opposite,
color     Color=CLR_NONE
)

bool OrderDelete(
int ticket,
color Color=CLR_NONE
)

bool OrderModify(
int         ticket,
double         price,
double         stoploss,
double         takeprofit,
datetime     expiration,
color         arrow_color=CLR_NONE
)

bool OrderSelect(
int index,
int select,
int pool=MODE_TRADES
)

Fonctions secondaires

double OrderClosePrice() : Fonction qui permet d'obtenir le prix de clôture d'une position spécifique. De type double car elle retourne un prix sous forme d'un nombre réel.

datetime OrderCloseTime() : Fonction qui permet d'obtenir la date de clôture d'une position spécifique. De type datetime car elle retourne une date.

string OrderComment() : Fonction qui permet d'obtenir le commentaire d'une position spécifique. De type string car elle retourne une chaîne de caractères.

double OrderCommission() : Fonction qui permet d'obtenir la commission perçue par le courtier pour une position spécifique. De type double car elle retourne un nombre réel (en général, la commission est toujours de 0 dans le forex car les courtiers se rémunèrent via le spread mais ils existent des exceptions).

datetime OrderExpiration() : Fonction qui permet d'obtenir la date d'expiration d'un ordre à seuil de déclenchement. De type datetime car elle retourne une date.

double OrderLots() : Fonction qui permet d'obtenir le volume en lots d'une position spécifique. De type double car elle retourne un réel.

int OrderMagicNumber(): Fonction qui permet d'obtenir le magic number d'une position spécifique. De type int car elle retourne un entier.

double OrderOpenPrice() : Fonction qui permet d'obtenir le prix d'ouverture d'une position spécifique. De type double car elle prix sous forme d'un réel.

datetime OrderOpenTime() : Fonction qui permet d'obtenir la date d'ouverture d'une position spécifique. De type datetime car elle retourne une date.

void OrderPrint() : Fonction qui permet d'enregistrer les informations sur une position
spécifique dans le journal de la plateforme. Les informations obtenues dans l'ordre sont les suivantes :
numéro de ticket; date d'ouverture; type d'ordre (pour savoir s'il s'agit d'un achat, vente, achat stop ou limite ou encore vente stop ou limite);
volume en lots; prix d'ouverture; prix stop; prix limite; date de clôture; prix de clôture; commission; swap (intérêts versé par le courtier :
peuvent être positifs ou négatifs); profit; commentaire; magic number; date d'expiration lorsqu'il s'agit d'un ordre à seuil de déclenchement.
De type void car la fonction ne retourne aucune valeur.

double OrderProfit() : Fonction qui permet d'obtenir le profit d'une position en cours ou le profit réalisé d'une position close. Les commissions
ou les intérêts (swap) ne sont pas pris en compte dans le calcul du profit. De type double car elle retourne un montant en unité monétaire exprimé sous forme d'un réel.

int OrdersHistoryTotal() : Fonction qui permet d'obtenir le nombre de position clôturées de l'historique de la plateforme.
Ne prend en compte que les positions affichées dans l'historique de MetaTrader (si votre historique n'affiche que le dernier mois alors seul le
dernier mois est pris en considération). De type int car elle retourne un entier.
Remarque : Cette fonction calcule le nombre total de positions en partant de 1 tandis que l'indexation des positions dans MetaTrader
se fait toujours en partant de 0.

double OrderStopLoss() : Fonction qui permet d'obtenir le prix stop d'une position spécifique. De type double car elle retourne un prix.

double OrderTakeProfit() : Fonction qui permet d'obtenir le prix limite d'une position spécifique. De type double car elle retourne un prix.

int OrdersTotal(): Fonction qui permet d'obtenir le nombre de positions en cours ou en attentes. De type int car elle retourne un entier.

double OrderSwap() : Fonction qui permet d'obtenir le montant des intérêts perçus ou à payer d'une position spécifique.
De type double car elle retourne un montant en unité monétaire exprimé sous forme d'un réel.

string OrderSymbol() : Fonction qui permet d'obtenir la paire transigée d'une position spécifique. De type string car elle retourne le nom d'une paire.

int OrderTicket() : Fonction qui permet d'obtenir le numéro de ticket d'une position spécifique. De type int car elle retourne un entier.

int OrderType() : Fonction qui permet d'obtenir le type d'ordre d'une position spécifique. De type int car elle retourne un entier.
0 correspond à BUY, 1 correspond à SELL, 2 correspond à BUYLIMIT, 3 correspond à SELLLIMIT, 4 correspond à BUYSTOP et 5 à SELLSTOP.


18 - Votre premier expert advisor #5
================================

19 - Fonctions communes
================================

Fonction Alert
fonction DoubleToStr()
fonction TimeToStr()
Fonction Comment
Fonction Print
Fonction GetTickCount
Fonction MarketInfo
Fonction MessageBox
Fonction PlaySound
Fonction SendFTP
Fonction SendMail
Fonction Sleep

20 - Votre premier expert advisor #6
================================

Trailing Stop
Fonctions de vérifications

---
Categories : Finance    Themes : Book
Share |
add a comment...

0 Comment

Leave a Comment