Identifiant   Mot de passe       Oublie mot de passe?  Oublie login?  Creer un compte

Trading Automatique

Coder plus... pour gagner plus!

Forum Trading Auto

Mar.13.10 15:01:04
by nvitale
Mar.13.10 11:58:15
by nvitale
Mar.11.10 21:08:44
by nvitale
Mar.10.10 17:08:38
by nvitale
Mar.08.10 23:27:41
by laurhaq
Mar.08.10 21:25:55
Animé par JoomlaMe
MQL4
Comment spécifier votre stratégie de trading à un développeur Envoyer

 

Depuis la création du service de programmation de Trading Automatique, nous avons travaillé avec de nombreux traders différents et nous avons fait le constat que la phase de spécification du système est souvent la plus délicate, voire la plus longue. Pour éviter les malentendus, nous avons mis en place un système de formulaire à remplir pour aider le trader à formuler sa demande, mais ceci n'est pas toujours efficace. Voici donc un petit article dont la lecture est conseillée avant de réaliser votre demande de programmation.

Tout d'abord, ayez bien à l'esprit que le programme va être codé par une personne qui n'a initialement pas la moindre idée de votre stratégie. Vous devriez donc spécifier tous les petits détails : comme les paramètres des indicateurs, la distance des ordres stops, le nombre maximal de positions ouvertes, l'algorithme de trailing stop, etc. Vos spécifications doit contenir la description de la marche à suivre en fonction de chaque évènement significatif : activation d'un ordre stop, apparition d'un signal d'entrée lorsqu'une position est déjà ouverte, que faire lors du redémarrage d'un EA après une déconnexion, etc.

Vous devriez comprendre que votre ordinateur ne peut ne deviner, ni assumer des décisions indépendantes. Il tradera seulement en fonction de vos règles. Si une situation non prévue par votre algorithme survient, voter EA ne fera rien.

Je sens bien que vous êtes en train de vous dire que ceci est logique et que vous l'avez bien compris. Pourtant ce n'est pas ce que nous observons en pratique. Prenons donc un exemple tiré de cet article disponible sur MQL4.com .

C'est un échange typique bien que largement exagéré pouvant survenir lorsqu'un trader commande un EA à un développeur qui n'ira pas plus loin que les spécifications fournies. Bien évidemment, nous ne réagissons pas comme ça et nous demanderons les détails supplémentaires. Mais le but ici est d'exagérer les erreurs pour les mettre en valeur. N'oubliez pas qu'au final, une spécification bien faite dès le départ permet de faire gagner du temps et donc de l'argent à la fois au trader et au développeur.

 

Trader :

Bonjour! Je veux commander un EA.
L'EA doit ouvrir une position au croisement de la MM(9) et MM(18). Si la moyenne rapide croise vers le haut la moyenne lente, une position Buy doit être ouverte. Et vice versa.
Combien ça coute?

 

Développeur :

Pour vous donner un devis, j'ai besoins des spécifications détaillées. Je dirais environ xx euros en fonctions de ce que j'ai là.

 

Trader :

Je vous ai déjà tout détaillé dans mon mail précédent. L'EA doit ouvrir une position au croisement de la MM(9) et MM(18). Si la moyenne rapide croise vers le haut la moyenne lente, une position Buy doit être ouverte. Et vice versa.

 

Développeur :

OK, voici votre EA.

 

Trader :

C'est quoi ce travail? Ce n'est pas un EA ça! Pourquoi il y a autant de positions ouvertes et jamais clôturées. Etes vous réellement un programmeur?

 

Développeur :

Le nombre de positions ouvertes correspond au nombre de croisements. Testez votre EA en mode visuel du backtest et vous verrez bien qu'une position est ouverte à chaque croisement.Si le croisement est vers le haut, une position BUY est ouverte, si le croisement est vers le bas c'est une position SELL. Votre spécification ne dit rien sur la fermeture des ordres.

 

Trader :

