Comment commander un Expert Advisor et obtenir le résultat escompté

Andrey Khatimlianskii | 12 janvier, 2022


Introduction

Le trading automatisé prend un nouvel élan - la sortie de MetaTrader 5, avec le nouveau MQL5, est complet. Il a passé avec succès le Championnat de trading automatisé 2010, et la nouvelle version de la plateforme de trading est activement promu par les courtiers. Le prédécesseur de MetaTrader 5, - MetaTrader 4 - est toujours activement utilisé par des centaines de courtiers et par des millions de traders dans le monde.

Malgré une telle popularité (ou plutôt à cause d'elle), le niveau professionnel des traders moyen diminue - comme dans tout autre domaine, la quantité se transforme rarement en qualité. Si nous considérons le trading automatisé (la connexion du trading et de la programmation), la situation est encore pire - très peu de traders ont un diplôme en programmation informatique, et pour la majorité des gens, même pour ceux qui ont un esprit technique, la maîtrise de la programmation peut être très difficile. Il ne faut pas non plus oublier ceux qui ne sont tout simplement pas intéressés par la programmation. « Nous devons faire ce que nous faisons le mieux » - disent-ils, et je ne peux pas être en désaccord avec eux.

Tout cela nous amène progressivement au sujet de notre article. Il existe une demande de services de programmation MetaTrader, et cette demande ne cesse de croître. Là où il y a de la demande, il y a une offre - c'est la loi du marché. En effet, il y a suffisamment de traders qui veulent automatiser leur stratégie et les programmeurs qui veulent gagner de l'argent. Mais, malheureusement, leur communication n'aboutit pas toujours à un bénéfice mutuel - il y a beaucoup de clients insatisfaits, ainsi que de programmeurs qui sont fatigués d'expliquer les concepts.

Cet article traite des problèmes qui peuvent survenir lors de la communication du « Client - Programmeur ». Il s'adresse avant tout aux traders - qui manquent souvent d'expérience pour traiter avec des personnes ayant une structure mentale différente. Mais il ne fait aucun doute que pour les programmeurs, cet article sera très utile - une relation a toujours deux côtés, et le succès de la coentreprise dépend également des deux.


Contenu

  1. Vérifier l'idée
  2. Se débarrasser des illusions
  3. Déterminer les objectifs
  4. Synchroniser les vocabulaires
  5. Préparation des spécifications des exigences
  6. Sélection du demandeur/développeur
  7. Protégez-vous contre la fraude
  8. Vérifiez les résultats
  9. Donnez votre avis


1. Vérifier l'idée

Vérifier l'idéeLa cause la plus courante de frustration du client est la perte de sa stratégie. Lorsqu'il s'agit d'un système de trading complet, plutôt que d'un Expert Advisor ou d'un indicateur semi-automatisé, le trader n'attend qu'une seule chose de l'Expert Advisor - une transaction rentable

Et c'est ainsi qu'il reçoit la lettre tant attendue du programmeur, qu'il lance le terminal client, qu'il commence les tests... et qu'il voit comment sa brillante idée conduit à la perte du dépôt. Il vérifie à nouveau les paramètres, met à jour les données historiques... et voit à nouveau la perte du dépôt. Certains traders commencent immédiatement à écrire une lettre de mécontentement au programmeur (bien sûr il est à blâmer !), et les plus patients testent les résultats et essaient de comprendre quel est le problème. Mais cela ne change rien au fait que l'idée à laquelle ils croyaient s'est avérée non rentable.

Ensuite, il existe un certain nombre d'options possibles. Certains reprochent au programmeur d'être maladroit et, sans payer le travail, commencent à trouver un autre programmeur. D'autres se mettent à chercher frénétiquement des solutions pour remédier à la situation et demandent d'effectuer « quelques petits changements » (bien sûr, gratuitement, car ils sont si petits !). Je précise qu'il existe également des clients qui acceptent leur erreur comme acquise et ne rejettent pas la responsabilité sur le programmeur. Mais ce chapitre n'a pas été écrit pour eux, ils ont un bon sens de l'autocritique.

Ce ne sont que les conséquences, il est inutile de les démonter, il est beaucoup plus judicieux de trouver et d'éliminer les causes du problème. Le problème est que le trader est trop paresseux pour vérifier son idée Pour ce faire, il faut choisir un intervalle arbitraire de données historiques et observer attentivement, jour après jour, comment la stratégie fonctionnerait et quel sera le résultat. Cela se fait plus facilement et plus rapidement en mode visuel de test (je suis sûr que cela sera bientôt disponible dans MetaTrader 5), mais le test peut aussi se faire en temps réel - une semaine ou deux de travail sur un compte démo

En réalité, toutes les stratégies ne peuvent pas être testées sur les données historiques. Je sais par expérience personnelle que la vérification de certaines idées peut prendre beaucoup de temps Je comprends qu'il est parfois plus facile de payer pour Expert Advisor que de rester assis pendant des heures avec un crayon sur les graphiques. Mais sachez que le résultat peut être une surprise très désagréable lorsque vous envoyez une idée non testée en vue de sa mise en œuvre !

Rappelez-vous ! Le programmeur n'est pas responsable de la rentabilité de votre stratégie, sa tâche consiste à écrire un programme qui fonctionnera avec l'algorithme que vous avez approuvé.

Parfois, le programmeur peut vous indiquer les faiblesses de votre système (vous n'êtes pas le premier à l'avoir fait), mais cela ne repose que sur sa bonne volonté. Il n'est pas obligé de vous protéger des erreurs ou de vous consulter, et n'est certainement pas responsable de la vérification gratuite de votre idée. Lorsque vous commandez un EA, vous devez soit être pleinement confiant dans votre stratégie, ou comprenez qu'il ne s'agit que d'une tentative, et il est peu probable que le résultat vous étonne par son exclusivité.

Notre conclusion intermédiaire est donc qu'il est préférable de vérifier la stratégie un certain nombre de fois, avant d'ordonner sa mise en œuvre.


2. Se débarrasser des illusions

Le cube impossible d'EscherNous ne voyons que ce que nous voulons voir. Et nous voulons un yacht, une île dans l'océan et une valise pleine d'argent. Nous regardons les graphiques et ne voyons que les signaux d'indicateurs réussis. Nous fermons les yeux et comptons mentalement le nombre de zéros dans le solde de notre compte ... Et le programme fonctionne simplement sur la base de l'algorithme et expose nos illusions.

Les causes de la deuxième plus grande et plus fréquente déception - est la confusion et l'auto-déception. Si vous décidez de faire le premier pas et de vérifier votre idée, prenez le processus de manière critique. De nombreuses déceptions peuvent être évitées à ce stade - il suffit d'essayer de retirer les lunettes roses et d'envisager la stratégie de manière raisonnable.

Une situation très courante : vous avez lu sur Internet (sur un forum, un blog, un livre en ligne) des informations sur une stratégie et a décidé de faire un Expert Advisor pour cela. J'ai regardé les graphiques, j'ai estimé la justesse des calculs et j'ai pensé : « Enfin, nous y voilà, le Graal ! ». La situation est aggravée par le téléchargement (ou, que Dieu nous en garde, l'achat) de ce super-indicateur par lequel la stratégie fonctionne - vous avez maintenant l'illusion que 90% de la tâche a déjà été accomplie, et qu'il ne reste qu'un peu à faire.

Si la moitié d'entre vous à ce stade se posait une question simple - « Pourquoi cette stratégie se trouve dans un domaine public ? » (ou, dans le cas d'un achat, « pourquoi l'auteur vend-il au lieu de l'utiliser ? ») - J'aurais exactement la moitié du nombre de clients que j'ai maintenant... Mais nous croyons aux miracles, et qu'on ne nous persuade pas du contraire ! D'accord, je ne le ferai pas. Mais qu'est-ce qui vous empêche de vérifier ce à quoi vous allez consacrer votre argent personnel ?

