Difficultés de traduction :)

 

Je veux vous raconter comment j'ai converti mon projet de MQL4 à 5 en une nuit. Je veux juste vous parler de ma pratique, qui s'est avérée très simple).

Donc, hier après-midi, fatigué, je me suis couché pendant une demi-heure, et je me suis réveillé à une heure et demie du matin. Je crois que j'ai ronflé, que faire maintenant, je n'arriverai jamais à dormir.

J'ai pensé à changer mon projet de scalper de MT4 à MT5 avec couverture, j'ai utilisé la démo de couverture du site robot depuis longtemps mais je n'ai pas eu le temps de vraiment l'utiliser. L'objectif principal est d'effectuer des tests en utilisant de vrais ticks de robots. Je veux aussi exécuter l'optimiseur dans le nuage, la vitesse y est vraiment bonne.

J'exécute maintenant le modèle dans Matlab, mais il s'agit d'une version simplifiée et il devient de plus en plus difficile de synchroniser les modifications du code et du modèle. Disons que le modèle est constamment à la traîne par rapport au véritable code MQL4.

********** Processus de migration *****

Ainsi, mon projet se compose d'un fichier .mq4 et d'une série de classes en .mqh. J'ai tout déplacé vers 5, renommé .mq4 en .mq5, laissé les classes telles quelles. J'ai commencé à compiler, 100500 erreurs bien sûr. Ok, nous n'avons pas peur des problèmes et regardons les erreurs. La plupart d'entre eux sont liés à MarketInfo, ils apparaissent presque partout. Ok, je suis un chaton paresseux, je n'ai pas le droit de le nettoyer à la main ;)) J'ai déjà un projet MQL4/5 dans Visual Studio.

Au fait, j'ai regardé mon ancienne vidéo de 2011 soigneusement conservée sur YouTube. J'ai appris comment configurer le studio 2010 pour qu'il accepte les fichiers MQL comme fichiers plus. Rien n'a changé, vous pouvez l'utiliser maintenant.

La vidéo de 2011, je pourrais jurer à MQL4, la situation est différente maintenant, le langage est normal ;)) Je suis trop paresseux pour le relire, mais certains échos du passé peuvent s'y glisser.

https://www.youtube.com/watch?v=oQs4qqwhqzg

J'ai donc tout téléchargé dans Studio. Ce qui est bien, c'est que la recherche et le remplacement peuvent être effectués d'un seul coup dans tout le projet et non pas un fichier à la fois. J'ai remplacé tous les MarketInfo par des analogues du MQL5. Après quelques corrections mineures, toutes les erreurs, comme prévu, sont restées dans la classe COrderManager. C'est ma classe qui gère les commandes, construit et modifie les grilles et autres trucs.

Ça a dû me prendre environ 3 heures pour le redessiner. J'ai utilisé la classe CTrade Standard Library, mais j'ai dû donner naissance à un bébé à partir de celle-ci, car certaines fonctionnalités étaient manquantes.

------------------------

Conclusion. Toutes ces lamentations sur la difficulté pour un pauvre programmeur de passer à la version 5 sont des conneries ! Pendant la transition, j'ai cuisiné une grosse pomme de terre avec de la viande, j'ai fait une promenade nocturne, j'aime marcher la nuit, j'ai regardé un peu de films avec Bruce W., et j'ai fait quelques améliorations dans les endroits où je ne pouvais pas aller. Maintenant, il est tout à fait possible de faire un redémarrage, on m'a récemment rappelé une vieille promesse, et le sujet est revenu sur le tapis l'autre jour.

Oui, la classe COrderManager a perdu beaucoup de poids en utilisant la bibliothèque standard.

Настройка Visual Studio 2010 для редактирования MQL файлов
Настройка Visual Studio 2010 для редактирования MQL файлов
  • 2011.07.01
  • www.youtube.com
Как известно, редактор Metatrader 4 далек от совершенства. Часто удобно редактировать большие проекты в VS2010. На этом видео я показываю процесс настройки.
 
Andrey F. Zelinsky:

Comment comprenez-vous "amélioré ces endroits" après "fait une promenade nocturne" ?

Tu t'es promené la nuit ou tu t'es promené ?

Je n'ai pas eu à m'asseoir dans un bureau depuis longtemps, je me promène souvent le soir). J'ai amélioré certains endroits du projet que je voulais changer depuis longtemps mais que j'étais trop paresseux pour le faire. Je me suis préparé à un tel événement, j'ai converti et refait beaucoup de choses.

Andrey, "se promener" et "boire" sont deux choses différentes)).

 

Alexei, une question pour vous :

Dans quelle mesure est-il long et difficile de traduire des projets écrits en style procédural ? Pourquoi la procédure ? - J'ai l'habitude, j'ai un modèle pour toutes les occasions, j'y écris 3-5 lignes pour les conditions, et n'importe quel hibou est prêt en une demi-heure avec tout le débogage.

Suivant :

Est-il possible de réécrire la fonction d'ouverture de position pour l'appliquer de la même manière que dans quad, je me suis juste habitué à leurs noms et à leur utilisation au fil des ans, et je n'ai pas besoin de brancher de bibliothèques.

Et un bloc de conditions pour ouvrir et créer un graphique :

Beaucoup plus de graphiques, écrit une fois sur cinq, de sorte qu'il ya quelque chose fait par .opa temps et le prix de la sélection du premier point et le second. Dans la quatrième, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) et ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), mais dans la cinquième, une telle construction ne fonctionne pas(

Merci d'avance pour la réponse !

 
Alexey Volchanskiy:

...

Conclusion. Toutes ces lamentations sur la difficulté pour un pauvre programmeur de passer à un A sont des conneries ! ...

Ne confondez pas le don de Dieu avec un œuf. Si un EA travaille avec des ordres multiples et traduit en compensation, c'est une tâche irréelle.
 

Je pense que c'est plus facile de ne pas porter le code. Il est plus facile d'écrire à partir de zéro. De cette façon, il sera de meilleure qualité.

 
Dmitry Fedoseev:
Ne confondez pas le don de Dieu avec l'œuf. Si un EA travaille avec plusieurs ordres et passe à la compensation, c'est une tâche irréaliste.

Bien sûr, j'ai écrit dans le premier post"J'ai longtemps voulu déplacer mon projet de scalper de MT4 à MT5 avec couverture, j'ai déjà commencé les démos de couverture de Robo, mais je n'ai pas eu le temps. "Vous avez dû manquer ces détails.

C'est pourquoi je ne suis pas passé à MT5 tant qu'il n'y avait que la compensation. Maintenant, avec la haie, je rampe lentement.

Ce billet portait sur l'aspect purement technique de la transition.

 
Anton Zverev:

Je pense que c'est plus facile de ne pas porter le code. Il est plus facile d'écrire à partir de zéro. Il sera de meilleure qualité de cette façon.

Pourquoi ? Les langues sont les mêmes, les fonctions pour accéder aux séries temporelles sont différentes, quelques autres, cela est résolu dans VS en remplaçant dans tout le projet, comme je l'ai écrit. C'est rapide et sans complication. Quelques difficultés avec la partie trading, j'ai dû introduire la gestion des positions dans la classe en plus du traitement des ordres. Mais en principe, ce n'est pas non plus un gros problème.

Une fois de plus, juste au cas où - je veux dire en couverture.

 
Vitaly Muzichenko:

Alexei, une question pour vous :

Dans quelle mesure est-il long et difficile de traduire des projets écrits en style procédural ? Pourquoi la procédure ? - J'ai l'habitude, j'ai un modèle pour toutes les occasions, j'y écris 3-5 lignes pour les conditions, et n'importe quel hibou est prêt en une demi-heure avec tout le débogage.

Suivant :

Est-il possible de réécrire la fonction d'ouverture de position pour l'appliquer de la même manière que dans quad, je me suis juste habitué à leurs noms et à leur utilisation au fil des ans, et je n'ai pas besoin de brancher de bibliothèques.

Eh bien, et un bloc de conditions pour ouvrir et créer des graphiques :

Beaucoup plus de graphiques, a écrit une fois sur cinq, de sorte que quelque chose est fait par le .opa là temps et le prix de la sélection du premier point et le second. Dans la quatrième, ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) et ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), mais dans la cinquième, une telle construction ne fonctionne pas(

Merci d'avance pour la réponse !

Vitaly, vous pouvez tout laisser en style procédural, personne ne vous oblige à utiliser la POO. La bibliothèque standard est claire pour moi, j'ai créé ma propre classe à partir d'elle, j'ai augmenté certaines choses. Et j'ai tout fait sur OOP.

Je vais répondre dans l'ordre inverse ;))

1. J'ai refait le script avec les graphiques, il y a quelques différences, mais très légères. En fait, je dois spécifier explicitement la fenêtre et la sous-fenêtre, ce qui n'était pas nécessaire dans la version 4.

2. En ce qui concerne l'ouverture des positions, si la classe CTrade est utilisée, elle possède des analogues presque directs des fonctions MQL4.

3. Je pense que ça ne prendra pas longtemps.

Si vous voulez parler de freelancing, vous pouvez vous y habituer très rapidement. En fait, vous devez vous habituer au fait que les ordres, les transactions et les positions sont des choses différentes, y compris pour les couvertures.

 
Anton Zverev:

Je pense que c'est plus facile de ne pas porter le code. Il est plus facile d'écrire à partir de zéro. De cette façon, il sera de meilleure qualité.

Parfois, il est utile de quitter son travail, sa femme et sa vie bien remplie et de repartir de zéro. Je l'ai fait plusieurs fois. Tout est meilleur et de meilleure qualité).
 
Alexey Volchanskiy:
Parfois, il peut être utile de quitter son emploi, sa femme, sa vie de contentement et de repartir de zéro. Je l'ai fait de nombreuses fois. C'est de mieux en mieux ))))
))
 
Je vais me faire sauter dessus maintenant - je le sens. Vous devriez écrire dans le style OOP et vous serez heureux.
Et puis un mouvement comme celui-ci sera une promenade de nuit facile.