J'ai oublié de vous le dire: si il y a une position ouverte, elle devrait être fermée lors d'un croisement inverse. Seulement une position peut être ouverte à un moment donnée. Et pour chaque position un stop loss devrait être placé à une distance paramétrable.

 

Developpeur :

OK, ceci est beaucoup plus clair. Voici la nouvelle version.

 

Trader :

Pourquoi il y a une position Buy ouverte ici? Il n'y a pas de croisement!

Developpeur :

Il y avait bien un croisement mais il a disparu. Le graphique ne reflète que les valeur des indicateurs sur les barres fermées et vous devez regarder le graphique en temps réel pour voir évoluer au fur et à mesure la valeur de l'indicateur sur la dernière barre. Croyez mi, il y avait bel et bien une intersection au moment de l'ouverture de la barre.

Si vous le souhaitez, nous pouvons modifier l'EA pour qu'il prenne en compte la valeur des indicateurs seulement à la clôture des bougies. De cette manière, tous les signaux seront visibles sur le graphique.


Trader :

Essayons.
Et puis je optimiser les valeurs des moyennes mobiles, des stop loss et take profit?


Developpeur :

Voici la troisième version :
- la recherche des signaux est réalisée sur les bougies clôturées (1ère et 2 ème)
- les paramètres des moyennes mobiles, stop loss et take profit sont désormais tous des paramètres à part entière que vous pouvez modifier et optimiser comme bon vous semble.


Trader :

Maintenant ça ressemble à ce que je désirais réellement. Mais quand je démarre plusieurs EAs, seulement l'un des deux trade. Et de temps en temps ils ferment les positions des autres EAs!


Developpeur :

Dans cette quatrième version j'ai ajouté la séparation des ordres en fonction du magic number. Si vous démarrez plusieurs EAs sur une même paire, mettez une valeur de magic number différente pour chaque EA.


Trader :

C'est enfin parfait.

 

Pour conclure cet exemple, voici ce que doivent être les spécifications pour que le programmeur fournisse l'équivalent de la quatrième version au premier coup (faisant économiser donc au passage de l'argent au trader) :

 

  • L'EA devrait contrôler seulement ses positions et ne devrait pas interagir avec les positions ouvertes manuellement.
  • Si il n'y a pas une position en cours :
    • si la MM courte croise à la hausse la MM lente, une position BUY est ouverte;
    • si la MM courte croise à la baisse la MM lente, une position SELL est ouverte;
  • Si il y a une position ouverte par l'EA :
    • position BUY:
      • si la MM rapide croise la MM longue à la baisse, la position Buy est cloturée et une position Sell est ouverte.
    • position SELL:
      • si la MM rapide croise la MM longue à la hausse, la position Buy est cloturée et une position Sell est ouverte.
  • Les paramètres des MM (période, etc) doivent être des paramètres modifiables
  • Les valeurs des indicateurs doit être calculées en fonction du timeframe affiché par le graphique.
  • La tailles des positions est déterminée par un paramètre modifiable
  • Les stop loss et take profit sont placés à l'ouverture de l'ordre et leur valeur doit être modifiable par paramètres.
  • Il devrait y avoir un paramètre permettant d'activer ou de désactiver les EAs

 

Afin d'aider ce processus de spécification nous fournissons un formulaire à remplir. Si toutefois, même aidé par notre formulaire, écrire sur papier et mettre en forme l'ensemble des règles de votre programme de trading vous semble insurmontable ou que vous avez des questions, n'hésitez pas à nous contacter. Nous ne sommes pas des programmeurs robots tel que décrit dans cet exemple et du moment que vous avez compris le message de cet article, nous serons heureux de travailler avec vous pour vous aider à y voir plus clair.

 
MQL4 pour les nuls Envoyer

 

Il n'est jamais trop tard pour se mettre à la programmation et à MQL4! Si l'arrêt de la traduction du cours MQL4 vous a laissé sur votre faim, voici de quoi vous consoler.  En attendant que MQL5 soit complètement opérationnel, voici un guide d'apprentissage de MQL4 traduit par Henri Baltzer du site Eole Trading que tout le monde peut remercier. Vous pouvez retrouver les différents chapitres sur le forum d'Eole ici.

MQL4 Pour Les Nuls

 

 
Comment traiter les erreurs 146: Trade Context is busy Envoyer

 

Si vous programmez ou utilisez des EA ou scripts MQL4 sous Metatrader vous êtes probablement déjà tombé sur la fameuse erreur 146: "Trade Context is busy". Et cette erreur peut être un véritable casse tête pour le néophyte car son apparition semble aléatoire... ce qui est la pire des choses pouvant arriver à un programmeur.

Je me suis rendu compte au détours de forums que beaucoup de choses fausses sont dites à son propos. Non cette erreur 146 n'est pas une fatalité. Pas mal de monde l'attribue à une manipulation de leur broker senser faire échouer leur trade. Alors, certes je n'ai pas la preuve que cette situation n'arrive jamais, mais une chose est sure, vous pourrez éliminer à 99% l'apparition de cette erreur si vous comprenez son origine et prenez les mesures nécessaires.

Fonctionnement de la plateforme Metatrader

Pour cela il faut comprendre le fonctionnement de la plateforme Metatrader. Lorsque votre EA ou script MQL4 passe un ordre au sens large (ouverture, fermeture, modification, etc), il passe la main à la plateforme (terminal client) qui va elle même passer l'ordre, attendre sa confirmation puis repasser la main au programme de trading, à savoir votre EA ou script. Vous pouvez déjà en déduire que l'exécution de votre EA ou script s'arrête tant que le terminal client n'a pas terminé la séquence de passage d'ordre se terminant par un acquittement positif ou négatif (ordre ayant échoué) venant du serveur de votre broker.

Le deuxième point important à noter est que le terminal client ne peut fonctionner en multi-threading, c'est à dire ne peut exécuter plusieurs ordres en parallèle. Si il reçoit deux ordres en même temps venant de deux EAs différents (puisqu'un EA ne peut pas envoyer deux ordres en même temps), il ne pourra en exécuter un. Qu'arrivera-t-il au deuxième? Vous aurez deviné, il recevra la fameuse erreur 146, "trade context is busy".

La solution est donc de trouver un moyen d'empêcher le passage d'un ordre par un EA ou script si le termnal client est déjà occupé à traiter un autre ordre. Pour cela il existe deux solutions. La manière forte, brute, et la manière élégante. Vous aurez compris que la manière brute est la plus facile à mettre en place et l'élégante la plus compliquée.

La manière forte pour résoudre l'erreur 146

Commençons par la manière forte. Etant donné que votre EA recevra cette erreur tant que le trade précédant ne sera pas exécuté complètement par la plateforme, il suffit de continuer à demander à la plateforme d'exécuter le trade jusqu'à ce qu'il soit enfin exécuté. Vous pouvez obtenir le résultat d'un passage d'ordre grâce à la valeur retournée par la fonction. Grâce à cela, il suffit de faire une boucle demandant le passage d'ordre tant qu'il ne sera pas éxécuté en faisant attention toutefois à limité le nombre de demande et à introduire une temporisation grâce à la fonction Sleep.

La manière élégante pour résoudre l'erreur 146

Les manières élégantes visent à ne pas utiliser la force brute des demandes en boucle. On ne passe un ordre seulement si le terminal client est disponible, ce qui peut être déduit grâce à la fonction IsTradeContextBusy. Pour étudier de manière approfondie des solutions élégantes à ce problème, je vous conseille cet article de la communauté MQL4 qui fera éventuellement l'objet d'un traduction si cela vous intéresse (à vos commentaires...).

 

 
Structure des Programmes Envoyer

 

Dans les premières sections, nous avons appris quelques notions basiques de la programmation avec le langage MQL4. Maintenant, étudions comment un programme est organisé en général.  Dans cet objectif, nous étudierons son schéma structurel.