Voici quelques règles qui vous aideront à ne pas tomber dans le piège de vos propres illusions, ou des mauvaises intentions de quelqu'un. Ils peuvent ne pas résoudre tous les problèmes possibles, mais vous éviteront les erreurs les plus courantes.

  1. Soyez très sceptique quant aux indicateurs sans code source !
    • Vous ne pourrez que comprendre partiellement leur fonctionnement, et personne ne pourra garantir l'immuabilité de leur comportement à l'avenir.
    • Ils peuvent contenir n'importe quoi - des erreurs de codage qui conduisent au re-dessin des anciens signaux, ou le comportement inapproprié lors du travail sur certains instruments ou types de comptes, à une tromperie délibérée (dessin de signaux réussis connus à l'avance sur les données historiques), ou une simple restriction sur le temps de travail ou un numéro du compte.

    Même si vous ne comprenez absolument pas la programmation, vous pouvez toujours demander à un programmeur vous connaissez d'« examiner » le programme - juste pour être sûr, ou directement avant de commander Expert Advisor.

  2. Observez le travail des indicateurs en temps réel !
    • Sans savoir comment l'indicateur fonctionne en ligne, il est inutile de considérer ses signaux dans l'historique - il peut simplement s'agir d'une belle image (mais, malheureusement, inutile).
    • Presque tous les indicateurs peuvent changer la valeur de la dernière barre (non complétée) - c'est normal. Il faut comprendre que sur l'historique (sur les barres formées), ces changements ne sont pas visibles, les données de l'indicateur étant tracées sur les barres complétées. Cela signifie que les signaux (flèches, croisement d'indicateurs/lignes de prix) ne peuvent être utilisés dans le système (pour ouvrir une position) que sur la prochaine barre après leur apparition. Si on essaie d'utiliser les signaux (sans attendre la fermeture de la barre), pendant le test de l'Expert Advisor, il s'avérera qu'il y avait beaucoup de flèches et de croisements (et donc les positions ouvertes), mais au moment de la fermeture de la barre, la plupart d'entre eux ont disparu. Vous verrez la position sur le graphique, mais pas le signal correspondant - il n'est visible que lors du suivi de la formation des barres.
    • Certains indicateurs peuvent changer la valeur, non seulement pour la dernière, mais aussi pour plusieurs barres précédentes. Parfois, cela a causé l'essence de l'indicateur (par exemple, pour la formation d'une fractale, il doit y avoir 2 barres à sa droite, et la dernière section du ZigZag peut être redessiné longtemps, jusqu'à ce que les conditions d'une nouvelle section soient remplies), mais souvent, un tel comportement est la preuve d'une tromperie délibérée - de nombreux indicateurs sont créés uniquement pour le beau dessin sur les données historiques (afin de les vendre), et il est pratiquement impossible de les utiliser dans dans les transactions

      Si l'indicateur, sur l'historique, montre les signaux d'achat au plus bas, et de vendre- au plus haut, ce n'est pas une indication qu'il s'agit d'un très bon indicateur, mais au contraire - qu'il « prédit le passé ».

    • Il n'est pas nécessaire de s'asseoir et de regarder pendant des heures le graphique en ligne - de nombreux indicateurs peuvent être testés en mode de test visuel. Mais quoi qu'il en soit, le moyen le plus fiable de le tester - est de l'exécuter sur un compte de démonstration et de le surveiller. Vous pouvez joindre l'indicateur au graphique, attendre un peu, et l'attacher à nouveau (avec les mêmes paramètres) - s'il est « réel » (n'utilise pas le redécoupage des valeurs précédentes), alors l'image sur les deux exemplaires de l'indicateur devrait être identique. Si la nouvelle copie de l'indicateur montre des signaux différents, il est inutile d'analyser ses signaux sur l'historique.

  3. Vérifiez la stratégie sur différents intervalles de l'historique !
    • Il arrive souvent que vous choisissiez inconsciemment un intervalle d'historique très commode (pour votre système) pour les tests. Qu'il s'agisse de l'entrée par le signal de l'indicateur, d'une grille d'ordres, ou d'un reconnaissant de modèle - il y aura toujours un intervalle, sur lequel la stratégie fera de l'argent. Mais quand vous testerez l'Expert Advisor sur toutes les données historiques disponibles, vous verrez immédiatement les intervalles les plus infructueuses. Essayez de les trouver vous-même.
    • Sélectionnez quelques intervalles aléatoires de l'historique. Par exemple, prenons les mois de janvier 2008, octobre 2009 et août 2010 - scannez-les avec vos yeux et calculez le rapport entre les signaux rentables et perdants. Essayez d'examiner la qualité des signaux sur d'autres instruments et délais. Si l'idée a un fondement, il est très probable qu'elle fonctionnera dans d'autres conditions (éventuellement avec des paramètres d'indicateurs ou des niveaux d'arrêt légèrement modifiés).
    • Ne modifiez pas les paramètres de votre système pour un seul contrôle. Si en regardant le mois d'août, vous utiliserez certains paramètres de l'indicateur et, étant passé au mois de septembre, vous prenez d'autres paramètres (qui correspondent mieux) - vous vous trompez simplement. La vérification doit être effectué dans les mêmes conditions, sinon vous ne verrez que ce que vous voulez voir. Je ne dis pas que les paramètres du système doivent toujours rester les mêmes, mais si vous voulez les changer « à la volée », vous devez penser à leurs critères de modification. Il est toujours simple de tirer des conclusions sur l'histoire, mais que se passera-t-il dans le futur ?
    • Trouvez intervalle le plus compliqué de l'historique de la stratégie et testez le système sur celui-ci. Une tactique très courante - l'utilisation des canaux et l'attente du mouvement de recul, souvent soutenue par le doublement du lot à l'ouverture des positions suivantes - fonctionne très bien à certains intervalles de l'historique. Mais le marché a des mouvements à long terme dans le canal et tendances fortes, et les deux systèmes conduisent périodiquement à la perte du dépôt. Trouvez l'intervalle de l'historique qui sera le plus dangereux pour votre système (un long plat - pour une tactique de rupture, et un fort mouvement unidirectionnel - pour les tactiques, basées sur le mouvement arrière), et observez les problèmes lorsque vous tradez sur cet intervalle.

      Et n'oubliez pas - à l'avenir, il se peut que la tendance soit encore plus plate et plus extrême, le marché étant en constante évolution. Réservez toujours une « marge de sécurité ».

  4. Tenez compte des frais généraux (spreads, swaps, commissions, exigences de marge, dégagements minimaux pour l'installation des commandes) !
    • Pour la plupart des stratégies à long terme, toutes ces dépenses ne sont pas importantes, car une erreur de quelques points n'a aucune importance pour elles. Mais la tendance au développement de l'automatisation du trading a montré que de plus en plus de stratégies sont développées avec de petits profits et un trading à haute fréquence, et l'augmentation du spread de 2 points ou du niveau des Stops de 10 points, peut devenir très perceptible.
    • N'oubliez pas que tous les graphiques MetaTrader (les 4ème et 5ème versions) sont créés en utilisant le prix Bid, tandis que l'ouverture des positions longues et la clôture des positions courtes sont exécutées par le prix Ask. Lorsque vous tradez dans votre tête, la prise en compte du spread est peu pratique, mais nous pouvons toujours prendre le résultat total de la transaction et en soustraire le nombre de trades, multiplié par le spread - cela rapprochera les résultats de la réalité.
    • En analysant l'historique, n'oubliez pas qu'il y a quelques années, les conditions de trading étaient très différents. Le graphique « fluffy » de 1999 est idéal pour les stratégies de scalping, si l’on fait du trading en utilisant le spread actuel. Mais en 1999, l'écart était 3 à 4 fois plus important ! Des bénéfices que vous avez pratiquement gagnés, il ne restera plus rien, si l'on soustrait de chaque transaction le spread réel de cette période. La situation est analogue même avec d'autres conditions - il y a quelques années, l'effet de levier maximum disponible était de 1:100, et la distance pour placer un ordre en suspens était mesurée en dizaines de points.
    • N'oubliez pas que les conditions de trading peuvent changer (bien sûr, pour le pire) lors de la publication de nouvelles, et l'exécution des commandes peut être retardée et présenter des dérapages. Ne pas inventer « un système d'information brillant » sur l'historique, essayez de les tester au moins sur le compte micro-réel. Votre point de vue sur le système change considérablement si vous estimez un spread de 2 points et une exécution instantanée, mais la position est ouverte au bout de 5 secondes, avec un slippage de 10 points, et l'écart s'élargit tellement qu'il est difficile de fermer la position au moins sans perdre.
    • Ayez toujours une « marge de sécurité » par rapport aux conditions de trading. Si votre système se « casse » à la moindre variation du spread ou au moindre retard de quelques secondes de l'ouverture d'une position de quelques secondes, il est peu probable qu'il survive dans un « vrai combat ».

      Rappelez-vous que le spread est la raison de la perte de dépôt pour la majorité des stratégies, c'est-à-dire le choix de la direction de la transaction avec une probabilité d'exactitude proche de 50 %, alors essayez d'améliorer la stratégie autant que possible, de sorte que le spread n'affecte pas beaucoup le résultat.

Si vous croyez toujours fermement en votre système après toutes les vérifications, et que vous avez toujours le désir de l'automatiser, alors nous pouvons aller plus loin.


3. Déterminer les objectifs

Déterminer les objectifsAvez -vous déjà demandé pourquoi vous avez besoin d'un Expert Advisor ? Voulez-vous simplement vérifier votre idée dans le Testeur de stratégie ? Ou, peut-être, vous voulez essayer une stratégie prête sur le compte micro-réel ? Non, je sais - vous faites du trading avec votre système depuis 2 ans et vous allez lancer l'Expert Advisor immédiatement sur un compte réel avec un dépôt de 100 000 $.

Ces questions apparemment inutiles sont très rarement posées. En général, il est compréhensible - les réponses ne concernent que quelques petites choses : les détails des exigences techniques, le choix du Demandeur/Développeur et, éventuellement, le coût des travaux. Mais si vous y réfléchissez, la différence entre les différentes approches peut être très importante.

Dans la plupart des cas, le programmeur ne se soucie pas de savoir s'il doit écrire l'Expert Advisor pour le testeur de stratégie (avec un minimum de vérifications et sans traitement des exceptions) ou pour le commerce réel. S'il écrit en MQL depuis longtemps et qu'il ne reçoit aucune plainte concernant la stabilité de ses programmes, alors il avait très certainement une base pour la mise en œuvre de tout algorithme, et il n'y aura pas de différences dans les approches de l'écriture de la version Strategy Tester ou de la version pour un compte réel.

Mais même si vous avez la chance de travailler avec une telle personne, vous sentirez la différence lors de l'élaboration des exigences techniques.

Je m'explique sur un exemple :

  1. Situation numéro un - il vous suffit de tester une idée (vous l’avez trouvé/entendu/lu quelque part). Cela signifie que :
    • Nous ne prévoyons pas de l'exécuter sur un compte réel - toutes sortes de vérifications et la gestion des exceptions n'ont pas besoin d'être effectuées.
    • L'Expert Advisor sera activement testé et optimisé - nous devons atteindre les performances maximales (peut-être au détriment de la robustesse).
    • Il est fort probable qu'après avoir vérifié la première version, il faudra l'affiner - un Expert Advisor devrait être facilement étendu et extensible.
    • Les « goulots d'étranglement » de l'algorithme (fixation des commandes aux distances minimales autorisées, la séquence des positions d'ouverture et de fermeture, le contournement des limitations de lots maximaux, la reprise du travail après des déconnexions, etc.) ne doivent pas être traités, car nous ne savons pas lesquels d'entre eux conserveront leur pertinence dans la version finale.

  2. Situation numéro deux - la stratégie est prête, vous avez besoin d'un Expert Advisor valide pour le compte réel. Par rapport à la version précédente, elle diffère de la manière suivante :
    • Toutes les opérations de trading doivent être aussi correctes que possible, pas seulement les valeurs des paramètres définis par l'utilisateur doivent être testés, mais toutes les valeurs sont calculées pendant le processus de travail (taille du lot, niveaux d'ordres stop, etc.).

      La « qualité » des demandes de trading affecte directement la « relation » du serveur à votre compte - si le serveur avec votre compte - si le serveur est bombardé d'ordres de trading incorrects, il pourrait facilement bloquer le compte, et vous perdriez le contrôle de la situation.

      En cas d'erreur critique, vous devez en informer l'utilisateur (via un message à l'écran, un e-mail, Skype, ICQ ou par SMS).
    • La robustesse du travail, par opposition à la rapidité de son exécution, est mise en avant - si une vérification supplémentaire permet d'éviter une erreur éventuelle, elle doit être incluse dans l'Expert Advisor. Même si cela ralentit les tests et l'optimisation (lorsqu'on travaille en temps réel, la vitesse d'exécution n'est le plus souvent pas palpable).
    • Les améliorations futures, même si elles sont nécessaires, sont mineures. Par conséquent, aucune exigence spécifique concernant la facilité d'extensibilité n'est spécifiée.
    • Tous les « goulots d'étranglement » de l'algorithme doivent faire l'objet d'une réflexion exhaustive et d'un traitement précis. Il devrait y avoir un minimum de situations dans lesquelles une erreur peut se produire (nous ne pourrons malheureusement pas tout prévoir) :
      • L'Expert Advisor doit être capable de reprendre son travail normal après une déconnexion temporaire, une reconnexion au compte ou une réinitialisation du terminal client.
      • Si vous ne pouvez pas définir les ordres en attente ou stop, ils doivent être suivis virtuellement, et lorsque le prix de leurs niveaux est atteint, exécutés sur le prix du marché.
      • Si vous ne pouvez pas ouvrir une position sur les prix du marché en N tentatives, le slippage maximum autorisé doit être augmenté.
      • Lors du déclenchement d'un ordre en attente ou d'un ordre stop, par un niveau non fourni par l'algorithme, et avec un glissement (par exemple, avec un écart de prix), les niveaux de tous les ordres dépendants doivent être ajustés (et, peut-être même, leurs volumes).
      • Toutes les fonctions qui opèrent sur la taille du dépôt (par exemple, le calcul du lot), devrait normalement accepter des opérations non commerciales avec un solde (solde ou retrait).
      La liste peut s'allonger encore pendant longtemps. Il y a une quantité infinie de telles nuances et chaque stratégie a aussi ses détails.
    • De plus, il y a des exigences supplémentaires mises en avant - l’Expert Advisor doit fonctionner correctement avec différents courtiers, tenir compte de la liste des instruments disponibles, de leurs spécifications et d'autres paramètres du serveur (le nombre maximal d'ordres en attente, les niveaux de stop-out, la possibilité d'ouvrir les positions/ordres dans des directions opposées pour MetaTrader 4 uniquement), et ainsi de suite).
  3. Et situation numéro trois - vous êtes vraiment prêt à lancer l'Expert Advisor sur un compte réel avec un dépôt de 100 000 $. Quelque chose va-t-il changer, par rapport aux versions précédentes pour le compte réel ? Tout dépend de votre paranoïa (désolé, je voulais dire de votre prévoyance) :
    • Il n'y a absolument aucun mal à créer d'autres fichiers journaux et à enregistrer régulièrement des captures d'écran des graphiques, qui peuvent s'avérer très utiles pour analyser un problème ou litige.
    • Si vous envisagez d'exécuter l'Expert Advisor sur le serveur dédié, vous pouvez envisager la possibilité de contrôle/correction son travail avec une autre copie (en parallèle). Par exemple, vous pouvez exécuter simultanément l'Expert Advisor sur le serveur dédié et à la maison, et la copie « maison » devrait être capable de prendre le contrôle de la situation, en cas de déconnexion de la copie « serveur » pendant 5 minutes ou plus.
    • Si vous ne pouvez pas surveiller constamment le travail de l'EA, vous pouvez mettre en place un rapport horaire (ou quotidien) sur l'état actuel du compte et la situation des transactions. Les notifications d'erreurs critiques devraient être présentes dans tous les cas.
    • Si vous voulez pouvoir contrôler le processus de trading, même lorsque vous n'avez qu'un téléphone, vous pouvez mettre en œuvre un « feedback » - la possibilité d'envoyer à l'Expert Advisor les commandes via SMS, email, Skype, ICQ, ou en définissant les commandes en attente (avec la description des commandes dans les commentaires).

Eh bien, sentez-vous la différence ? Et ce n'est qu'un aperçu de la méthode, chaque de ces éléments peut réfléchir et s'étendre à l'infini. Et il y a tant de détails que nous n'avons pas encore évoqués !

Après avoir exploré les détails, il apparaît clairement que la réflexion sur les détails de l'algorithme dépend vraiment de l'objectif du conseiller expert et des exigences du client.

Vous ne pouvez pas attendre du programmeur une qualité égale de mise en œuvre de toutes des nuances, de telles normes de qualité, malheureusement, n'existent pas encore. Par conséquent, déterminez pourquoi vous avez besoin de l'Expert Advisor, réfléchissez à la façon dont il doit se comporter dans différentes situations, et assurez-vous de le mentionner dans les exigences techniques.

Le traitement standard des erreurs simples (requotes, arrêts invalides, etc.) sera ajouté par tout développeur EA qui se respecte. Mais il n'est pas garanti que cette « norme de comportement » sera adapté à votre stratégie spécifique.

Par exemple, il n'est pas toujours préférable de fixer le niveau de Stop Loss à la distance minimale autorisée, s'il est impossible de le fixer au niveau calculé - les autres ordres, ou la perte maximale de la série de positions en cours peuvent en dépendre. Donc, encore une fois, si vous êtes sur le point de créer un EA pour un compte réel, pensez à un maximum de scénarios au stade de la préparation de votre travail.

Vous pouvez toujours demander au programmeur de préparer une liste de situations possibles et de développer un algorithme pour les traiter. Mais n'oubliez pas que l'analyse et l'affinement de votre stratégie, ainsi que la création de l'algorithme, ne sont pas directement liés à la rédaction de l'Expert Advisor. C'est une partie distincte du travail, et son résultat n'est pas le code de l'Expert Advisor, mais le texte de l'algorithme. Certains peuvent raisonnablement exiger un paiement supplémentaire pour ce travail - puisqu'il investit son temps, et que vous obtenez, bien qu'intermédiaire, mais tout de même un résultat, et peut aller avec cet algorithme vers un autre programmeur.

Et n'oubliez pas que tous les programmeurs n'ont pas l'expérience du travail sur des comptes réels. Il se peut tout simplement qu'ils ne soient pas conscients de toutes les surprises possibles. Il n'y a probablement pas une seule personne qui ait travaillé avec absolument toutes les entreprises, avec tous les types de comptes, avec tous les instruments possibles et dans toutes les conditions de marché. Partagez vos expériences (le cas échéant), demandez au programmeur de partager son expérience, mais ne pensez pas que vous êtes assuré contre toutes les surprises. C'est malheureusement irréaliste.

Nous avons presque atteint la partie la plus critique - la préparation des exigences techniques, mais pas avant d'avoir fait un petit écart.


4. Synchroniser les vocabulaires

Avant de commencer un dialogue, essayez de comprendre avec qui vous allez communiquer. « À l'autre bout du fil », il y a une personne complètement différente, et ses connaissances peut être très différentes des vôtres.

Tant que vous n'avez pas « synchronisé les vocabulaires » (trouvé un langage commun, défini les termes), le mouvement vers un objectif commun peut être désagréable et difficile. Élémentaire, à votre avis, les choses, peuvent causer tellement de confusion que le développement d'un simple Expert Advisor peut facilement se transformer en plusieurs jours (voire semaines) de recherche pour déterminer la relation.

Faisons un petit détour.

Imaginez que vous deviez changer votre robinet. Vous appelez un plombier et dites : « J'ai cassé une chose avec laquelle je me lave le visage ! » J'en veux un nouveau, que je pourrai tourner d'une seule main ». Cela semble idiot, n'est-ce pas ? Mais croyez-moi, certaines des tâches, envoyés par les traders, semblent encore plus bête !

Essayez maintenant de vous mettre à la place de ce plombier. Oui, il a compris approximativement ce qui se passait, mais il ne peut rien faire pour cette « tâche ». Et seul un télépathe comprendra vraiment quel type de robinet vous voulez.

Essayons d'une autre manière. Vous appelez et dites : « J'ai besoin d'un nouveau robinet dans ma salle de bains. Le diamètre des tuyaux d'eau chaude et froide est de 13 mm, la distance entre le tuyau et la base de l'évier est de 20 cm. Le réglage de la pression et de la température de l'eau doit se faire avec une seule poignée. Il est souhaitable d'avoir le choix entre plusieurs modèles.

Bingo ! Le plombier sait maintenant : a) qu'il faut une poignée de robinet ; b) qu'elle doit être munie de deux robinets et d'une seule poignée de commande ; c) qu'il devra raccorder un tuyau d'une longueur de 20-25 cm et d'un diamètre de 13 mm. Lorsqu'il arrivera chez vous, il sera en mesure de vous proposer quelques solutions parmi lesquelles choisir et de faire rapidement son travail.

De nombreux programmeurs qui écrivent en MQL, ont une réelle connaissance du trading - plus ils communiquent avec les clients et programment des Expert Advisors, mieux ils comprennent la diversité des approches de l'analyse. De plus, nombre d'entre eux élaborent des stratégies pour eux-mêmes, et ils ont donc également étudié la littérature sur le trading et participé à des forums thématiques.

Mais n'exigez pas trop d'eux ! L'expression « étirer le fibo-grille sur les 2 dernières fractales », que vous utilisez peut-être dans votre vie quotidienne, peut conduire un technicien inexpérimenté dans une impasse. Achevez-le par la phrase couramment utilisée « après le déclenchement de la serrure...» ou « à l'ouverture de Londres, réglez les arrêts au seuil de rentabilité », et le client est prêt - vous êtes assuré de longues heures de questionnement et de clarifications.

Je ne dis pas que le « MA » commun devrait être appelé «l'indicateur technique avec une moyenne mobile avec une période de lissage de 36 » - aucun fanatisme n'est requis ! Mais essayez toujours de vous rappeler que votre interlocuteur possède un bagage de connaissances et une vision différentes.

En guise de résultat intermédiaire - quelques conseils :

  1. Expliquez-vous avec des mots simples et compréhensibles, sans utiliser d'abréviations ni de jargon.
  2. Utilisez une terminologie commune. Si vous ne savez pas comment appeler un outil ou un événement, n'hésitez pas à utiliser la formulation d'une référence ou d'un manuel.
  3. Expliquez les choses de manière approfondie et détaillée. Parlez même de ce que vous considérez comme évident. Très souvent, il s'avère que ce n'est évident que pour vous !
  4. Enfin, assurez-vous que l'autre personne vous comprend. Posez des questions suggestives, ou demandez-lui de formuler la tâche dans ses propres mots - assurez-vous que vous parlez des mêmes choses.

Chers collègues, rédacteurs EA ! Si vous avez pensé à tort que ce qui précède ne concerne que les traders, je vais m'empresser de vous décevoir ! En tant que personnes techniquement compétentes, nous sommes responsables de l'exactitude de l'ensemble du processus de travail. Et nous sommes, dans une large mesure, responsables de son succès.

Très peu de traders sont capables de formuler la tâche de manière précise et correcte - c'est un fait. Au cours de mes six années d'expérience dans la rédaction d'évaluations d'EA, je ne me souviens que de deux clients dont les tâches étaient vraiment étonnantes - il s'agissait de programmes prêts à l'emploi, qu'il suffisait de transférer dans MQL. Plusieurs autres personnes ont été taguées comme « elles comprennent ce qu'ils veulent » et « sont capables d'exprimer leurs pensées » - après avoir lu leurs algorithmes, j'ai clairement compris comment les futurs programmes fonctionneront. Mais la majorité des clients - sont des traders débutants, ils sont effrayés non seulement par le besoin de décrire clairement les actions de l'EA, mais du mot « algorithme ».

Soyez un peu psychologue - déterminez le niveau de votre partenaire et utilisez les termes et concepts correspondant à son (niveau). Ne lui infligez pas votre intellect, soyez indulgent. Si possible, éliminez toutes les nuances de programmation dans la discussion, la personne n'a absolument pas besoin de savoir ce qu'est un cycle, où commence la numérotation des barres et dans quelles conditions est exécutée la fonction qui enregistre les informations de commande dans le fichier.

Cela ne signifie pas qu'il faille « baby-talker » avec le client et qu'au moindre signe de désaccord, il faille réécrire l'EA. Certainement pas ! Mais essayez de devenir pour lui non seulement un bon technicien, mais aussi un interlocuteur agréable - il l'appréciera certainement.

Nous avons enfin atteint la partie la plus critique - la création de l'algorithme. Bien, Commençons !


5. Préparation des spécifications des exigences

Préparation de la tâche

Votre cousin, qui n'a rien à voir avec le trading, devrait être capable de trader sur votre système, en ayant seulement votre algorithme préparé.

Cette phrase classique, légèrement modifiée, illustre très clairement les principales qualités d'une bonne spécification technique :

  1. Cette tâche doit être totalement autonome (compréhensible pour une personne totalement étrangère à votre système).
  2. La tâche doit être aussi détaillée que possible (compréhensible même pour une personne inexpérimentée en matière de trading).

Comme l'expression « ça n'a rien à voir avec le trading » est catégorique et exagérée. En effet, il sera difficile d'expliquer à une personne, en plus de l'essence du système, les bases du trading et de l'utilisation du terminal de trading. Je me permettrai de recourir une fois de plus à une phrase classique :

Votre cousin, qui a installé MetaTrader il y a seulement deux mois, et qui n'a tradé que sur des comptes de démonstration pendant tout ce temps .... le reste on connait.

Mais cela ne change rien à l'essentiel ! Si vous donnez votre algorithme à dix personnes différentes et leur demandez de trader avec votre système, elles doivent obtenir des résultats absolument identiques. Combien d'entre vous peuvent se vanter d'une telle expérience ?


5.1. Par où commencer ?

Nous allons commencer par le début. Décrivez l'idée générale, dites ce que vous voulez obtenir. N'oubliez pas vos propres objectifs et exigences pour le programme, ils peuvent être formulés maintenant.

En ayant une idée générale sur vous et votre système, le programmeur peut évaluer le sérieux de vos intentions, et estimer le montant approximatif du travail.

Quelques exemples de ces entrées :

Nous avons besoin d'un indicateur pour MetaTrader 4. La tâche - dessiner un graphique inversé d'une paire de devises arbitraire dans la sous-fenêtre principale du graphique. L'indicateur devrait fonctionner sur des cotations à 4 et 5 chiffres et avec des noms de symboles non standard (par exemple, EURUSDFXF).

Nous avons besoin d'un Expert Advisor pour MetaTrader 5. En tradant sur une seule devise, le signal d'entrée est basé sur l'indicateur personnalisé (le code est joint). Fermeture des positions - par le SL, TP, et par un signal inverse. Toutes les positions sont accompagnées d'un suivi arrêt, en fonction d'un autre indicateur (le code est également disponible). Le lot est calculé en pourcentage du solde.
Il est nécessaire de finaliser l'Expert Advisor (MetaTrader 4) pour travailler sur un compte réel - effectuez toutes les vérifications nécessaires, restaurez le fonctionnement normal après un échec de connexion, ajoutez quelques tentatives pour ouvrir une position avec une erreur, et peut-être autre chose - à votre discrétion.
Nous avons besoin d'un EA pour tester une stratégie de rupture d'un canal. Déterminer les limites du canal par l'indicateur ; l'entrée sur le marché par les ordres en attente, après une transaction ratée - une augmentation du lot avec des coefficients spécifiés. Vous devriez également préciser le moment de la journée où la mise en place des premières commandes est permis Et ainsi nous avons le code pour MetaTrader 4.

Cette partie de la tâche est la moins difficile. Mais, malheureusement, c'est souvent à ce moment-là que tout s'arrête... Ne l'oubliez pas - ce n'est qu'une introduction, la description de l'idée générale. Pour écrire un programme, nous avons besoin de beaucoup plus.


5.2. Comment formuler la tâche ?

En fait, l'algorithme est la partie la plus importante. C'est le plus difficile à formuler (surtout pour un non-programmeur), et cela demande vraiment beaucoup de travail.

Essayez de diviser immédiatement l'algorithme en sous-sections logiques, n'essayez pas de transmettre toutes les subtilités du système dans une seule phrase illisible.

