Übersetzungsschwierigkeiten :)

 

Ich möchte Ihnen erzählen, wie ich mein Projekt in einer Nacht von MQL4 auf 5 umgestellt habe. Ich will mich nicht rühmen, sondern nur über meine Praxis berichten, die sich als sehr einfach herausstellte).

Also, gestern Nachmittag müde, eine halbe Stunde hingelegt und um halb zwei Uhr morgens aufgewacht. Ich glaube, ich habe geschnarcht, was soll ich jetzt tun, ich werde nie einschlafen können.

Ich habe darüber nachgedacht, mein Scalper-Projekt von MT4 auf MT5 mit Hedging umzustellen. Ich benutze die Hedging-Demo von der Roboterseite schon seit langem, hatte aber keine Zeit, sie wirklich zu benutzen. Das Hauptziel ist die Prüfung mit echten Roboterzecken. Ich möchte den Optimierer auch in der Cloud laufen lassen, die Geschwindigkeit dort ist wirklich gut.

Im Moment lasse ich das Modell in Matlab laufen, aber es ist eine vereinfachte Version und es wird immer schwieriger, Änderungen am Code und am Modell zu synchronisieren. Angenommen, das Modell hinkt ständig hinter dem realen MQL4-Code hinterher.

********** Migrationsprozess *****

Mein Projekt besteht also aus einer .mq4-Datei und einer Reihe von Klassen in .mqh. Ich habe alles nach 5 verschoben, .mq4 in .mq5 umbenannt und die Klassen so gelassen, wie sie sind. Ich habe angefangen zu kompilieren, natürlich mit 100500 Fehlern. Ok, wir haben keine Angst vor Problemen und sehen uns Fehler an. Die meisten von ihnen stehen in Zusammenhang mit MarketInfo, sie kommen fast überall vor. Ok, ich bin ein faules Kätzchen, ich darf es nicht mit der Hand aufräumen )) Ich habe bereits ein MQL4/5-Projekt in Visual Studio.

Übrigens habe ich mir mein altes Video aus dem Jahr 2011 angeschaut, das ich sorgfältig auf YouTube aufbewahrt habe. Ich habe gelernt, wie man 2010 Studio so konfiguriert, dass es MQL-Dateien als Plus-Dateien akzeptiert. Es hat sich nichts geändert, Sie können es jetzt benutzen.

Das Video von 2011, ich könnte bei MQL4 fluchen, die Situation ist jetzt anders, die Sprache ist normal )) Ich bin einfach zu faul, um sie noch einmal zu lesen, aber ein paar Anklänge an die Vergangenheit könnten sich einschleichen.

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

Ich habe also alles in Studio hochgeladen. Das Schöne daran ist, dass das Suchen und Ersetzen im gesamten Projekt auf einmal erfolgen kann und nicht nur für eine Datei auf einmal. Ich habe alle MarketInfo durch MQL5-Analoga ersetzt. Nach einigen kleineren Korrekturen sind alle Fehler wie erwartet in der Klasse COrderManager geblieben. Dies ist meine Klasse, die Aufträge verwaltet, Raster und andere Dinge erstellt und ändert.

Ich habe etwa 3 Stunden gebraucht, um sie neu zu gestalten. Verwendete CTrade Standard Library Klasse, aber ich musste ein Baby von ihr gebären, weil einige Funktionen fehlten.

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

Schlussfolgerung. Das ganze Gejammer darüber, wie schwer es für einen armen Programmierer ist, auf 5 umzusteigen, ist Blödsinn! In der Übergangszeit habe ich eine große Kartoffel mit Fleisch gekocht, einen Nachtspaziergang gemacht - ich gehe gerne nachts spazieren -, ein paar Filme mit Bruce W. angesehen und einige Verbesserungen an den Stellen vorgenommen, an die ich nicht herankam. Nun ist es durchaus möglich, einen Neustart zu machen, ich wurde kürzlich an ein altes Versprechen erinnert, und neulich kam das Thema wieder auf.

Ja, die Klasse COrderManager hat durch die Verwendung der Standardbibliothek eine Menge Gewicht verloren

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

Wie verstehen Sie "diese Orte verbessert" nach "einen Nachtspaziergang gemacht"?

Bist du nachts spazieren gegangen oder hast du einen Spaziergang gemacht?

Ich muss schon lange nicht mehr in einem Büro sitzen, ich gehe abends oft spazieren ) Ich habe einige Stellen im Projekt verbessert, die ich schon vor langer Zeit ändern wollte, aber ich war zu faul, es trotzdem zu tun. Ich habe mich auf ein solches Ereignis vorbereitet, umgestellt und viele Dinge neu gemacht.

Andrey, "spazieren gehen" und "trinken" sind zwei verschiedene Dinge )).

 

Alexej, eine Frage an Sie:

Wie langwierig und schwierig ist es, Projekte zu übersetzen, die in einem prozeduralen Stil geschrieben sind? Warum verfahrenstechnisch? - Ich habe mich daran gewöhnt, ich habe eine Vorlage für alle Gelegenheiten, schreibe 3-5 Zeilen für Bedingungen hinein, und jede Eule ist in einer halben Stunde fertig, mit all dem Debugging

Nächste:

Ist es möglich, die Funktion zum Öffnen der Position so umzuschreiben, dass sie auf die gleiche Weise wie in Quad angewendet wird? Ich habe mich im Laufe der Jahre an die Namen und die Verwendung der Funktionen gewöhnt und muss keine Bibliotheken einbinden.

Und einen Block von Bedingungen zum Öffnen und Erstellen eines Diagramms:

Viele weitere Grafiken, schrieb einmal auf fünf, so gibt es etwas durch .opa Zeit und Preis der Auswahl des ersten Punktes und der zweiten getan. Im vierten Fall funktioniert ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) und ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), aber im fünften Fall funktioniert eine solche Konstruktion nicht(

Vielen Dank im Voraus für die Antwort!

 
Alexey Volchanskiy:

...

Schlussfolgerung. Das ganze Gejammer darüber, wie schwer es für einen armen Programmierer ist, zu einem A zu wechseln, ist Blödsinn! ...

Verwechseln Sie das Geschenk Gottes nicht mit einem Ei. Wenn ein EA mit mehreren Aufträgen arbeitet und in Netting übersetzt, ist dies eine unrealistische Aufgabe.
 

Ich denke, es ist einfacher, den Code nicht zu portieren. Es ist einfacher, von Grund auf zu schreiben. Auf diese Weise wird sie von höherer Qualität sein.

 
Dmitry Fedoseev:
Verwechseln Sie das Geschenk Gottes nicht mit dem Ei. Wenn ein EA mit mehreren Aufträgen arbeitet und zum Netting übergeht, ist dies eine unrealistische Aufgabe.

Natürlich habe ich im ersten Beitrag geschrieben: "Ich wollte schon lange mein Scalper-Projekt von MT4 auf MT5 mit Hedging umstellen, ich habe bereits mit Hedging-Demos von Robo begonnen, aber ich hatte noch nicht die Zeit dazu. "Sie müssen diese Details übersehen haben.

Deshalb bin ich nicht auf MT5 umgestiegen, als es nur Netting gab. Jetzt, mit der Hecke, krabble ich langsam rüber.

In dem Beitrag ging es um die rein technische Seite des Übergangs.

 
Anton Zverev:

Ich denke, es ist einfacher, den Code nicht zu portieren. Es ist einfacher, von Grund auf zu schreiben. Auf diese Weise wird die Qualität höher sein.

Warum? Die Sprachen sind die gleichen, die Funktionen für den Zugriff auf die Zeitreihen sind unterschiedlich, einige andere, dies ist in VS durch Ersetzen im gesamten Projekt gelöst, wie ich schrieb. Es geht schnell und unkompliziert. Es gab einige Schwierigkeiten mit dem Handelsteil, ich musste neben der Auftragsabwicklung auch die Positionsabwicklung in die Klasse einführen. Aber im Prinzip ist das auch keine große Sache.

Noch einmal, nur für den Fall - ich meine Absicherung.

 
Vitaly Muzichenko:

Alexej, eine Frage an Sie:

Wie langwierig und schwierig ist es, Projekte zu übersetzen, die in einem prozeduralen Stil geschrieben sind? Warum verfahrenstechnisch? - Ich habe mich daran gewöhnt, ich habe eine Vorlage für alle Gelegenheiten, schreibe 3-5 Zeilen für Bedingungen hinein, und jede Eule ist in einer halben Stunde fertig, mit all dem Debugging

Nächste:

Ist es möglich, die Funktion zum Öffnen der Position so umzuschreiben, dass sie auf die gleiche Weise wie in Quad angewendet wird? Ich habe mich im Laufe der Jahre an die Namen und die Verwendung der Funktionen gewöhnt und muss keine Bibliotheken einbinden.

Und einen Block von Bedingungen zum Öffnen und Erstellen eines Diagramms:

Viele weitere Grafiken, schrieb ich einmal auf fünf, so etwas wurde durch die .opa dort getan, die Zeit und den Preis der Auswahl der ersten und der zweiten Punkt. Im vierten Fall funktioniert ObjectSetInteger(0,nm,OBJPROP_TIME1, t1) und ObjectSetInteger(0,nm,OBJPROP_TIME2, t2), aber im fünften Fall funktioniert eine solche Konstruktion nicht(

Vielen Dank im Voraus für die Antwort!

Vitaly, Sie können alles im prozeduralen Stil belassen, niemand zwingt Sie zur Verwendung von OOP. Die Standardbibliothek ist mir einfach klar, ich habe meine eigene Klasse daraus erstellt, ich habe einige Dinge ergänzt. Und ich habe alles mit OOP gemacht.

Ich werde in umgekehrter Reihenfolge antworten ))

1. Ich habe das Skript mit Grafiken neu erstellt, es gibt einige Unterschiede, aber nur sehr geringfügige. Grundsätzlich muss ich Fenster und Unterfenster explizit angeben, was in 4. nicht nötig war.

2. Was die Eröffnung von Positionen angeht, so verfügt die CTrade-Klasse über fast direkte Analogien zu den MQL4-Funktionen

3. Ich denke, es wird nicht lange dauern.

Wenn Sie die Freiberuflichkeit meinen, können Sie sich sehr schnell daran gewöhnen. Grundsätzlich muss man sich daran gewöhnen, dass Aufträge, Trades und Positionen unterschiedliche Dinge sind, auch bei Hedges.

 
Anton Zverev:

Ich denke, es ist einfacher, den Code nicht zu portieren. Es ist einfacher, von Grund auf zu schreiben. Auf diese Weise wird sie von höherer Qualität sein.

Manchmal ist es sinnvoll, seinen Job, seine Frau und sein ganzes Leben zu kündigen und von vorne anzufangen. Ich habe das schon oft gemacht. Alles wird besser und von höherer Qualität.)
 
Alexey Volchanskiy:
Manchmal kann es sinnvoll sein, seinen Job, seine Frau, sein zufriedenes Leben zu kündigen und ganz von vorne anzufangen. Das habe ich schon so oft getan. Es wird immer besser )))
))
 
Ich werde jetzt angegriffen - ich kann es spüren. Sie sollten im OOP-Stil schreiben und Sie werden glücklich sein.
Und dann wird ein Umzug wie dieser ein Spaziergang sein.
Grund der Beschwerde: