Discussion de l'article "Création d’Expert Advisors Multiples sur la base de Modèles de Trading"
Vasily, je m'attendais franchement à mieux. Dans cet opus, vous avez réussi à rendre le lecteur perplexe quant à la signification de votre proposition.
Mais vous auriez pu l'appeler beaucoup plus simplement : "Comment négocier des conseillers experts avec la logique MQL4 dans le terminal MT5". Et c'est à cela que vous devez prêter attention.
Si vous vous étiez concentré sur cette pierre angulaire, votre proposition aurait été beaucoup plus compacte et compréhensible.
Ainsi, vous avez commencé par charger des listes dynamiques et leur application dans ce cas particulier. Puis avec un tableau de commandes virtuelles.
Toute la logique de MQL4 est résolue dans MQL5 en utilisant la fonctionnalité de DEUX méthodes!
1. restauration des tickets stop loss et take profit à partir de l'historique du terminal
2. Le contrôle ultérieur de ces tickets lorsque l'un d'entre eux est déclenché ou que l'oderer principal est supprimé.
Ensuite, après avoir expliqué ces deux fonctions GENERALES , passez aux tableaux dynamiques et à la construction de "modèles-mql4-experts".
Il est très regrettable que vous n'ayez pas décrit le travail avec les ordres en attente. bien qu'ils ne soient pas plus compliqués que les ordres de marché, ils ne font que retarder le placement des vrais ordres stop-loss et take-profit.
Pour une raison quelconque, le lecteur est chargé d'un fichier inutile , <Time.mqh>, dont les fonctions ne sont pas très bien réalisées.
Ensuite, des fonctions pour le comptage des ordres, le contrôle des lots.
Il semble qu'ils aient essayé de mettre dans l'article toutes vos connaissances sur le travail avec les experts et qu'ils aient enterré l'objectif même de l'article sous cette croissance.
Enfin, en ce qui concerne les modèles donnés, je n'ai pas compris comment vous utilisez le stop-loss et le take-profit sur un ordre. Ni dans IACD ni dans Bolinger je n'ai trouvé l'utilisation des stops.
En général, je n'ai pas apprécié la lecture de l'article. Il y a beaucoup de poids inutile, qui a enterré une idée brillante.
- www.mql5.com
Oui, sans restaurer la liste des transactions à partir de l'historique du compte (ou de votre propre fichier), il s'est avéré être le jouet d'un testeur.
Il y a du travail avec les ordres en attente, mais c'est écrit à la toute fin de l'article. (vous n'avez probablement pas eu la patience de le lire :)).
D'une manière générale, l'article est vraiment difficile à comprendre. Il pourrait être mieux structuré en termes de présentation de l'information.
to:Udmurt2
Où pensez-vous que la logique des experts MQL4 se trouve dans mon article ? D'après votre commentaire, j'ai l'impression que vous ne comprenez pas du tout le sujet. A bien des égards, c'est ma faute, bien sûr, peut-être aurait-il fallu mieux structurer l'article.
--------------------------------
Avez-vous des suggestions spécifiques pour améliorer la structure de l'article ?
Je suis d'accord, beaucoup de choses ont été laissées "dans les coulisses". Considérez cette version comme la 1.0. Voici ce qu'il est prévu d'introduire :
1. Sérialisation des données sur la base de fichiers de données ;
2. Reconstruction de l'historique des échanges de modèles par l'historique des commandes ;
3. Description complète du modèle basé sur les ordres en attente. 4 ;
4. description d'un modèle de négociation utilisant un système complexe d'ordres comptés mutuellement ;
5. Contrôle dynamique de l'efficacité de chaque modèle (suppression des modèles inefficaces de la liste des modèles).
6. Retrait des fonctions externes des modèles de négociation, par exemple les fonctions de gestion du capital.
7. Support du multithreading (partiellement utilisé aujourd'hui, grâce à la parallélisation interne de MT5).
...
Comme vous pouvez le constater, le matériel qui doit encore être pris en compte est si complet qu'il est temps d'écrire un autre article sur le sujet, la deuxième partie pour ainsi dire. Cet article n'est pas un article sur le caoutchouc, en tout cas, je pense que les tâches que je m'étais fixées ont été résolues. Et c'est là qu'Udmurt2 se trompe particulièrement. La base de l'approche proposée est constituée de listes dynamiques, qui ne fonctionnent pas du tout avec des ordres en attente (comme cela lui semble être le cas pour une raison quelconque). C'est pourquoi ils font l'objet de tant d'attention. D'une manière générale, il n'y a pas de stratégie qui ne puisse être résolue sans utiliser les ordres en attente. Toutefois, l'approche que j'ai proposée n'impose aucune restriction à l'utilisation d'ordres en attente simulant les mêmes stops et take-outs. Cependant, dans ce cas, des contrôles supplémentaires et des sous-systèmes de programme sont nécessaires, en particulier, une structure décrivant l'événement Trade() serait très utile. Et si une telle structure n'existe pas (parce que MQL5 est en cours de développement), je considère que c'est une pure folie d'écrire des systèmes de contrôle pour des possibilités inexistantes.
D'ailleurs, dans le cas le plus simple, il est possible d'écrire un restaurateur de transactions à partir de fichiers en quelques heures. Cependant, cette question n'a pas été prise en compte dans l'article, parce que je veux que cette solution soit bien pensée, et pas seulement écrite à la hâte. Quoi qu'il en soit, ce sera l'une des nombreuses questions intéressantes à résoudre dans la deuxième partie.
MQL5 est en cours de développement. L'approche proposée, tout comme MQL5, se développera également au fil du temps et des opportunités. Certaines personnes peuvent penser qu'au stade actuel, il s'agit d'un jouet pour un testeur. Dans ce cas, nous pouvons dire que MetaTrader 5 est également un jouet pour les comptes de démonstration. Mais croyez-moi, dans peu de temps, MT5 deviendra un standard de facto, et l'approche que j'ai proposée sera une solution puissante pour le trading multi-devises/multi-horaires/multisystèmes. L'essentiel est maintenant de comprendre les bases. Ces bases sont celles que j'ai décrites dans cet article. Une fois que vous les aurez comprises, vous pourrez facilement écrire votre propre modèle de trading en utilisant tous les avantages des ordres en attente et de la mémorisation des transactions dans des fichiers.
- www.mql5.com
A votre avis, où se trouve la logique des experts MQL4 dans mon article ?
Voici donc les principales tâches que nous devrons résoudre :
- Un conseiller expert doit effectuer des opérations sur la base de plusieurs systèmes de négociation à la fois. En même temps, il doit être tout aussi facile de négocier à la fois un et plusieurs systèmes de négociation ;
- Tous les systèmes de négociation inclus dans le conseiller expert ne doivent pas entrer en conflit les uns avec les autres. Chaque système de négociation ne doit traiter que sa contribution à la position globale et uniquement ses ordres ;
- Tous les systèmes agrégés doivent être aussi faciles à négocier sur une seule période de temps de l'instrument que sur toutes les périodes de temps à la fois.
- Tous les systèmes agrégés doivent être également faciles à négocier à la fois sur un instrument de négociation et sur tous les instruments disponibles à la fois.
Tous ces points permettent d'identifier clairement et absolument la logique du terminal MT4.
1. il peut gérer simultanément plusieurs Expert Advisors grâce à la magie et à l'absence de position nette.
2. les Experts n'entrent pas en conflit les uns avec les autres grâce à la même magie et à l'absence de position nette.
3. Tout peut être négocié sur n'importe quelle période
4. Tout est négocié sur n'importe quel instrument.
QUESTION :Qu'avez-vous écrit de nouveau, qui n'est pas dans le terminal MT4 ?
J'ai écrit plus haut que vous pourriez construire votre raisonnement à partir de la base de MQL4 et développer son implémentation. ainsi, ce que vous voulez dire serait beaucoup plus clair.
Je le construirais de manière progressive, de la prise en compte des stops par magik-ticket à la création d'un modèle d'Expert Advisor de trading-mt4
et seulement ensuite je passerais aux méthodes de contrôle de plusieurs Expert Advisors. (listes/non-listes est déjà comme on sera d'humeur à appliquer)
Considérez cette version comme la 1.0. Voici ce qu'il est prévu d'introduire :
2. Reconstruction de l'historique des transactions du modèle par l'historique des ordres ;
3. Description complète du modèle basé sur les ordres en attente ;
4. Description du modèle de négociation utilisant un système complexe d'ordres comptés mutuellement ;
les points 2 à 4 sont ceux que vous auriez dû résoudre immédiatement dans cet article. tout le reste provient du mauvais article et aurait pu être laissé à la discrétion du programmeur ou dans le second article.
Les listes dynamiques ne sont qu'une des méthodes de leur contrôle et de leur comptabilisation, ce que vous pouvez faire avec un tableau ordinaire.
Dites-moi, quelle autre approche proposée offre une telle flexibilité et une telle contrôlabilité ?
Tout expert MT4 :)))
C-4:
Pour certains, il peut sembler qu'au stade actuel, il s'agit d'un jouet pour un testeur. Dans ce cas, nous pouvons dire que MetaTrader 5 est maintenant aussi un jouet pour les comptes de démonstration.
Oui, c'est vrai ;)
Mais MT est en cours de finalisation. Et le code proposé dans l'article aurait pu être écrit pour des comptes réels.
Au fait, comment se porte l'Expert Advisor Championship ? A-t-il souffert de redémarrages ?
Vasily, tu dois travailler trop dur. Parfois, il faut revenir au début et tout refaire. Je suis déjà convaincu pour la millième fois que les gens ont tendance à tout compliquer. Je vous recommande amicalement de refaire vos cours de base sur la logique mère du fonctionnement du terminal MT4 avec un dispositif linéaire. Beaucoup de choses deviendront plus claires.
Sinon, je vais devoir écrire un deuxième article :)
Oui, c'est le cas ;)
Mais MT est en cours de finalisation. Et le code proposé dans l'article aurait pu être écrit immédiatement en vue du réel.
Au fait, comment se porte le Championship EA ? A-t-il souffert des reboots ?
Il a souffert, mais pas de manière significative. Bien sûr, il disposait d'un gestionnaire d'événements d'initialisation/désinitialisation intégré. Cependant, je n'ai pas tenu compte d'une chose : l'initialisation et la désinitialisation peuvent avoir lieu pendant les heures creuses, par exemple le samedi, ce que les organisateurs du championnat ont prévu. Ce problème est résolu en quelques lignes de code, mais je n'avais pas réalisé qu'il s'agissait d'une combinaison aussi insidieuse (on ne peut pas tout prendre en compte), et quelque part, beaucoup de choses ont été perdues.
J'essaierai d'écrire une sérialisation simple des données dans un avenir proche et de l'insérer dans l'article (en principe, cela prendra deux jours). Avec cela, ce sera un produit à part entière pour travailler sur des comptes en temps réel (démo et réel). Vous pouvez donc dire qu'il s'agit d'un jouet pour un testeur. Il ne manque que 5-6% du code de maintenance pour une utilisation fiable sur des comptes réels.
Nous prévoyons également d'introduire une telle chose : disons qu'il existe un modèle de négociation abstrait. Il n'utilise que des ordres en attente (stops, take-outs, points d'entrée). Il y aura deux façons de l'utiliser dans le moteur : tous les points d'entrée seront virtuels, cachés aux yeux du courtier. Deuxième option : tous les points d'entrée et de sortie seront sur des ordres en attente, afin d'augmenter la fiabilité. Il est intéressant de noter que pour chaque modèle, il y aura deux types de virtualisation (en attente et virtuelle). En d'autres termes, la situation sera la suivante : switch virtual_orders=true; - et tous les ordres sont virtuels, cachés aux yeux du courtier ; switch virtual_orders=false; - et tous les ordres deviennent magiquement en attente. Le plus intéressant est qu'aucun support spécial ne sera requis de la part du modèle, tout sera implémenté au niveau du moteur. Les modèles n'auront qu'à spécifier le type d'ordre pour les points d'entrée, le type de stops et de prises sera choisi indépendamment, en fonction de l'interrupteur virtual_orders.
- www.mql5.com
to:Udmurt
Ne me dites pas ce que j'aurais dû faire ou ne pas faire. Je ne sers pas vos intérêts et ne travaille pas pour vous.
Je considère que notre conversation est absurde, car vous ne comprenez même pas pleinement l'essence de vos propres déclarations. Prouvez-moi que vous comprenez vraiment MQL4 et que vous écrivez un expert en trading sur ce logiciel, par exemple, en négociant simultanément 500 modèles de trading différents. Prenons l'exemple de 5 stratégies * 20 instruments * 5 périodes de temps. Lorsque votre Expert Advisor fonctionnera clairement sur ces stratégies, au moins dans le testeur, alors et seulement alors j'admettrai que les absurdités surchauffées que vous dites ne sont pas vraiment des absurdités, mais des remarques utiles d'une personne intelligente. Maintenant, je voudrais vous demander une faveur : ne me dérangez pas pour rien et n'essayez même pas de communiquer avec moi sans le code source de cet expert.
- Applications de trading gratuites
- Plus de 8 000 signaux à copier
- Actualités économiques pour explorer les marchés financiers
Vous acceptez la politique du site Web et les conditions d'utilisation
Un nouvel article Création d’Expert Advisors Multiples sur la base de Modèles de Trading a été publié :
L'utilisation de l'approche orientée-objet dans MQL5 simplifie considérablement la création d'Expert Advisors multidevises/multisystèmes/multi-périodes. Imaginez seulement, votre seul EA trade sur plusieurs dizaines de stratégies de trading, sur tous les instruments disponibles et sur tous les intervalles de temps possibles ! De plus, l' EA est facilement testé dans le testeur, et pour toutes les stratégies, comprises dans sa composition, il dispose d'un ou plusieurs systèmes fonctionnels de gestion de l'argent.
Comme on peut le constater, la plupart du travail est délégué à des instances spécifiques du modèle. Le niveau externe de l'EA donne le contrôle à tour de rôle à chaque modèle, et son travail s'achève sur celui-ci. Ce qui sera fait par le modèle spécifique dépendra de sa logique interne.
En général, le système d'interaction que nous avons construit peut être décrit par le schéma suivant :
Notez que bien que le tri des modèles, tel que présenté dans le code ci-dessus, se produise à l'intérieur de la fonctionOnTick() , il n'est pas nécessaire qu'il en soit ainsi. Le cycle de tri peut être facilement placé dans n'importe quelle autre fonction souhaitée, telle que OnTrade() ou OnTimer().
Auteur : Vasiliy Sokolov