Lorsqu'il s'agit de rédiger l'Expert Advisor, on peut distinguer les sections logiques suivantes (leur nombre et leur contenu peuvent varier selon la stratégie) :

  1. Les conditions générales : le temps de travail (quelques jours, certains jours de la semaine), l'ordre d'exécution (par exemple, le début du trading en appuyant sur le bouton), la profondeur d'analyse nécessaire de l'historique, et d'autres conditions, liées à l'ensemble de la tâche en général (pas à ses points individuels).

  2. Le signal d'entrée sur le marché (l'ouverture de la première position ou la passation des premiers ordres) est basé sur des indicateurs, certains modèles de prix, simplement sur le temps, ou sur l'ordre de l'utilisateur. Cela peut également inclure des limitations sur la première entrée (filtres) - par le temps, par un autre indicateur, après une trop longue série de pertes, lors de conditions de trading inacceptables, (spreads trop importants ou un StopLevel), ou lors d'un manque de disponibilité de fonds. La méthode de calcul des lots et le niveau de Stop Loss et Take Profit doivent être spécifiés séparément (si les règles de calcul pour l'ensemble des positions sont les mêmes, nous pouvons les séparer en une clause indépendante).

  3. Le traitement du déclenchement d'ordre en attente ou SL/TP d'une position (si nécessaire). Par exemple, la suppression d'un ordre de vente stop lorsque l'ordre d'achat stop s'est déclenché, la définition d'un ordre de vente limite supplémentaire, lorsqu'un ordre de vente limite précédemment défini s'est déclenché, l'ouverture d'une position pour vendre un volume doublé après le déclenchement du Stop Loss, etc.

  4. Les signaux d'ouverture de positions supplémentaires (s'il y a des positions ouvertes) ou pour la mise en place de commandes supplémentaires (si nécessaire). Par exemple, il peut être fait par le signal d'autres indicateurs ou lorsque l'on atteint un certain profit ou une certaine perte de la position ouverte. Ici, il faut aussi les règles de calcul du lot, du Stop Loss et du Take Profit (si elles diffèrent de celles qui ont été décrites ci-dessus).

  5. Le suivi des positions et des ordres (séparément - le premier de la série, séparément - les ordres supplémentaires, ou tous ensemble, si les règles sont les mêmes). Par exemple, la remontée d'un ordre Stop en attente vers le marché (si le prix évolue en sens inverse), un Trailing Stop de la position (classique, par l'indicateur, ou autre), la fermeture partielle de la position lorsqu'elle atteint un certain profit, etc.

  6. Signaux de clôture (complète, partielle) ou d'inversion de position. Les règles pour la suppression des ordres en attente.

  7. Les conditions générales, telles que celles associées à l'état du compte - la fermeture de toutes les positions et l'arrêt du travail lorsque le prélèvement spécifié, une réduction du pourcentage d'utilisation du dépôt, avec l'augmentation du solde jusqu'à un certain niveau, et ainsi de suite. Ces conditions s'appliquent au premier point, mais il est plus facile de les décrire à la fin (comme dans l'ordre d'utilisation).

  8. Et à la fin, peut-être que des informations supplémentaires sur le graphique sont nécessaires, le dessin des flèches des niveaux de prix d'ouverture/fermeture des positions, les informations détaillées dans le journal, l'envoi d'e-mails lors du déclenchement de commandes en attente, et tout ce qui n'est pas lié au trading, mais à l'interface.

Si nous parlons d'un indicateur, alors d'un côté, tout est beaucoup plus facile - la logique est plus primitive et moins complexe, mais d'un autre côté, il y a quelques subtilités.

Le recueil est quelque chose de ce genre :

  1. Les données requises : une liste des instruments analysés (s'il y en a plusieurs), la profondeur de l'historique de tous les instruments utilisés et des plages horaires, le fuseau horaire du serveur de trading.
  2. Le type de dessin (lignes, flèches de signalisation, graphique en chandelier, sections comme dans ZigZag, figures de forme géométrique, etc.)
  3. L'algorithme de calcul de la première valeur (la valeur sur la barre de gauche), si il est différent de l'algorithme principal.
  4. L'algorithme de base pour le calcul d'une seule barre ou la description du processus de calcul, s'il est difficile de dériver une formule pour une barre individuelle (comme dans le cas d'un Zig-Zag, par exemple).
  5. Et les trucs bien agréables, si besoin : signaux audio, sauvegarde des captures d'écran, envoi de notifications à l'e-mail, etc.


Essayons de passer de la théorie à la pratique et de terminer certaines de nos tâches types :

Nous avons besoin d'un indicateur pour MetaTrader 4. La tâche : dessiner un graphique inversé d'une paire de devises arbitraire dans la fenêtre principale du graphique. L'indicateur devrait fonctionner sur des cotations à 4 et 5 chiffres et avec des noms de symboles non standard (par exemple, EURUSDFXF).

  1. Dans les paramètres, précisez le nom de l'instrument (le symbole  paramètre), qui doit être affiché (par exemple, « GBPUSD_m »). Si le nom n'est pas spécifié, utilisez le symbole du graphique, sur lequel l'indicateur est attaché. Si un tel symbole n'est pas présent dans la fenêtre « Market Watch », il est nécessaire d'afficher une fenêtre avec un message d'erreur.
  2. L'indicateur doit être tracé sous forme de chandeliers japonais. Les couleurs des chandeliers croissants et descendants, ainsi que les ombres (séparément - la supérieure et la inférieure) doivent être conçues comme des paramètres d'entrée.
  3. Le calcul des valeurs OHLC pour chaque barre est effectué par les formules :
    • Ouvert (indicateur) = 1 / Ouvert (symbole );
    • Fermer (indicateur) = 1 / Fermer (symbole) ;
    • Bas (indicateur) = 1 / Haut (symbole) ;
    • Haut (indicateur) = 1 / Bas (symbole).
  4. A tous les niveaux de prix « arrondis » (1.3200, 1.3300, 1.3400, 1.3500, ...), c'est-à-dire que les niveaux qui ont un multiple à 4 chiffres de 100 points, vous devez tracer une ligne horizontale (le style et la couleur doivent être conçus comme des paramètres d'entrée).
Ce sera un peu plus difficile avec l'Expert Advisor :