Comme nous l'avons déjà mentionné, le code principal écrit par un programmeur est placé à l'intérieur des fonctions spéciales et définies par l'utilisateur. Dans la section Fonctions nous avons discuté des notion et des propriétés des fonctions intégrées et définies par l'utilisateur. En résumé: une fonction définie par l'utilisateur dispose d'une description, et l'appel de la fonction est utilisé pour le début de son exécution dans un programme. Toute fonction intégrée ou définie par l'utilisateur peut être exécutée seulement après avoir été appelée. On dit que  la fonction est appelée par le programme pour exécution.

Les propriétés des fonctions spéciales sont décrites en détail dans une section ultérieure. Ici, nous étudierons seulement les principales informations à leur sujet. Une fonction spéciale est une fonction appelée à être exécutée par le terminal client. À la différence des fonctions communes, les fonctions spéciales ont seulement une description et leur appel n'est pas spécifié dans le programme. Les fonctions spéciales sont appelées à être exécutées par le terminal client (il y a aussi une possibilité technique de faire appel aux fonctions spéciales à partir d'un programme, mais nous considérons cette méthode comme étant incorrecte et nous en discuterons donc pas ici). Quand un programme est lancé pour exécution dans une fenêtre de sécurité, le terminal client passe le contrôle à l'une des fonctions spéciales. En conséquence, cette fonction est exécutée.

La règle de programmation en MQL4 est la suivante:

Le code du programme doit être écrit à l'intérieur des fonctions.

 

Cela signifie que les  lignes de programme (les opérateurs et les appels de fonction) qui sont à l'extérieur de la fonction ne peuvent pas être exécutées. Lors de la tentative de compilation d'un tel programme, lr MetaEditor affiche le message d'erreur correspondant et le fichier exécutable *. ex4 n'apparaît pas comme un résultat de la compilation.

 Considérons les schéma structurel d'un programme classique - Expert Advisor:

 

 

Fig. 31. Schéma fonctionnel d'un programme (Expert Advisor).

Les plus grands blocs d'un programme écrit en MQL4 sont:

1. L'en-tête d'un programme.

2. La fonction spéciale init().

3. La fonction spéciale start().

4. La fonction spéciale deinit().

5. Les fonctions définies par les utilisateurs.

 

Nous analyserons seulement le contenu interne de ces blocs fonctionnels d'un programme, alors que tous les objets externes (par exemple, le domaine d'information du terminal du client ou du matériel) sera hors de notre champ d'intérêt.

 

L'environnement d'information du Terminal Client MetaTrader 4


L'environnement d'information du terminal client MT4 n'est pas une partie composante du programme. L'environnement d'information est un ensemble de paramètres disponibles pour être traités par un programme. Par exemple, c'est le nouveau prix d'un titre arrivant avec le nouveau tick, le volume cumulé à chaque nouveau tick, des informations sur les prix maximum et minimum de l'historique des bars, des paramètres qui caractérisent les conditions commerciales offertes par le centre de traitement (dealing center), etc. L'environnement d'information est toujours sauvegardé et  mis à jour par le terminal client connecté avec le serveur à chaque nouveau tick.

 

Structure du programme

 

Partie d'en-tête

