Certaines fonctions ont besoin d' un paramètre TimeFrame. Cela indique à un programme l' échelle du graphique ( et donc la durée des périodes qui en sont proportionnelles ).
Le paramètre accepte un nombre entier ( nombre de minutes ).
1 - 1 minute.
5 - 5 minutes.
15 - 15 minutes.
30 - 30 minutes.
60 - 1 heure.
240 - 4 heures.
1440 - une journée.
10080 - une semaine.
43200 - 1 mois.
0 - l' échelle du graphique est détectée automatiquement
Affichage des articles dont le libellé est mql4. Afficher tous les articles
Affichage des articles dont le libellé est mql4. Afficher tous les articles
lundi 7 février 2011
dimanche 23 janvier 2011
Automated Trading Championship
A venir, conours organisé par MetaQuotes Software Corp.
Descriptif :
Inscriptions ici.
Ouvert à tous, compte démo.
EA, sclaping interdit.
Effet de levier 100:1; lot min 0,1; lot max 5;
Les traders partent avec un capital de 10 000$.
15 ordres en même temps maximum.
Se déroule une fois par an.
But : faire la meilleure performance possible sur les paires USDCHF, GBPUSD, EURUSD, USDJPY, USDCAD, AUDUSD, EURGBP, EURAUD, EURCHF, EURJPY, GBPJPY, et GBPCHF.
Les prix :
1ère place - $40000
2nd place - $25000
3ème place - $10000
Descriptif :
Inscriptions ici.
Ouvert à tous, compte démo.
EA, sclaping interdit.
Effet de levier 100:1; lot min 0,1; lot max 5;
Les traders partent avec un capital de 10 000$.
15 ordres en même temps maximum.
Se déroule une fois par an.
But : faire la meilleure performance possible sur les paires USDCHF, GBPUSD, EURUSD, USDJPY, USDCAD, AUDUSD, EURGBP, EURAUD, EURCHF, EURJPY, GBPJPY, et GBPCHF.
Les prix :
1ère place - $40000
2nd place - $25000
3ème place - $10000
jeudi 20 janvier 2011
Le trading automatique
Définition :
Le trading automatique existe depuis les années 80. C' est une pratique couramment utilisée par les grandes banques et fonds d' investissement consistant à passer des ordres en bourse grâce à un robot qui analyse le marché avec des algorithmes.
Elle est typique du Forex, encouragée par des frais de placement très bas et par la forte liquidité du marché ( permet d' acheter et de vendre rapidement ).
Peu à peu, le trading automatique se démocratise, même si les particuliers ne pourront jamais bénéficier des avances technologiques des entreprises financières.
Les atouts :
Le trading automatique apporte de grands avantages comparé au trading classique :
- Les robots analysent plusieurs graphiques en même temps et passent des ordres à n' importe quelle heure du jour et de la nuit.
- Les robots ne font pas d' erreur d' inattention.
- Les robots effectuent des calculs très complexes en un temps record.
- Les robots permettent le scalping.
Comment en apprendre plus ?
Metatrader est la plateforme de trading la plus utilisée et la plus accessible pour y installer des robots ( appelés Expert Advisor ). Metatrader est proposé par la plupart des brokers forex.
Ces robots doivent être programmés en MQL4 ( voir tutoriel ), un langage de programmation propriétaire spécialement conçu et très flexible. Ils peuvent par exemple être basés sur l' historique des cours, ou bien sur les indicateurs techniques.
---> Tutoriel FOREX
Le trading automatique existe depuis les années 80. C' est une pratique couramment utilisée par les grandes banques et fonds d' investissement consistant à passer des ordres en bourse grâce à un robot qui analyse le marché avec des algorithmes.
Elle est typique du Forex, encouragée par des frais de placement très bas et par la forte liquidité du marché ( permet d' acheter et de vendre rapidement ).
Peu à peu, le trading automatique se démocratise, même si les particuliers ne pourront jamais bénéficier des avances technologiques des entreprises financières.
Les atouts :
Le trading automatique apporte de grands avantages comparé au trading classique :
- Les robots analysent plusieurs graphiques en même temps et passent des ordres à n' importe quelle heure du jour et de la nuit.
- Les robots ne font pas d' erreur d' inattention.
- Les robots effectuent des calculs très complexes en un temps record.
- Les robots permettent le scalping.
Comment en apprendre plus ?
Metatrader est la plateforme de trading la plus utilisée et la plus accessible pour y installer des robots ( appelés Expert Advisor ). Metatrader est proposé par la plupart des brokers forex.
Ces robots doivent être programmés en MQL4 ( voir tutoriel ), un langage de programmation propriétaire spécialement conçu et très flexible. Ils peuvent par exemple être basés sur l' historique des cours, ou bien sur les indicateurs techniques.
---> Tutoriel FOREX
lundi 17 janvier 2011
Math, Modulo, For, et Break
Au cours de cette leçon, nous allons voir les dernières notions de base qu' il vous manque, ainsi que 2 opérateurs.
Opérations utiles avec Math :
Modulo :
Les personnes qui ont de bonnes notions en maths le connaissent déjà. Le modulo est tout bêtement le reste d' une division. L' opérateur s' écrit %.
Ainsi par exemple,
10 % 2 = 0 ( car 10 = 2 * 5 + 0 )
11 % 3 = 2 ( car 11 = 3 * 3 + 2 )
13 % 4 = 1 ( car 13 = 4 * 3 + 1 )
For :
For agit exactement de la même manière que while. La seule différence est la syntaxe. C' est pourquoi ce n' est pas la peine de nous attarder dessus. Si vous le rencontrez, vous n' aurez aucune peine à en comprendre le fonctionnement.
Break :
Break sert à sortir d' une boucle.
Par exemple, si on souhaite trouver le premier nombre supérieur à 1000 et divisible par 27, on utilisera ce type de code :
Cet exemple est certes assez tordu, mais il illustre bien le potentiel d' exploitation de l' opérateur break.
---> Accéder au Tutoriel MQL4 avancé
Opérations utiles avec Math :
double MathAbs(double x) // valeur absolue
double MathSqrt(double x) // racine carrée
double MathPow(double x, double exposant) // exposantModulo :
Les personnes qui ont de bonnes notions en maths le connaissent déjà. Le modulo est tout bêtement le reste d' une division. L' opérateur s' écrit %.
Ainsi par exemple,
10 % 2 = 0 ( car 10 = 2 * 5 + 0 )
11 % 3 = 2 ( car 11 = 3 * 3 + 2 )
13 % 4 = 1 ( car 13 = 4 * 3 + 1 )
For :
For agit exactement de la même manière que while. La seule différence est la syntaxe. C' est pourquoi ce n' est pas la peine de nous attarder dessus. Si vous le rencontrez, vous n' aurez aucune peine à en comprendre le fonctionnement.
Break :
Break sert à sortir d' une boucle.
Par exemple, si on souhaite trouver le premier nombre supérieur à 1000 et divisible par 27, on utilisera ce type de code :
bool vrai = true;
int y = 1000;
double start()
{
if (vrai == true)
{
vrai = false;
while (1 == 1) // toujours vrai !
{
if (y % 27 == 0)
{
Alert(y);
break;
}
y ++;
}
}
return;
}Cet exemple est certes assez tordu, mais il illustre bien le potentiel d' exploitation de l' opérateur break.
---> Accéder au Tutoriel MQL4 avancé
Jouer un son
Les programmes MQL4 peuvent jouer un son grâce à la fonction PlaySound.
Pour ce, allez tout d' abord dans le dossier où a été installé Metatrader. Puis rendez-vous dans le dossier 'sounds'.
Vous voyez une liste de fichiers sons .wav. Il est possible de rajouter de nouveaux sons ou musiques dans ce dossier.
Le code :
Pour ce, allez tout d' abord dans le dossier où a été installé Metatrader. Puis rendez-vous dans le dossier 'sounds'.
Vous voyez une liste de fichiers sons .wav. Il est possible de rajouter de nouveaux sons ou musiques dans ce dossier.
Le code :
bool vrai = true;
double start()
{
if (vrai == true)
{
vrai = false;
PlaySound("alert2.wav");
}
return;
}
Remplacez alert2.wav par le nom du fichier son de votre choix.
Envoyer un courriel
Le MQL4 permet d' envoyer des courriels.
Cela peut être utile, par exemple pour recevoir des comptes rendus d' Expert Advisor dans une boîte mail.
Tout d' abord, il faut entrez vos données de mailing. Allez dans l' interface Metatrader. Puis cliquez sur 'Outils', 'Options', et 'Email'.
Cochez la cas 'Autoriser'. Remplissez les cases. Puis cliquez sur 'Tester' et vous recevrez normalement un mail de test.
Le code :
Cela peut être utile, par exemple pour recevoir des comptes rendus d' Expert Advisor dans une boîte mail.
Tout d' abord, il faut entrez vos données de mailing. Allez dans l' interface Metatrader. Puis cliquez sur 'Outils', 'Options', et 'Email'.
Cochez la cas 'Autoriser'. Remplissez les cases. Puis cliquez sur 'Tester' et vous recevrez normalement un mail de test.
Le code :
bool vrai = true;
double start()
{
if (vrai == true)
{
double prix = Ask;
vrai = false;
SendMail("Courriel Metatrader", "Prix de la demande = "+ Ask);
}
return;
}
vendredi 14 janvier 2011
MarketInfo()
MarketInfo est une fonction extrêmement utile. Elle permet entre autres d' affecter à une variable la valeur de la demande ou de l' offre à un moment donné. Elle agit différemment des fonctions Ask et Bid, comme nous allons le voir.
MarketInfo VS Ask et Bid :
La fonction calcul permet de définir les variables offre et demande, toutes deux associées respectivement à Bid et Ask.
Que se passe-t-il si la valeur de l' offre ( Bid ) ou de la demande ( Ask ) évolue ? Les variables offre et demande varieront exactement de la même manière.
Maintenant, voici une fonction calcul qui utilise MarketInfo.
Cette fois, les variables offre et demande gardent la valeur de l' offre et de la demande au moment où la fonction est exécutée. Quelque soit soit l' évolution du cours, elles resteront constantes.
MarketInfo pour les ordres stop et à court limités :
En clair, que fait cette fonction ?
Elle ouvre un ordre 'en attente'. Dès que la valeur de la demande aura baissé de 5 pips, l' ordre s' exécutera.
C' est un ordre à court limité.
---> Leçon suivante
MarketInfo VS Ask et Bid :
La fonction calcul permet de définir les variables offre et demande, toutes deux associées respectivement à Bid et Ask.
double calcul()
{
double offre = Bid;
double demande = Ask;
return;
} Que se passe-t-il si la valeur de l' offre ( Bid ) ou de la demande ( Ask ) évolue ? Les variables offre et demande varieront exactement de la même manière.
Maintenant, voici une fonction calcul qui utilise MarketInfo.
double calcul()
{
double offre = MarketInfo(Symbol(), MODE_BID);
double demande = MarketInfo(Symbol(), MODE_ASK);
return;
} Cette fois, les variables offre et demande gardent la valeur de l' offre et de la demande au moment où la fonction est exécutée. Quelque soit soit l' évolution du cours, elles resteront constantes.
MarketInfo pour les ordres stop et à court limités :
bool vrai = true;
int start(){if (vrai == true)
{
vrai = false;
double demande = calcul();
OrderSend(Symbol(), OP_BUYLIMIT, 0.1, demande-5*Point, 3, demande-15*Point, demande+15*Point, "Premier ordre !", 1);}
return;}double calcul()
{
double ask =MarketInfo(Symbol(), MODE_BID);return(ask); // ne pas oublier de retourner la valeur ask
}
En clair, que fait cette fonction ?
Elle ouvre un ordre 'en attente'. Dès que la valeur de la demande aura baissé de 5 pips, l' ordre s' exécutera.
C' est un ordre à court limité.
---> Leçon suivante
mercredi 12 janvier 2011
OrderSend()
Les Expert Advisor passent leurs ordres d' achat ou de vente grâce à la fonction OrderSend().
Si vous avez un compte démo avec argent fictif sur Metatrader ( si vous n' en avez pas, choisissez un broker ici et ouvrez en un ), vous devez voir en bas de l' interface l' onglet trading. Cliquez dessus. Vous voyez maintenant votre balance et les ordres passés ( s' il en est ).
La fonction :
Comme vous pouvez le constater, cette fonction a besoin de beaucoup de paramètres. Nous allons les voir un par un.
- paire : est le nom de la paire sur lequel l' Expert Advisor doit passer un ordre. Par exemple "EURUSD", ou "EURGBP". Pour rendre les choses plus pratiques, on entre souvent pour ce paramètre la fonction Symbol(). En effet, celle-ci renvoie automatiquement la paire sur laquelle le robot est installé.
- operation : est comme son nom l' indique l' opération à passer. Au choix : OP_Buy, OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, et OP_SELLSTOP. ( Voir cours ).
- nblots : est le nombre de lots sur lesquels porte l' opération. ( Voir cours ).
- prix : est le prix ! Sert pour les ordres Limit et Stop.
- slippage : est la différence maximale de pips acceptée par le trader entre le prix souhaité et le prix auquel l' ordre est finalement exécuté.
- stoploss et takeprofit : est le prix auquel les pertes doivent être coupées et les plus-values prises. ( Voir cours ).
- comment : est la possibilité de laisser un commentaire sur le trade.
- numéro : est le numéro de l' ordre passé. C' est au trader de le définir.
- expiration : date à laquelle l' ordre prend fin. Les brokers fixent en effet une limite de durée à chaque ordre. N' entrez rien pour laisser l' ordre ouvert jusqu' à la date limite autorisée par le broker.
- arrow : indique un point ou une flèche sur la courbe du graphique Metatrader de la paire sur laquelle l' ordre a été placé. Pas obligatoire.
Un exemple d' utilisation :
Point correspond à 1 pip.
En d' autres termes, on achète 0,1 Lot de la paire de notre choix, au prix de la demande ( à 3 pips près ), on coupe les pertes si le cours atteint le prix de l' offre moins 15 pips, on prend les bénéfices si le cours atteint le prix de l' offre + 15 pips.
L' ordre est le numéro 1, et a pour commentaire Premier ordre !.
Compilez puis exécutez le code. Au moment de lancer l' exécution, cochez la case 'Autoriser Trading en direct' sur la fenêtre qui apparaît ( comme ci-dessous ).
Que se passe t-il maintenant ?
D' abord, vous devez voir l' ordre passé et tous les détails dans votre balance de trading ( en bas de l' interface de Metatrader ). Ensuite, sur le graphique de la paire tradée, vous devez pouvoir observer trois ou quatre lignes. La droite verte ( celle du milieu ) est à la hauteur du prix d' achat. Les deux lignes rouges symbolisent les niveaux de prix du takeprofit et du stoploss. Enfin, peut-être voyez-vous aussi une ligne blanche qui suite l' indice du prix en temps réel.
Quand le trade sera clos ( une affaire de quelques minutes si le forex est volatile ), vous aurez une nouvelle balance de compte avec quelques euros en moins ou en plus. Je vous rappelle qu' un pip de 10 000 euros vaut environ 1€. Si l' ordre avait été exécuté sur un compte avec argent réel, le résultat aurait été exactement le même.
---> Leçon suivante
Si vous avez un compte démo avec argent fictif sur Metatrader ( si vous n' en avez pas, choisissez un broker ici et ouvrez en un ), vous devez voir en bas de l' interface l' onglet trading. Cliquez dessus. Vous voyez maintenant votre balance et les ordres passés ( s' il en est ).
La fonction :
int OrderSend (string paire, int operation, double nblots, double prix, int slippage, double stoploss, double takeprofit, string comment = NULL, int numero = 0, datetime expiration = 0, color arrow = CLR_NONE)Comme vous pouvez le constater, cette fonction a besoin de beaucoup de paramètres. Nous allons les voir un par un.
- paire : est le nom de la paire sur lequel l' Expert Advisor doit passer un ordre. Par exemple "EURUSD", ou "EURGBP". Pour rendre les choses plus pratiques, on entre souvent pour ce paramètre la fonction Symbol(). En effet, celle-ci renvoie automatiquement la paire sur laquelle le robot est installé.
- operation : est comme son nom l' indique l' opération à passer. Au choix : OP_Buy, OP_SELL, OP_BUYLIMIT, OP_SELLLIMIT, OP_BUYSTOP, et OP_SELLSTOP. ( Voir cours ).
- nblots : est le nombre de lots sur lesquels porte l' opération. ( Voir cours ).
- prix : est le prix ! Sert pour les ordres Limit et Stop.
- slippage : est la différence maximale de pips acceptée par le trader entre le prix souhaité et le prix auquel l' ordre est finalement exécuté.
- stoploss et takeprofit : est le prix auquel les pertes doivent être coupées et les plus-values prises. ( Voir cours ).
- comment : est la possibilité de laisser un commentaire sur le trade.
- numéro : est le numéro de l' ordre passé. C' est au trader de le définir.
- expiration : date à laquelle l' ordre prend fin. Les brokers fixent en effet une limite de durée à chaque ordre. N' entrez rien pour laisser l' ordre ouvert jusqu' à la date limite autorisée par le broker.
- arrow : indique un point ou une flèche sur la courbe du graphique Metatrader de la paire sur laquelle l' ordre a été placé. Pas obligatoire.
Un exemple d' utilisation :
bool vrai = true;
int start(){if (vrai == true)
{
vrai = false;
OrderSend(Symbol(), OP_BUY, 0.1, Ask, 3, Bid-15*Point, Bid+15*Point, "Premier ordre !", 1);}
return;}
Point correspond à 1 pip.
En d' autres termes, on achète 0,1 Lot de la paire de notre choix, au prix de la demande ( à 3 pips près ), on coupe les pertes si le cours atteint le prix de l' offre moins 15 pips, on prend les bénéfices si le cours atteint le prix de l' offre + 15 pips.
L' ordre est le numéro 1, et a pour commentaire Premier ordre !.
Compilez puis exécutez le code. Au moment de lancer l' exécution, cochez la case 'Autoriser Trading en direct' sur la fenêtre qui apparaît ( comme ci-dessous ).
Que se passe t-il maintenant ?
D' abord, vous devez voir l' ordre passé et tous les détails dans votre balance de trading ( en bas de l' interface de Metatrader ). Ensuite, sur le graphique de la paire tradée, vous devez pouvoir observer trois ou quatre lignes. La droite verte ( celle du milieu ) est à la hauteur du prix d' achat. Les deux lignes rouges symbolisent les niveaux de prix du takeprofit et du stoploss. Enfin, peut-être voyez-vous aussi une ligne blanche qui suite l' indice du prix en temps réel.
Quand le trade sera clos ( une affaire de quelques minutes si le forex est volatile ), vous aurez une nouvelle balance de compte avec quelques euros en moins ou en plus. Je vous rappelle qu' un pip de 10 000 euros vaut environ 1€. Si l' ordre avait été exécuté sur un compte avec argent réel, le résultat aurait été exactement le même.
---> Leçon suivante
Libellés :
achat,
advisor,
buy,
expert,
fonction,
metatrader,
mql4,
ordersend,
ordres,
passage,
sell,
vente
lundi 10 janvier 2011
Les boucles while
La boucle while permet de faire répéter une action un nombre prédéfini de fois.
Exemple :
Je veux que la variable y ( qui est égale à zéro ) prenne la valeur y + 1, puis y + 2, puis y + 3, ... jusqu' à ce que y soit égal à 10.
Nous reverrons l' opérateur while plus en détail au cours des leçons suivantes.
Si vous êtes arrivés jusque là, FELICITATIONS !
Vous avez fait le plus dur... Les leçons suivantes seront beaucoup plus accès sur la pratique et l' utilité.
---> Leçon suivante
Exemple :
Je veux que la variable y ( qui est égale à zéro ) prenne la valeur y + 1, puis y + 2, puis y + 3, ... jusqu' à ce que y soit égal à 10.
bool vrai = true;
double start()
{
int y = 0;
if (vrai == true)
{
vrai = false;
while ( y != 11) // est différent de
{
Alert("y = ", y);
y ++; // implémentation*
}
}
return;
}* y ++ équivaut à y = y + 1. C' est un raccourci très fréquemment utilisé.Nous reverrons l' opérateur while plus en détail au cours des leçons suivantes.
Si vous êtes arrivés jusque là, FELICITATIONS !
Vous avez fait le plus dur... Les leçons suivantes seront beaucoup plus accès sur la pratique et l' utilité.
---> Leçon suivante
True or False
True ( vrai ) et False ( faux ) sont 2 variables complémentaires d' un autre type : ce sont des variables booléennes. Deux choix possible : soit l' une soit l' autre.
Elles ont beaucoup d' applications dans les Expert Advisor.
Exemple :
Vous le savez, les Expert Advisor font tourner la fonction start en boucle. True et False vont être très utiles pour faire en sorte de ne plus voir s' afficher des alertes toutes les 2 secondes...
Exemple avec la fonction de la leçon précédente :
---> Leçon suivante
Elles ont beaucoup d' applications dans les Expert Advisor.
Exemple :
Vous le savez, les Expert Advisor font tourner la fonction start en boucle. True et False vont être très utiles pour faire en sorte de ne plus voir s' afficher des alertes toutes les 2 secondes...
Exemple avec la fonction de la leçon précédente :
double midi = 12.00;
bool vrai = true;double start(){int dats = Seconds();int datm = Minute();int dath = Hour();
if (vrai = true)
{
vrai = false;Alert("Il est ", dath, ":", datm, ":", dats);if (midi > dath){double h = midi - dath;Alert("Plus que ", h, " heures avant midi !");}else{double h24 = midi + 24 - dath;Alert("Plus que ", h24, " heures avant midi !");}
}return;}
---> Leçon suivante
samedi 8 janvier 2011
La variable DateTime
Cette variable sert à calculer des durées et à prévoir des instructions selon certaines dates. Le nom de la variable est toujours précédée de datetime.
Variables
Fonctions :
Exemple :
Vous devriez comprendre sans souci cette courte fonction qui affiche l' heure du serveur, et le temps restant avant midi.
---> Leçon suivante
Variables
:
datetime temps1 = D'2011.01.01 00:00'; // Nouvelle année 2011
datetime temps2 = D'01.01.2011'; // Nouvelle année 2011
datetime Temps3 = D'2011.01.19 16:30:45'; // Le 19 janvier 2011 à 16h30m45s
datetime temps4 = D'19.01.2011 16:30:45'; // Le 19 janvier 2011 à 16h30m45s
datetime temps5 = D'15:50:15'; // aujourd' hui à 15h50m15s
datetime temps6 = D''; // aujourd' hui à minuitFonctions :
datetime TimeLocal() // renvoie la date du PC local datetime TimeCurrent() // renvoie la date du serveurCes 2 fonctions renvoient en fait le nombre de secondes écoulées depuis le 1 janvier 1970. C' est comme ça... Ces fonctions retournent une partie de la date ( serveur Metatrader ): Seconds(), Minute(), Hour(), Day(), TimeMonth(), TimeYear(), DayOfWeek (), DayOfYear()Exemple :
double midi = 12.00;
double start()
{
int dats = Seconds();
int datm = Minute();
int dath = Hour();
Alert("Il est ", dath, ":", datm, ":", dats);
if (midi > dath)
{
double h = midi - dath;
Alert("Plus que ", h, " heures avant midi !");
}
else
{
double h24 = midi + 24 - dath;
Alert("Plus que ", h24, " heures avant midi !");
}
return;
}
Vous devriez comprendre sans souci cette courte fonction qui affiche l' heure du serveur, et le temps restant avant midi.
---> Leçon suivante
vendredi 7 janvier 2011
MessageBox
MessageBox
MessageBox est une fonction qui affiche une boîte de dialogue paramétrable.
Son utilisation est idéale pour le trading semi-automatique.
La fonction :
La chaîne text contient le message qui sera affiché sur la boîte de dialogue, la chaîne titre contient son en-tête.
Il faut aussi définir les boutons qui seront présents sur la boîte de dialogue ( variable flags ) :
0x00000000 OK
0x00000001 OK et Cancel.
0x00000002 Abandonner, Recommencer, et Ignorer.
0x00000003 Oui, Non, et Cancel.
0x00000004 Oui et Non
0x00000005 Recommencer et Cancel
Exemple d' utilisation :
La fenêtre de dialogue apparaît à l' écran. Selon le bouton cliqué ( ici Abandonner, Recommencer, ou Ignorer ), la variable message1 qui y est associée prendra une valeur différente ( voir ci dessous ).
MessageBox est une fonction qui affiche une boîte de dialogue paramétrable.
Son utilisation est idéale pour le trading semi-automatique.
La fonction :
int MessageBox(string texte, string titre, int flags)La chaîne text contient le message qui sera affiché sur la boîte de dialogue, la chaîne titre contient son en-tête.
Il faut aussi définir les boutons qui seront présents sur la boîte de dialogue ( variable flags ) :
0x00000000 OK
0x00000001 OK et Cancel.
0x00000002 Abandonner, Recommencer, et Ignorer.
0x00000003 Oui, Non, et Cancel.
0x00000004 Oui et Non
0x00000005 Recommencer et Cancel
Exemple d' utilisation :
int message1 = MessageBox("Voulez-vous continuer ?", "Attention !", 0x00000002);La fenêtre de dialogue apparaît à l' écran. Selon le bouton cliqué ( ici Abandonner, Recommencer, ou Ignorer ), la variable message1 qui y est associée prendra une valeur différente ( voir ci dessous ).
| Bouton | Valeur | |
| OK | 1 | |
| Cancel | 2 | |
| Abandonner | 3 | |
| Recommencer | 4 | |
| Ignorer | 5 | |
| Oui | 6 | |
| Non | 7 |
Les conditions If et Else
Les conditions sont inévitables en MQL4. Comme leurs noms l' indiquent, If ( si ) et Else ( sinon ) vont déclencher des instructions selon les circonstances.
If et Else:
Disons que le cours EUR/USD est actuellement de 1,28. Je veux écrire un programme qui m' alerte automatiquement lorsque le change EUR/USD dépasse les 1,29. Si le change baisse sous la barre des 1,25, je veux aussi être averti.
Attention à bien respecter la syntaxe. Une pratique courante consiste à indexer ( espacer ) les instructions les unes par rapport aux autres pour rendre le code plus clair.
Else s' utilise toujours avec au moins un If et seulement dans le cas où une condition n' est pas atteinte. Nous le reverrons plus loin dans des exemples.
---> Leçon suivante
If et Else:
Disons que le cours EUR/USD est actuellement de 1,28. Je veux écrire un programme qui m' alerte automatiquement lorsque le change EUR/USD dépasse les 1,29. Si le change baisse sous la barre des 1,25, je veux aussi être averti.
double start() // fonction start{double cours = Ask; // taux de change actuelif (cours > 1.29) // Condition{Alert(" Le taux de change EUR/USD a dépassé les 1,29 !");}if (cours < 1.25){Alert(" Le taux de change EUR/USD est passé sous la barre des 1,25 !");}return;}
Attention à bien respecter la syntaxe. Une pratique courante consiste à indexer ( espacer ) les instructions les unes par rapport aux autres pour rendre le code plus clair.
Else s' utilise toujours avec au moins un If et seulement dans le cas où une condition n' est pas atteinte. Nous le reverrons plus loin dans des exemples.
---> Leçon suivante
Ask et Bid
A partir de maintenant, les programmes ne vont pas agir indépendamment de tout contexte, mais au contraire prendre en compte les données en temps réel que nous fournit Metatrader.
Ask et Bid :
Pour ceux qui ne le savent pas, bid et ask sont les mots anglais pour offre et demande.
Nous allons écrire un petit programme qui nous renverra le prix de l' offre, et celui de la demande.
En soi, rien de bien compliqué dans cette fonction. Mais il est primordial de bien la savoir pour comprendre la suite du cours.
Vous vous demandez sûrement : cette fonction renvoie le prix de l' offre et de la demande... mais de quelle offre et de quelle demande ??? Celle que vous voulez !
En effet, allez dans l' interface Metatrader et cliquez sur un des graphiques ( voir ci-dessous ).
Si vous n' avez pas encore compilé le code, faîtes-le.
Une fois le code compilé et le graphique sélectionné, il ne vous reste plus qu' à lancer l' Expert Advisor.
Vous verrez certainement une alerte avec les prix de l' offre et de la demande ( qui diffèrent de quelques pips : c' est le spread ).
Vous pouvez remarquer qu' une petite tête de bonhomme apparait dans le coin du tableau où l' Expert Consultant fonctionne.
---> Leçon suivante
Ask et Bid :
Pour ceux qui ne le savent pas, bid et ask sont les mots anglais pour offre et demande.
Nous allons écrire un petit programme qui nous renverra le prix de l' offre, et celui de la demande.
double start() // fonction start
{
double prixo = Bid; // variable prixo = valeur de l' offre
double prixd = Ask; // variable prixd = valeur de la demande
Alert(" Demande = ", prixo, "€ et offre = ", prixd, "€");
return;
}
En soi, rien de bien compliqué dans cette fonction. Mais il est primordial de bien la savoir pour comprendre la suite du cours.
Vous vous demandez sûrement : cette fonction renvoie le prix de l' offre et de la demande... mais de quelle offre et de quelle demande ??? Celle que vous voulez !
En effet, allez dans l' interface Metatrader et cliquez sur un des graphiques ( voir ci-dessous ).
Si vous n' avez pas encore compilé le code, faîtes-le.
Une fois le code compilé et le graphique sélectionné, il ne vous reste plus qu' à lancer l' Expert Advisor.
Vous verrez certainement une alerte avec les prix de l' offre et de la demande ( qui diffèrent de quelques pips : c' est le spread ).
Vous pouvez remarquer qu' une petite tête de bonhomme apparait dans le coin du tableau où l' Expert Consultant fonctionne.
---> Leçon suivante
Variables locales ou globales
Les variables ont pour l' instant toujours été définies à l' intérieur des fonctions. C' étaient des variables locales, qui disparaissaient une fois la fonction terminée.
Il est souvent nécessaire de définir une variable qui sera constante et utilisable dans toutes les fonctions d' un programme : c' est ce qu' on appellera une variable globale.
Programme utilisant une variable globale :
Imaginons, je possède un compte d' un montant de 10 000€. Deux jours plus tard, après quelques placements, je me retrouve avec 10 285€. Je vais maintenant, grâce au programme ci-dessous, pouvoir calculer mon pourcentage de gain, et le ratio gain/heure.
Prenez bien le temps de comprendre ce programme. Comme vous pouvez le constater, ça commence à se compliquer un peu...
Notez par ailleurs qu' on aurait très bien pu obtenir le même résultat en utilisant des variables locales dans la fonction start.
Vous avez maintenant toutes les bases nécessaires pour programmer des bots un peu plus utiles sur Metatrader. Je vous invite à passer à la leçon suivante.
---> Leçon suivante
Il est souvent nécessaire de définir une variable qui sera constante et utilisable dans toutes les fonctions d' un programme : c' est ce qu' on appellera une variable globale.
Programme utilisant une variable globale :
Imaginons, je possède un compte d' un montant de 10 000€. Deux jours plus tard, après quelques placements, je me retrouve avec 10 285€. Je vais maintenant, grâce au programme ci-dessous, pouvoir calculer mon pourcentage de gain, et le ratio gain/heure.
int inicompte = 10000; // compte initial
int heures = 48; // 2 jours = 48 heures
int moncompte = 10285; // compte actueldouble start() // fonction start
{
double pourc = pourcentage(inicompte, moncompte);
double ratiog = ratio(inicompte, moncompte, heures);
Alert(" Gains = ", pourc, "% et ratio = ", ratiog, "€ par heure");
return;
}double pourcentage(double ini, double fin)
{
double pour1 =fin - ini;
double pour2 = pour1 / ini * 100;
return(pour2);
}double ratio(double ini, double fin, double temps)
}
double rat1 = fin - ini;
double rat2 = rat1 / temps;
return(rat2);
}
Prenez bien le temps de comprendre ce programme. Comme vous pouvez le constater, ça commence à se compliquer un peu...
Notez par ailleurs qu' on aurait très bien pu obtenir le même résultat en utilisant des variables locales dans la fonction start.
Vous avez maintenant toutes les bases nécessaires pour programmer des bots un peu plus utiles sur Metatrader. Je vous invite à passer à la leçon suivante.
---> Leçon suivante
mercredi 5 janvier 2011
Les fonctions MQL4
Cette leçon vous permettra de créer votre tout premier Expert Advisor. Pour cela, il est encore nécessaire de maitriser le principe des fonctions.
Comme en mathématiques, une fonction permet, en suivant une série d' instructions, de transformer des données, mais elle peut aussi effectuer des actions.
Présentation d' une fonction simple :
Fonction de conversion EUR/USD.
En MQL4, la première fonction à s' exécuter est la fonction start. On peut remarquer que chaque instruction se termine par un point-virgule.
Copiez et collez cette fonction dans MetaEditor. Ensuite, cliquez sur 'Compiler'. Voila ce que vous devez obtenir :
Le programme a été compilé.
Maintenant, ouvrez Metatrader, et dans le navigateur, cliquez sur 'Expert Consultant', ou 'Expert Advisor'. Votre programme tout juste compilé est bien là.
Lancez le. Au bout d' un cours moment, une série d' alertes indiquant 5 euro = 6,5 dollar s' affiche en pop-up. Le programme a bien fonctionné !
Comme vous pouvez le constater, la fonction start est appelé à l' infinie.
Pour l' arrêter, stoppez les Experts Advisors ( voir bouton ci-dessous ).
---> Leçon suivante
Comme en mathématiques, une fonction permet, en suivant une série d' instructions, de transformer des données, mais elle peut aussi effectuer des actions.
Présentation d' une fonction simple :
Fonction de conversion EUR/USD.
double start() // fonction start
{ // instructions comprises entre { et }
int eur = 5; // on prend 5 euros
double taux = 1.3; // le taux eur/usd est de 1,30
double usd = eur * taux;
Alert(eur, " euro = ", usd, " dollar"); // affíche le résultat
return; // fin de la fonction
}En MQL4, la première fonction à s' exécuter est la fonction start. On peut remarquer que chaque instruction se termine par un point-virgule.
Copiez et collez cette fonction dans MetaEditor. Ensuite, cliquez sur 'Compiler'. Voila ce que vous devez obtenir :
Le programme a été compilé.
Maintenant, ouvrez Metatrader, et dans le navigateur, cliquez sur 'Expert Consultant', ou 'Expert Advisor'. Votre programme tout juste compilé est bien là.
Lancez le. Au bout d' un cours moment, une série d' alertes indiquant 5 euro = 6,5 dollar s' affiche en pop-up. Le programme a bien fonctionné !
Comme vous pouvez le constater, la fonction start est appelé à l' infinie.
Pour l' arrêter, stoppez les Experts Advisors ( voir bouton ci-dessous ).
---> Leçon suivante
Variables et premières opérations
Sauf instruction contraire, l' ordinateur "lit" les instructions une à une, du haut vers le bas.
Prenons une variable a. Elle peut contenir soit un nombre, soit un mot ( qu' on appelle chaine ). Pour associer un nombre ou une chaine à une variable, on utilise le signe =.
La variable est un nombre. int ou double.
Le mot double précède la variable quand elle contient un nombre décimal. Dans le cas où le nombre est un entier, le nom de la variable est précédé par int.
Exemples :
La variable est une chaine. string.
De même, le mot string précède la variable lorsqu' elle contient une chaine. La chaine est toujours délimitée par des guillemets "".
Exemples :
---> Leçon suivante
Prenons une variable a. Elle peut contenir soit un nombre, soit un mot ( qu' on appelle chaine ). Pour associer un nombre ou une chaine à une variable, on utilise le signe =.
La variable est un nombre. int ou double.
Le mot double précède la variable quand elle contient un nombre décimal. Dans le cas où le nombre est un entier, le nom de la variable est précédé par int.
Exemples :
double a = -5.5
La variable a a pour valeur -5,5.
int a = -6
int a = 75 La variable a prend pour valeur -6, puis 75.
double a = 4.0
int b = 3
double c = a + b La variable c a pour valeur 7. double d = a - b
La variable d a pour valeur 1.double e = a * b
La variable e a pour valeur 12.double f = b / a
La variable f a pour valeur 0,75.
La variable est une chaine. string.
De même, le mot string précède la variable lorsqu' elle contient une chaine. La chaine est toujours délimitée par des guillemets "".
Exemples :
string a = "mot"
La variable a a pour valeur la chaine mot. string a = "mot" string b = " et mot2"
string c = a + b
Il est possible d' ajouter 2 chaines. La variable c a pour valeur la chaine mot et mot2.
---> Leçon suivante
Introduction au MQL4
MQL4 ( MetaQuotes Language ) est le langage de programmation qui permet le dialogue entre le programmeur, et la plateforme de trading Metatrader.

Il est plutôt simple à apprendre ( ce n' est après tout qu' une suite logique d' instruction ), même si modéliser une formule mathématique complexe en MQL4 peut parfois s' avérer difficile.
MQL4 est absolument incontournable à qui veut construire et programmer son propre robot forex ( autrement appelé Expert Advisor ). C' est en effet le seul moyen actuel pour Monsieur tout le monde de faire du trading automatique.
Grâce à ce blog, vous pouvez apprendre la programmation MQL4 pas à pas, jusqu' à un niveau avancé, qui vous laissera ensuite le champ libre pour le développement de vos robots-traders.
Vous devez avoir un niveau de connaissances correct du forex pour suivre ce tutorial. Si certaines notions vous font défaut, rendez-vous ici.
Le tutoriel n' aborde pas tous les détails du langage et certaines notions ne sont pas expliquées vraiment explicitement. De plus, certaines leçons sont très courtes mais cependant très importantes à comprendre. N' hésitez donc pas à vous renseigner, faire des essais, et poser des questions si besoin est.

---> Leçon suivante
Il est plutôt simple à apprendre ( ce n' est après tout qu' une suite logique d' instruction ), même si modéliser une formule mathématique complexe en MQL4 peut parfois s' avérer difficile.
MQL4 est absolument incontournable à qui veut construire et programmer son propre robot forex ( autrement appelé Expert Advisor ). C' est en effet le seul moyen actuel pour Monsieur tout le monde de faire du trading automatique.
Grâce à ce blog, vous pouvez apprendre la programmation MQL4 pas à pas, jusqu' à un niveau avancé, qui vous laissera ensuite le champ libre pour le développement de vos robots-traders.
Vous devez avoir un niveau de connaissances correct du forex pour suivre ce tutorial. Si certaines notions vous font défaut, rendez-vous ici.
Le tutoriel n' aborde pas tous les détails du langage et certaines notions ne sont pas expliquées vraiment explicitement. De plus, certaines leçons sont très courtes mais cependant très importantes à comprendre. N' hésitez donc pas à vous renseigner, faire des essais, et poser des questions si besoin est.
---> Leçon suivante
jeudi 4 février 2010
mercredi 20 janvier 2010
Utile
Petits morceaux de code MQL4 utiles :
- Les variables externes globales
- Envoyer un courriel
- Jouer un son
- Fermer tous les ordres
- Paramètres du compte
- Les couleurs
- TimeFrame
- MessageBox
- Sleep
- MarketInfo
- Les variables externes globales
- Envoyer un courriel
- Jouer un son
- Fermer tous les ordres
- Paramètres du compte
- Les couleurs
- TimeFrame
- MessageBox
- Sleep
- MarketInfo
Inscription à :
Commentaires (Atom)