J'ai besoin d'un Expert Advisor pour MetaTrader 5. Faire du trading sur une seule devise, le signal d'entrée sur le marché est basé sur un indicateur personnalisé (le code est joint). Fermeture des positions - par le SL, TP, et par un signal inverse. Toutes les positions sont accompagnées d'un suivi arrêt, en fonction d'un autre indicateur (le code est également disponible). Le lot est calculé en pourcentage du solde.

  1. Signal pour ouvrir une position - la flèche de l'indicateur iSignalArrow (tous les paramètres de l'indicateur doivent être réglables) :
    • Une position longue est ouverte si la flèche de l'indicateur pointe vers le haut (sous le graphique) sur la dernière barre fermée ;
    • Une position courte est ouverte si la flèche de l'indicateur pointe vers le bas (au-dessus du graphique) sur la dernière barre fermée ;
    • Les flèches sur la barre actuelle (non complétée) sont ignorées, seules les barres complétées sont analysées.
  2. Le volume de position est calculé en pourcentage du solde actuel : Lot = Solde/Marge requise * LotPercent / 100 où :
    • Solde — le solde actuel du compte ;
    • MarginRequired - la marge requise pour ouvrir une position avec une taille de 1 lot ;
    • LotPercent - un paramètre d'entrée (le pourcentage pour le calcul du lot).
      Par exemple, lorsque le LotPercent = 5, avec un effet de levier de 1:100, le lot pour EURUSD (au prix actuel de 1.3900) sera : 10 000 / 1 390 * 5 / 100 = 0.3597
      Le résultat obtenu est arrondi selon les règles habituelles à la valeur correcte la plus proche (jusqu'à 0,36 - si le DC autorise des lots avec une précision allant jusqu'à 0,01, ou jusqu'à 0,4 - si le pas de lot = 0,1).
  3. StopLoss (SL) et TakeProfit (TP) - sont fixes, réglables par les paramètres StopLosset TakeProfit:
    • Les niveaux sont spécifiés en points de cotation à 4 chiffres ;
    • Les niveaux sont calculés par rapport au prix de la position ouverte (le Prix demandé - pour les positions longues et le prix de l'offre - pour les positions courtes) ;
    • Si la valeur est trop faible, l'arrêt doit être fixé à une distance minimale autorisée ;
    • Si la valeur 0 est spécifiée, les arrêts ne sont pas utilisés.
  4. Toutes les positions ouvertes sont accompagnées d'un trailing stop par l'indicateur iTrailingLine (tous les paramètres de l'indicateur doivent être réglables) :
    • Si une position longue est ouverte, et la ligne indicatrice est inférieure au prix actuel, le stop est déplacé au niveau de la ligne de l'indicateur ;
    • Si une position courte est ouverte, et que la ligne de l'indicateur est au-dessus au prix actuel, le stop est déplacé au niveau de la ligne de l'indicateur ;
    • Les valeurs de l'indicateur sont prises dans la barre complétée (formée), la barre actuelle (inachevé) n'est pas utilisé. En d'autres termes, la modification ne devrait pas intervenir plus d'une fois dans une barre ;
    • Le déplacement du SL n'est autorisé que dans le sens du profit de la position - vers le haut pour la position longue et vers le bas pour une position courte ;
    • Si vous ne pouvez pas fixer le SL au niveau de la ligne, il doit être fixé à la distance minimale autorisée (mais seulement s'il respecte la règle précédente de déplacement dans la direction du profit) ;
    • La fonction de trailing stop doit être configurable (paramètre AllowTrailing = vrai/faux).
  5. S'il y a une position ouverte et qu'il y a un signal opposé, la position ouverte doit être fermée et une nouvelle position doit être ouverte (dans la direction opposée).
    Pour une nouvelle position, le calcul du lot doit être appelé après la clôture de la position ouverte.
  6. Divers :
    • Lorsque vous exécutez l'Expert Advisor, il doit associer les indicateurs utilisés avec les paramètres spécifiés ;
    • Les informations sur les ouvertures/fermetures de positions et de modifications des SL doit être stocké dans le Journal ;
    • S'il y a des erreurs, il doit imprimer un message décrivant l'erreur.

Sous cette forme, l'algorithme peut être envoyé au programmeur - il contient suffisamment de détails sur le système et peut facilement être « traduit » en MQL. Mais ne vous précipitez pas sur la commande, réfléchis-y jusqu'au bout.


5.3. Qu'est-ce qu'il ne faut pas oublier ?

 Qu'est-ce qu'il ne faut pas oublier ? Un programme, écrit sur la base de l'un de ces algorithmes, fonctionnera bien dans des conditions idéales - dans un terminal client séparé, avec un seul accès au compte, sans l’intervention de l'utilisateur ou d'autres programmes.

Un exemple d'un tel environnement - un testeur de stratégie, il n'y a pas d'erreurs de perte de connexion, de positions fermées accidentellement, et d'autres Expert Advisors de trading. Mais dans la vie quotidienne, de telles conditions sont extrêmement rares, il est fort probable que le programme fonctionnera avec le « monde extérieur ».

Vous pouvez vouloir exécuter plusieurs copies du programme sur des symboles différents ou avec des paramètres différents, vous allez redémarrer le terminal, trader sur le compte manuellement ou avec d'autres Expert Advisors, vous connecter à différents comptes à partir d'un seul terminal - tout cela peut affecter le programme, si le traitement de ces situations n'est clairement pas prévu par l'algorithme.

Si votre objectif dépasse le simple test du programme dans le Strategy Tester, décrivez tout de suite les règles d'interaction avec le monde extérieur :

  1. Comment l'Expert Advisor doit réagir aux positions, ouvertes manuellement ou autre Expert Advisors ?
    En général, les gens choisissent l'une de ces trois options :
    • Ignorez complètement toutes les « autres » positions. Si le système est autonome, alors les actions de trading d'autres Expert Advisors ou de l'utilisateur, ne devraient pas l'influencer.
    • Travaillez uniquement avec des positions « manuelles ». Si l'Expert Advisor est conçu pour accompagner les positions ouvertes manuellement, il ne doit pas interférer avec les positions des autres Expert Advisors, et il n'ouvre généralement pas de position propre. Sa tâche est d'aider au trading manuel (déplacer le Stop Loss, fermer la position par le signal, etc).
    • Une solution plus universelle consiste à laisser le choix à l'utilisateur : ne travailler qu'avec ses propres positions ou pour accompagner des positions qui remplissent des conditions spécifiques (pour un symbole particulier ou avec un numéro magique spécifique).

    Dans MetaTrader 5, la séparation des transactions entre « propres » et « autres » est particulièrement pertinente - le terminal n'affiche que la position totale du symbole, même si il a été « collectée » à partir des transactions de plusieurs Expert Advisors différents. La mise en œuvre d'une comptabilité complète des transactions (pour le fonctionnement normal de plusieurs EA sur un seul symbole) est plus difficile dans sa mise en œuvre, et peut donc être plus coûteuse. Vérifiez auprès du demandeur/développeur si l’Expert Advisor fonctionnera normalement avec d'autres Expert Advisors, travaillant sur le même symbole.

  2. Comment l'Expert Advisor doit-il réagir à une connexion à un autre compte de trading ? Y a-t-il besoin d'une procédure spéciale pour l'exécuter sur le compte réel ?
    Je pense que de nombreux traders peuvent « se vanter » de leurs pertes, causées par un simple manque d'attention - connexion accidentelle à un compte réel, lancement d'un terminal avec un Expert Advisor en cours d'exécution, ou un changement des paramètres de l'Expert Advisor en présence de positions ouverts. Ces absurdités peuvent être évitées simplement en les prenant en compte dans l'algorithme.
    Par exemple :
    • Lorsque vous exécutez l'EA sur un compte réel, il devrait créer un bouton sur le graphique, qui permet de faire du trading. Le travail ne doit commencer qu'après que l'utilisateur ait cliqué dessus.
    • Lorsque vous modifiez un compte, l'EA doit en informer l'utilisateur et arrêter son travail jusqu'à ce qu'un nouveau lancement soit exécuté (une alternative - demander à l'utilisateur s'il doit continuer son travail).
    • S'il y a des positions, ouvertes par l'EA (ou des ordres définis), quand il y a un changement dans les paramètres externes, l'AE doit modifier les positions (ordres) en fonction des algorithmes conçus - par exemple, s'il y a un changement de la valeur StopLoss, nous devons modifier le Stop Loss de toutes les positions ouvertes, mais seulement s'il n'a pas encore été déplacé par le trailing stop. Ici, il est impossible de donner une recette universelle, chaque paramètre doit être décrit séparément. De plus, pour différentes stratégies, il peut y avoir différentes réactions aux changements d'un même paramètre.
  3. Est-il nécessaire d'exécuter plusieurs copies du programme avec des paramètres similaires (ou identiques) ?
    Si l'Expert Advisor place l'objet graphique sur le graphique, en exécutant plusieurs copies de l'indicateur, et en changeant la valeur d'un seul paramètre, alors tous les objets, créés par celui-ci, doivent avoir des noms contenant la valeur de ce paramètre - sinon, chaque prochaine exécution faussera les résultats des précédentes.
    Dans le cas de l'Expert Advisor, un paramètre spécial est généralement ajouté - ExpertId ou MagicNumber, qui vous permet d'exécuter n'importe quel nombre de copies de l'EA avec n'importe quel ensemble d'autres paramètres. Précisez dans la tâche, pour quels paramètres et pour quelles combinaisons il est possible d'exécuter simultanément le programme, toutes les situations ne seront pas fournies par le programmeur lui-même.
  4. Comment la migration de l'EA vers un autre terminal, connecté au même compte, doit-elle être mise en œuvre ? L'Expert Advisor peut-il stocker certaines données dans les fichiers ou dans les variables globales du terminal ?
    Pour la plupart des programmes, il n'est absolument pas nécessaire de stocker des informations intermédiaires, leurs algorithmes sont basés sur des données historiques de paires de devises et sur l'historique de trading des comptes (ces données peuvent être obtenues à partir de n'importe quel terminal, connecté à votre compte). Mais il est souvent nécessaire de stocker certaines informations dans un fichier, et de les récupérer au prochain lancement - cela permet parfois d'accélérer la vitesse d'exécution, et parfois, il est tout simplement impossible de créer un programme viable sans cela. Avertir le programmeur de toute exigence particulière pour le processus de transfert de l'EA, ou demandez-lui simplement de décrire ce processus spécifiquement pour votre cas.

Toutes les subtilités, malheureusement, sont impossibles à prévoir. Par exemple, s'il n'y a pas assez de marge pour ouvrir une position (à cause des positions, ouvertes par d'autres EA), calculé dans le lot EA, alors vous devrez soit sauter le signal, soit ouvrir avec un volume plus faible.

Si d'autres EA reprennent le contexte de trading (dans MetaTrader 4 uniquement), votre EA ne ne sera pas en mesure de faire du trading. Et s'il y a une limite sur le nombre maximum de commandes en attente, la nouvelle commande ne pourra pas être définie. Cependant, étant donné que la plupart de ces cas sont prévus dans votre algorithme, cela n'aggravera pas la situation. Gagnez en expérience et chaque nouvelle version de l'EA sera meilleure et plus fiable.


5.4. Comment simplifier la compréhension ?

L'information est digérée beaucoup plus facilement si elle est bien illustrée.

Pour comprendre une stratégie simple, il suffit d'avoir un texte descriptif, mais si votre système est inhabituel et compliqué, prenez quelques mesures pour aider le programmeur :

  1. Joignez à la tâche quelques captures d'écran, illustrant les différents points de l'algorithme (l'instant d'apparition d'un signal, une démonstration du fonctionnement d'un trailing stop, la séquence de mise en place des ordres en attente, etc.) N'hésitez pas à accompagner les graphiques de brefs commentaires, même s'ils sont partiellement repris dans le texte de l'algorithme.
  2. Mettez en forme le texte de la tâche avec goût : utilisez des couleurs différentes pour Long et Positions courtes mettre en évidence les variables externes (les paramètres que vous voulez pouvoir configurer), marquer les points importants et les formules. Outre le fait que le texte sera plus facile à lire, il sera beaucoup plus facile d'y naviguer.
  3. Donne des exemples. Toute formule, illustrée par des nombres concrets, devient beaucoup plus clair.
  4. Numérotez les paragraphes et sous-paragraphes de l'algorithme - afin qu'ils puissent toujours être mentionné au cours de la discussion. « Erreur dans une position 2.1.4 - est beaucoup plus court et plus précis que « une erreur à l'endroit où est calculé le niveau de Stop Loss pour la deuxième position longue de la série ».


5.5. Texte, voix ou vidéo ?

Texte, voix ou vidéo ?Je trouve toujours hilarant qu'un client, au lieu de m'envoyer la tâche, m'envoie un lien vers une discussion de 120 pages sur la stratégie sur un forum, un livre de 70 pages ou une conférence vidéo d'une heure et demie. En effet, les programmeurs ont tout le temps du monde, rien d’autre à faire - ils prendront le temps d'étudier ce ... Le fait que la partie utile de ces informations tienne dans un algorithme d'une demi-page, ou le fait qu'il soit tout simplement impossible de formaliser cette description, ne semble préoccuper personne.

Si vous avez déjà fait des recherches sur ce matériel, si vous comprenez de quoi il s'agit, si vous avez une bonne idée du fonctionnement de la stratégie, formalisez simplement l'algorithme ! Supprimer les « déchets » (qui constituent généralement 80 % de l'information), les pauses maladroites, les discussions distrayantes, les histoires sur l'avenir radieux, les observations sur les résultats des tests - et le demandeur/développeur ne recevra que ce dont il a réellement besoin pour écrire le programme.

Mais si vous ne savez toujours pas de quoi parle le livre ou la conférence, si vous n'êtes pas sûr que cela suffise pour créer un système de trading entièrement automatisé, alors formulez la question différemment ! Vous ne pouvez vous demander « combien cela coûtera-t-il d'écrire un Expert Advisor basé sur cette stratégie » que lorsque vous avez une stratégie.

Et dans notre cas, il n'y a qu'une certaine quantité d'informations. Sa qualité (si elle se prête à la formalisation, si elle est suffisamment détaillée, etc.) - est encore inconnue. N'hésitez donc pas à demander au programmeur s'il est intéressé par l'étude de ce matériel « pour l'idée », et si non, combien il prendra pour écrire des règles à part entière pour un système de trading à partir de cette « longue discussion ». Croyez-moi, la forme même de la question illustrera votre relation avec le demandeur/développeur.

Tous les programmeurs ne sont pas intéressés par la lecture d'articles de plusieurs pages ou de discussions sur ils ont suffisamment de leurs idées en attente de vérification, et les nouvelles informations ne sont tout simplement pas nécessaires.

Tout le monde n'a pas envie de regarder un conférencier parler de la construction des lignes de tendance et de leur rôle dans son système, au lieu de regarder son film préféré. C'est souvent assez ennuyeux et, pire encore, difficile à formaliser. Certains moments devront être littéralement inventés par vous-même (trouver l'explication la plus logique), certaines choses devront être devinées ou sélectionnées par l'expérimentation, pour certaines questions, vous devrez chercher et rechercher des informations supplémentaires. En général, le processus est assez laborieux et créatif, ne le sous-estimez pas.

Je tiens à mentionner séparément ceux qui aiment communiquer par Skype ou par téléphone. Le plus souvent, l'envie de décrire oralement sa stratégie est due non seulement à la réticence d'effectuer des actions supplémentaires (taper au clavier), mais pire encore, le manque de compréhension de la stratégie par l'auteur.

Il est impossible de construire un ensemble de règles de trading, si elles sont basées sur des suppositions et les intuitions de l'auteur, il est très difficile de structurer une histoire émotionnelle et désordonnée. Et, comme dans le cas de la longue conférence vidéo, le programmeur n'est pas toujours intéressé par l'écoute de ces « révélations » - puisque pour écrire le programme, il a besoin d'un algorithme, et quelqu'un devra toujours l'écrire.

Il est difficile de surestimer l'importance des technologies modernes - il est beaucoup plus facile de trouver un langage commun en communiquant par la voix ou la vidéo, et en montrant une image de votre écran à votre compagnon. Mais la conversation sera beaucoup plus productive s'il y a matière à discuter - formulez vos pensées sur papier, et vous pouvez préparer une tâche à part entière au cours de la discussion, simplement en apportant des clarifications mineures à un texte déjà préparé.

Les conclusions que vous devriez tirer de ce qui précède sont les suivantes :

Si vous pouvez tirer un algorithme avec une stratégie claire à partir de la description, dessinez-le vous-même et ne soumettez au programmeur que les informations nécessaires.
Si le processus de formalisation est très complexe et demande beaucoup de travail - ne vous attendez pas à ce que le programmeur le fasse gratuitement.

J'espère que maintenant vous avez une bonne compréhension de ce qu'est une tâche et que nous pourrons parler du choix d'un exécuteur particulier.


6. Sélection du demandeur/développeur

Sélection de l'exécuteurLa question du choix d'un programmeur est devenue vitale dès l'apparition de ce choix. Chaque client souhaite payer le moins possible et obtenir des résultats de la plus haute qualité. Idéalement, le logiciel devrait être écrit par les meilleurs professionnels, et en même temps, être gratuit. Il s'agit d'un idéal à atteindre, en manœuvrant entre les professionnels coûteux et les débutants.

Lorsque vous choisissez le développeur pour la mise en œuvre de votre premier travail, je vous conseille d'évaluer ces critères :

  1. Expérience de la rédaction de programmes publics en MQL4/MQL5.
    Si le développeur EA est entré sur le marché il y a une semaine, il pourrait également partir dans une semaine. Un « pro » ayant deux ans d'expérience peut bien sûr aussi disparaître soudainement, mais la probabilité est beaucoup plus faible. La perte de communication avec le développeur menace, non seulement la possibilité de passer une nouvelle commande, mais aussi :
    • Le manque de soutien (il n'y a pas de logiciel sans erreur, il n'y a que des programmes mal testés) ;
    • La complexité d'apporter des améliorations, même minimes (il est toujours plus difficile de travailler avec le code d'autres personnes, donc un autre développeur peut demander un montant décent, même pour des changements mineurs).

  2. Commentaires de vrais clients.
    La pratique est le critère de la vérité. Si une personne a écrit des programmes qui sont utilisé par de vraies personnes, cela signifie qu'ils fonctionnent. Sinon, vous seriez toujours tombé sur des retours d'expérience, exposant son manque de professionnalisme.
    Si vous avez des amis trader qui ont déjà fait appel aux services d'un programmeur, demandez -leur conseil - au moins, vous obtiendrez ainsi le résultat escompté.

  3. Disponibilité en ligne.
    Personne n'aime attendre une réponse à une lettre pendant plusieurs jours. Et pour certains, même 2 heures c'est trop long.
    Observez la personne - si elle est souvent « en ligne », si elle est rapide ou non pour répondre aux messages. À l'avenir, cela peut vous faire économiser énormément de temps.

  4. Méthodes de communication.
    Aujourd'hui, il existe de nombreux moyens de communiquer via Internet : les e-mails, les messageries, programmes de chat vocal et vidéo, messages privés sur les ressources Internet. Certains sont habitués à une méthode, tandis que d'autres à une autre. Pour une bonne communication, vous devrez choisir une méthode qui soit confortable pour vous deux. Il n'y a aucun problème à installer un programme de plus, mais certaines personnes peuvent ne pas vouloir le faire, car elles n'en voient pas la nécessité.
    Si vous avez besoin d'une communication en direct (par exemple via Skype), vérifiez avec votre développeur s'il est prêt à le faire. Surtout, arrangez-vous à l'avance si vous voulez parler au téléphone ou vous rencontrer en personne - tout le monde n'acceptera pas d'effectuer son travail « hors ligne ».

  5. Conditions de coopération.
    Avant de passer une commande, il est nécessaire de connaître toutes les conditions de coopération :
    • Est-il possible de travailler via le service « Jobs » ? Une réponse positive à cette question annulera la plupart des autres.
    • Le prépaiement est-il obligatoire et si oui, à combien s'élève-t-il ?
    • Comment le programme sera-t-il vérifié ? Aurez-vous une version démo ?
    • Recevrez-vous le code source du programme, et si oui, quand - après le paiement ou tout de suite ?
    • Qui détiendra les droits de distribution du programme ?
      Il est peu probable que l'on parvienne à vérifier l'intégrité du programmeur, mais il est tout de même utile de clarifier formellement ce point : s'il est soupçonné à plusieurs reprises de vendre des EA ou des algorithmes de clients, sa réputation le précédera.
    • Quelle sera la durée de l'assistance technique et à quelles conditions ? La correction des erreurs (écarts par rapport à l'algorithme) sera-t-elle gratuite ? Combien coûteront les petites améliorations ?
    Toutes ces nuances doivent être clarifiées avant le début de la relation financière, car il sera plus difficile de le faire par la suite.

  6. Méthodes de payement.
    Quels systèmes de paiement électronique le développeur utilise-t-il ? Le paiement peut-il être effectué par virement bancaire ou carte de crédit ?
    Assurez-vous de vérifier les exigences relatives à la devise de paiement - Internet est international, et tout le monde n'aura donc pas besoin de roubles russes.

  7. Caractère.
    Si vous ne cherchez pas une coopération unique, mais un partenaire constant, essayez de savoir si vos caractères sont compatibles. Communiquez entre vous, indiquez vos exigences à l'égard de l'autre partie, décrivez votre vision du monde, vos principes et vos faiblesses (dans la mesure où votre autocritique vous le permet).
    Une alternative - essayer de commander au premier venu, et tout régler dans la foulée. Mais il se peut alors que ce partenaire se situe très loin de votre première tentative.

  8. Coût des travaux.
    Enfin et surtout. Je ne confierais pas l'écriture d'un programme sérieux à une personne qui évalue son travail à 10 dollars, mais je ne suis pas non plus prêt à payer 1000 dollars - je dois donc choisir quelque chose entre les deux. Le prix, d'une part, indique le professionnalisme de l'exécuteur, et de l'autre, dépend de son intérêt et de sa charge de travail. Ne vous attendez pas à avoir une « Mercedes » pour 5 $, mais ne payez pas trop cher pour une « Buick ».


Nous avons soulevé à plusieurs reprises le sujet d'une « liste de programmeurs » - la liste de certains spécialistes prêts à travailler avec leurs coordonnées et les avis de leurs clients. Il y a eu plusieurs tentatives pour créer une telle liste - par moi-même dans le « An Expert Advisor Made to Order ». Manuel pour un trader « article sur mql4.com, par des utilisateurs indépendants du forum, et simplement par des personnes indifférentes à ce sujet. Et cela pourrait vraiment faciliter la sélection pour la première commande.

Mais comme il y a quelques années, il n'existe pas de liste exhaustive et constamment mise à jour. Nous pouvons travailler ensemble pour faire une nouvelle tentative de création, mais je pense que la discussion de cette idée dépasse le cadre de cet article.


7. Protégez-vous contre la fraude

Il y a des personnes différentes et des situations différentes. Même les développeurs d'EA les plus dignes de confiance peuvent disparaître sans avoir terminé le travail, et même la personne la plus responsable peut violer les termes de l'accord sous la pression des circonstances. Ne prenez pas de risques là où ils ne sont pas nécessaires - utilisez le Service « Jobs » !

Suivant de près le développement de la stratégie de trading automatisé, à la mi-2010, MetaQuotes Software Corp. a lancé un nouveau service, dont le but principal est l'organisation des relations entre le client et le développeur. Même aujourd'hui, après seulement six mois, le service jouit d'une popularité méritée, et est utilisé quotidiennement par de nombreux traders et programmeurs.

Vous pouvez obtenir plus d'informations sur ce service en consultant l'annonce officielle sur le forum et l'article sur son utilisation :

La principale différence entre le service « Jobs » de MQL5.community et la majorité des ressources et services similaires sur d'autres sites web, c'est la sécurité. Le client et le programmeur sont protégés contre les actions négligentes de l'autre tout au long de l'ensemble période de travail en commun. En cas de litige, la société MetaQuotes Software Corp. est prête à assumer le rôle d'arbitre.

Malgré toute la rigueur et la formalité du service, des problèmes surviennent toujours lors de son utilisation. La majorité d'entre eux peuvent être évités en suivant quelques règles simples :

  1. Avant de traiter une nouvelle commande (si vous êtes trader), ou de faire des propositions de mise en œuvre (si vous êtes le programmeur), assurez-vous d'examiner les conditions du service. De nombreux litiges sont dus à une lecture inattentive ou à un manque de compréhension des règles. Si certains points ne sont pas clairs, ou, à votre avis, peuvent être interprétés de manière ambiguë, posez des questions de clarification dans la branche spéciale - peut-être, votre question rendra les règles plus simples et directes.

  2. Lorsque vous commandez un Expert Advisor, préparez un algorithme clair.
    Plusieurs chapitres de cet article sont consacrés à cet aspect, je ne vais donc pas le répéter ici.

  3. Choisissez un applicateur/développeur adéquat dont le prix et le délai d'exécution de la tâche sont adéquats. Ne vous laissez pas tenter par un « fromage gratuit » - cela n'existe pas.
    Consultez le portfolio du développeur et lisez les commentaires sur les travaux qu'il a réalisés. Assurez-vous qu'il n'est pas trop occupé par d'autres tâches - cela pourrait l'empêcher de terminer votre commande à temps.
    N'oubliez pas que le délai de mise en œuvre est calculé après la fin de la 2ème étape (négociation des exigences) - les détails du processus ne sont pas réglementés, et le calendrier de travail ne dépend que de vous et du programmeur.

  4. Avoir toutes les discussions, en utilisant les messages dans Service « Jobs » - seulement alors ils peuvent être utilisés dans les cas d'arbitrage.
    Même si vous communiquez via ICQ ou Skype, essayez de « documenter » tous les moments clés dans les commentaires du service Job.

  5. Suivez les mises à jour des travaux qui vous concernent (peu importe que vous soyez client ou exécuteur) : consultez régulièrement vos messages personnels, autorisez l'envoi de notifications par e-mail ou ajoutez votre numéro de téléphone portable à votre profil afin de recevoir des notifications par SMS.
    Si vous ne suivez pas le déroulement du travail, il peut se terminer sans vous, et pas en votre faveur - à la date d'expiration, l peut être clôturé de force par l'autre partie.

Sinon, l'utilisation du service n'est pas différente du travail sans intermédiaires, si ce n'est que le développeur versera une petite commission au Service « Jobs » pour l'organisation du processus.


8. Vérifiez les résultats

La dernière étape de notre parcours consiste à vérifier le travail terminé. Pour vous assurer que le programme fonctionne selon l'algorithme approuvé, vous devez le tester soigneusement et en profondeur.

  1. Testez-le dans différentes conditions : sur différents types de comptes, de paires de devises, de cadres temporels, avec différentes combinaisons de paramètres - le programme doit fonctionner de la même manière et correctement dans chaque situation (si « l'indulgence » n'est pas clairement spécifié dans l'algorithme).

  2. Vérifiez le programme non seulement dans le Testeur de stratégie, mais aussi sur un compte de démonstration. Le testeur de stratégie vous aidera à trouver rapidement les erreurs évidentes, et vous permettra de vérifier la stratégie à différents intervalles de l'historique, et le test en ligne montrera comment le programme fonctionnera dans des conditions proches des conditions réelles. Vous pouvez créer des « distractions » pour le programme - redémarrer le terminal client, se connecter à différents comptes, lancer d'autres Expert Advisors ou des indicateurs, modifiez les paramètres pendant le travail - il est préférable de se renseigner sur les caractéristiques de son comportement dans différentes situations à ce stade.

  3. Comparez le travail de l'Expert Advisor avec l'algorithme approuvé, plutôt qu'avec vos attentes en matière de rentabilité du système. S'il s'avère que l'algorithme contient une erreur lors du processus de vérification, veuillez apporter les modifications nécessaires et demander au développeur de modifier l'Expert Advisor. Mais ne vous attendez pas à ce qu'il le fasse gratuitement (surtout si l'amélioration est significative), cette erreur n'est pas de sa faute.

Si vous trouvez un problème, signalez-le au demandeur/développeur.

  1. Indiquez la partie de l'algorithme qui est traitée par le programme de manière incorrecte (ou à laquelle les actions incorrectement commencent).
    S'il est difficile de trouver l'endroit précis où la logique est transgressée, expliquez alors le problème avec vos propres mots, mais essayez tout de même de ne pas trop vous éloigner de l'algorithme.

  2. Décrivez les conditions dans lesquelles les tests ont été effectués :
    • Joindre un fichier avec les paramètres du programme (bouton « Enregistrer » dans la fenêtre « Options » de l'Expert Advisor) ;
    • Spécifiez la paire de devises utilisée et la période du graphique ;
    • Précisez l'adresse du serveur auquel le terminal était connecté, et le type de compte (démo, réel, concours ou autre) ;
    • Spécifier la version de construction du terminal client (menu « Aide » - « A propos ») ;
    • Si vous l'avez coché dans le Strategy Tester, spécifiez les paramètres du Strategy Tester (période de test, type et mode d'exécution, dépôt initial, effet de levier).

  3. Joignez une capture d'écran illustrant le problème.

  4. Si le problème est lié à l'ouverture ou à la fermeture d'une position, copiez l'extrait de du rapport du Strategy Tester ou quelques lignes de l'historique du compte.

  5. Joindre les fichiers journaux de l'Expert Advisor (sélectionner « Ouvrir » dans le menu contextuel de l'onglet « Experts » du terminal client ou dans l'onglet « Journal » du Stratégie Tester).

Plus le programmeur dispose d'informations, plus il sera facile de trouver et de corriger le problème. J'espère qu'après toutes ces descriptions d'étapes, vous obtiendrez exactement ce que vous vouliez. Mais ne vous dépêchez pas de revenir aux journées chargés d'un trader, partagez vos expériences avec les autres.


9. Donnez votre avis

Donnez votre avis

MQL est une communauté en pleine expansion, et vous en faites partie.

Rappelez-vous comment vous avez choisi un programmeur et préparé vos premières spécifications de tâche - qu'est-ce qui a pu vous aider dans le processus ? Partagez vos expériences !

Rédigez un algorithme clair, et qu'il serve d'exemple à suivre. Aider les débutants à formaliser leurs stratégies ou montrez que c'est impossible - sauvez un autre chercheur du graal d'un désespoir.

Racontez vos expériences avec les programmeurs, indiquez leurs points forts et leurs points faibles, décrivez - ce que vous avez le plus apprécié et ce qui a posé problème. Cela vous prendra 10 minutes, mais cela épargnera beaucoup de nerfs et d'argent à vos collègues traders.

J'ai une attitude positive à l'égard de tout commentaire constructif et je vous serais reconnaissant de toute critique de cet article. Si vous pensez que certaines sections doivent être travaillées, qu'il manque quelque chose ou, au contraire, qu'il y a quelque chose en plus, dites -le moi !

Cet article a été conçu comme un outil pour rédiger une description des travaux, mais il couvre en fait de nombreux sujets connexes. J'aimerais vraiment qu'il soit facile à lire, qu'il contienne toutes les informations nécessaires et qu'il soit vraiment utile. Si vous avez déjà lu jusqu'ici, veuillez prendre quelques minutes et laisser vos commentaires. Grâce à vos commentaires, cet article peut être encore amélioré.

Anticipant un certain scepticisme de la part de mes collègues développeurs Expert Advisor, je tiens à vous informer que cet article a été rédigé à la demande de MetaQuotes Software Corp.  Son but n'est pas de faire la publicité de mes services, mais d'aider à la relation culturelle entre le client et le programmeur.

J'espère que vous, en tant que vrai professionnel, soutiendrez cette initiative et contribuerez à élever notre activité globale au prochain niveau. J'attends vos commentaires et observations.


Conclusion

Le trading automatisé continue à prendre de l'ampleur. Comment et où il se dirigera dépend de nous.

Créons une culture des relations maintenant, et très bientôt, vous en récolterez les fruits sous la forme d'Expert Advisors de qualité.