La partie d'en-tête est constituée de plusieurs lignes au début d'un programme (à partir de la première ligne). Ces lignes contiennent des informations générales sur le programme. Par exemple, cette partie comprend des lignes de déclaration et d'initialisation des variables globales ( la nécessité d'inclure telle ou telle information dans l'en-tête sera discutée plus tard). La fin de la partie d'en-tête peut être indiquée lorsque la ligne suivante contient une description de fonction (définie par l'utilisateur ou spéciales).


Fonctions spéciales

Habituellement, après la partie d'en-tête du programme, les fonctions spéciales sont décrites. La description de la fonction spéciale ressemble à la description habituelle d'une fonction définie par l'utilisateur, mais les fonctions spéciales ont des noms prédéfinis : init (), start () et deinit (). Les fonctions spéciales sont un bloc de calculs et sont en relations avec l'environnement d'information du terminal client et les fonctions définies par l'utilisateur. Les fonctions spéciales sont décrites en détail dans une section ultérieure.

Fonctions définies par l'utilisateur

La description des fonctions définies par l'utilisateur est habituellement donnée après la description des fonctions spéciales. Le nombre de fonctions définies par l'utilisateur dans un programme n'est pas limité. Le schéma ne contient que deux fonctions définies par l'utilisateur, mais un programme peut en contenir 10 ou 500, ou aucune. Si aucune fonction définie par l'utilisateur est utilisée dans un programme, le programme aura une structure simplifiée: l'en-tête et la description des fonctions spéciales.


Fonctions standard

Comme indiqué précédemment, les fonctions standard ne peuvent être présentées que comme un appel de fonction. Les fonctions standards, comme les fonctions spéciales et définies par l'utilisateur, ont une description. Cependant, cette description n'est pas donnée dans le programme (c'est la raison pour laquelle ne figurent pas dans le schéma). La description d'une fonction standard est cachée, non visible pour un programmeur et ne peuvent donc pas être changée. Bien qu'elle est disponible pour le MetaEditor. Au cours de la compilation du programme, le MetaEditor fera un fichier exécutable, dans lequel toutes les fonctions standards appelées seront exécutées correctement.

 

Disposition des parties dans un programme


L'en-tête devrait être située dans les premières lignes. La disposition des particuliers et des fonctions définies par l'utilisateur descriptions n'a pas d'importance. Fig. 32 montre une disposition des blocs fonctionnels, à savoir: - la tête part, des fonctions, fonctions définies par l'utilisateur. Fig. 33 montre la structure du programme d'autres variantes. Dans tous les exemples de la tête la première partie, tandis que les fonctions peuvent être décrites dans un ordre aléatoire.

La partie d'en-tête devrait être située dans les premières lignes. La disposition de la description des fonctions spéciales et définies par l'utilisateur descriptions n'a pas d'importance. La Fig. 32 montre une disposition des blocs fonctionnels, à savoir: l'en-tête, les fonctions spéciales et les fonctions définies par l'utilisateur. La Fig. 33 montre d'autres variantes de la structure du programme. Dans tous les exemples, l'en-tête vient en première partie, tandis que les fonctions peuvent être décrites dans un ordre aléatoire.

 

 

Fig. 32. Organisation habituelle des blocs fonctionnels dans un programme (recommandé).

 

 

Fig. 33. Des possibilités d'organiser des blocs fonctionnels dans un programme (ordre aléatoire).

Notez bien :

Aucune fonctions ne peut être décrite dans une autre fonction. Il est interdit d'utiliser dans un programme des fonctions dont la description est située dans une autre fonction.

 

Voici des exemples de mauvaise disposition des descriptions de fonction.

 

 

Fig. 34. Exemples de mauvaises dispositions de fonctions dans un programme.

 

Si par erreur, un programmeur crée un programme où la description de l'une de ses fonctions est située à l'intérieur de la description d'une autre fonction, à l'étape de compilation, le MetaEditoraffichera un message d'erreur et un fichier exécutable ne sera pas créé pour un tel programme.

 

Séquence d'exécution du code


En-tête et fonctions spéciales


Dès que l'exécution d'un programme a commencé dans une fenêtre du MetaEditor, les lignes de du code de l'en-tête sont exécutées.

Après les préparatifs décrits dans l'en-tête soient exécutés, le terminal client passe commande à la fonction spéciale init() et la fonction est exécutée (le passage du contrôle est indiqué dans le schéma structurel par les grandes flèches jaunes). La fonction spéciale init() est appelée pour être exécutée une seule fois au début du programme. Habituellement, cette fonction contient un code qui doit être exécuté qu'une seule fois avant que l'opération principale du programme commence. Par exemple, lorsque la fonction init() est exécutée, certaines variables globales sont initialisées, des objets graphiques sont affichés dans une fenêtre graphique, des messages peuvent être affichés. Après que toutes les lignesdu code de la fonction init() soient exécutées, la fonction termine son exécution et le contrôle est retourné au terminal client.

Le temps d'exécution du programme principal est la durée d'exécution de la fonction start(). Dans certaines conditions (voir les caractéristiques des fonctions spéciales dans la section s'y rapportant), y compris la réception d'un nouveau tick par le terminal clientl, le terminal client demande l'exécution de la fonction spéciale start(). Cette fonction (comme d'autres fonctions) peuvent se référer à l'environnement d'information du terminal client, effectuer les calculs nécessaires, réaliser l'ouverture et la clôture des ordres, c'est-à-dire effectuer toutes les actions autorisées par MQL4. Habituellement, lorsque la fonction spéciale start() est exécutée, un solution est produite qui est implémentée comme un contrôle d'action (flèche rouge). Ce contrôle peut être mis en œuvre comme une demande de trading pour ouvrir, fermer ou modifier un ordre constitué par le programme.

Après que l'ensemble du code de la fonction spéciale start() de l'EA soit exécuté, la fonction start() termine son fonctionnement et retourne le contrôle au terminal client. Le terminal aura le contrôle pendant un certain temps, ne commençant aucune autre fonction spéciale. Une pause apparaît, au cours de laquelle le programme ne fonctionne pas. Plus tard, quand un nouveau tick arrive, le client passe le contrôle de nouveau à la fonction spéciale start(), qui sera exécutée. Après son exécution terminée, le contrôle sera renvoyé au terminal... jusqu'à l'arrivée du prochain tick.

Le processus d'appel multiple de la fonction spéciale start() par le terminal client sera répété tant que le programme est joint à un graphique, ce qui peut durer des semaines et des mois. Pendant toute cette période, un Expert Advisor peut réaliser du trading automatique, c'est-à-dire réaliser sa mission principale. Ce processus est représenté sur le schéma par plusieurs flèche jaune enveloppant la fonction spéciale start().

Quand un trader enlève un EA d'un graphique, le terminal exécute une fois la fonction particulière deinit(). L'exécution de cette fonction est nécessaire pour la bonne fin de l'opération de l'EA. Pendant son fonctionnement, le programme peut, par exemple, créer des objets graphiques et des variables globales du terminal client. C'est pourquoi le code de la fonction deinit () contient des lignes de code dont l'exécution se traduit par la suppression des objets et variables inutiles. Après l'exécution de la fonction spéciale deinit(), le contrôle est renvoyé au terminal.

L'exécution des fonctions spéciales peut se référer à l'environnement d'information (flèches bleues sur le schéma) et appeler l'exécution des fonctions définies par l'utilisateur (flèches jaunes). Notez que les fonctions spéciales sont exécutées après avoir été appelées par le terminal client dans l'ordre prédéfini de leurs propriétés: d'abord init (), puis des appels multiples de start() et après un appel à deinit ().


Fonctions définies par l'utilisateur

Les fonctions définies par l'utilisateur sont exécutées lorsque l'appel à une fonction définie par l'utilisateur est contenue dans une fonction. Dans ce cas, le contrôle est  passé à la fonction définie par l'utilisateur et lorsque son exécution est terminée, le contrôle est retourné à l'endroit de l'appel (flèches orange sur le schéma). Les appels aux fonctions définies par l'utilisateur peuvent être contenues, non seulement dans la description d'une fonction spéciale, mais aussi dans la description des autres fonctions définies par l'utilisateur. Une fonction définie par l'utilisateur peut appeler d'autres fonctions définies par l'utilisateur - ce qui est largement utilisé en pratique dans la programmation.

Les fonctions définies par l'utilisateur ne sont pas mises en exécution par le terminal client. Les fonctions définies par l'utilisateur sont exécutées à l'intérieur d'une fonction spéciale qui retourne le contrôle au terminal. Elles peuvent aussi demander pour leurs calculs, les valeurs des variables de l'environnement d'information du terminal client (flèches bleues du schéma).

Si un programme contient la description d'une fonction définie par l'utilisateur, mais il n'y a aucun appel à cette fonction, cette fonction sera exclue du programme lors de la compilation et ne sera pas utilisée lors des opérations du programme.

Note: les fonctions spéciales sont appelées pour exécution par le terminal client. Les fonctions définies par l'utilisateur sont exécutées si elles sont appelées par des fonctions spéciales ou d'autres fonctions définies par l'utilisateur, mais ne sont jamais appelées par le terminal client. Les actions de contrôle (comme des ordres de trades) peuvent être formées à la fois par les fonctions spéciales et définies par l'utilisateur.

 

Retour sommaire cours MQL4

Traduction: Nicolas Vitale
Source: http://book.mql4.com/programm/structure
"MQL4 is a trade mark of MetaQuotes Software Corp. and all related materials are reserved for MetaQuotes"

 
Programmes en MQL4 Envoyer

 

Il est important de rappeler que programmer en MQL4 est accessible à tout le monde mais requière de l'attention et une certaine connaissance.

 Peut être certains traders s'attendent à des difficultés dans l'apprentissage de la programmation car il est difficile pour eux d'imaginer des processus complexes tournant à l'intérieure de leurs ordinateurs. Heureusement, les développeurs de MQL4 ont essayé de le rendre accessible au plus grand nombre d'utilisateurs. Une particularité intéressante de la création des programmes en MQL4 est que le programmeur ne doit pas nécessairement avoir des connaissances particulières des intéractions existantes entre le terminal client et système d'exploitation, des protocoles réseaux ou de la structure du compilateur.

Le processus de création des programmes en MQL4 est l'exécution d'un travail simple et intéressant. Par exemple, un conducteur n'a pas besoin de connaitre la structure d'un moteur pour conduire une voiture. Il a seulement besoin d'apprendre à contrôler le volant, le levier de vitesse et les pédales. Cependant, avant de conduire une voiture dans une rue bondée, chaque conducteur doit suivre une formation. C'est un peu la même chose pour un programmeur débutant : apprendre des principes simples de la création de programme puis commencer doucement à "conduire" de manière autonome.

  • Structure des Programmes
    Bien qu'il y ait de nombreux types de programmes en MQL4, ils ont tous des caractéristiques générales. On pourrait dire qu'une structure correcte est la base d'un code correctement écrit. C'est pourquoi il est nécessaire de comprendre les composants d'un programme.

  • Fonctions Spéciales
    Il y a de nombreuses fonctions intégrées au langage MQL4. De telles fonctions sont appelées fonctions standards du langage. Mais il y a plusieurs fonctions extrêmement importantes qui sont appelées fonctions spéciales. un programme ne peut être exécuté sans elles. Chacune de ces fonctions a sa propre attribution.

  • Exécution des Programmes
    Il faut comprendre correctement comment fonctionne un programme MQL4. Toutes les parties du code ne sont pas utilisées avec la même fréquence. Quelles fonctions sont exécutées à l'initialisation, où la partie principale du programme doit être placée, quel type de programme devrait être utilisé dans tel ou tel cas?

  • Exemples d'Implémentations
    Un nouveau langage est mieux appris avec des exemples. Comment écrire correctement un programme simple? Quelles erreurs peuvent arriver?

 

Retour Sommaire.


Traduction: Nicolas Vitale
Article Original: http://book.mql4.com/programm/index
"MQL4 is a trade mark of MetaQuotes Software Corp. and all related materials are reserved for MetaQuotes"
 
<< Début < Précédent 1 2 3 4 5 Suivant > Fin >>

Page 1 sur 5

Articles en rapport :

 
Joomla 1.5 Templates by Joomlashack