Diskussion zum Artikel "Übersetzung von MQL4 in MQL5" - Seite 2

 
Interessanter Artikel, vielen Dank.
 
Quantum:

Es können Fehler gemacht werden, das Material ist recht umfangreich.

Das Thema der Portierung (genauer gesagt, das Thema des Schreibens einer Emulatorklasse mit MQL4-Methoden) wurde in einem anderen Artikel aufgegriffen (wir hoffen, dass er fertiggestellt wird). Im Laufe der Lektüre des Materials haben wir den Autor gebeten, einen Artikel in Form eines Nachschlagewerks zu schreiben, um alle MQL4-Funktionen (mit Ausnahme des Handels - Sie werden bald eine der Lösungen dafür sehen) abzudecken, für jede von ihnen ein Analogon in MQL5 bereitzustellen, im Allgemeinen alles zusammenzufassen, damit diejenigen, die MQL4-Programme neu schreiben, schnell ein Analogon finden können. Was den unbändigen Wunsch angeht, wenn wir über die Anzahl der betrachteten Abschnitte sprechen - wir haben darauf bestanden, alle Funktionen abzudecken (es waren mehr als 250).

Was den Vergleich der Funktionen in einigen Abschnitten betrifft, so handelte es sich nicht wirklich um einen Vergleich. Es war notwendig, ein Analogon anzugeben, auch wenn es dasselbe ist. Für alle Funktionen. Es sieht also so aus, als ob es einen Vergleich gibt, aber man kann aus dem Vergleich erkennen, dass z. B. die mathematischen Funktionen gleich sind. Übrigens wäre es wahrscheinlich sinnvoll, dies am Anfang eines jeden Abschnitts zu erwähnen, worauf man achten sollte.

Aus diesem Grund (Architektur der Emulatorfunktionen) hatte der Autor einige nicht offensichtliche Dinge in der Implementierung (z.B. für iLowest/iHighest globale Open[]...High[]..., die vorher global deklariert und in OnInit zu AsSeries gemacht wurden), die wie im Emulator impliziert wurden, natürlich ist es für die Universalität in Funktionen besser, lokale Arrays zu verwenden.

Was die Arbeit mit technischen Indikatoren angeht, kann es viele Fragen geben, die Arbeit mit ihnen sollte nicht wie in MQL4 sein - es ist besser, sie manuell in OnInit zu erstellen und auf Deskriptoren zu verweisen, anstatt sie jedes Mal in lokalen Funktionen zu erstellen. Aber der vom Autor vorgeschlagene Ansatz funktioniert auch, weil das Terminal die Indikatoren nicht sofort zerstört. Es gibt also eine Reihe von Feinheiten.

Das Wichtigste ist, dass es jetzt etwas zu diskutieren gibt, wenn Sie Fehler finden (auch solche, die durch die vorgeschlagene Struktur der Funktionen verursacht werden) - bieten Sie Ihre Varianten an.

Wenn dies ein Nachschlagewerk ist, dann soll es ein Nachschlagewerk sein!!!

oder es ist nicht Fisch und Fleisch


warum globale Arrays für Zwischenberechnungen verwendet werden!

Es ist möglich, Platz für solche Berechnungen innerhalb einer Funktion zuzuweisen. warum eine Referenz?

in einigen funktionen sind sie modifiziert ihre atas.

das gleiche yahigest wieder!!! modifizieren der globalen Puffer innerhalb einer Funktion ist atas!

Nun, obwohl es bereits behoben wurde, während ich schrieb, aber ich bin sicher, dass dieser Stil wird im gesamten Artikel verfolgt werden.

Wenn das mcl4 Preiskonstrukt auf diese Arrays zugreift, wird es..... finden.


Als nächstes haben wir 6 Abschnitte mit Vergleichen!

mcl4-Funktionen zu mcl4

nur Vergleiche.


Dann beginnt es aus heiterem Himmel

Funktionsersatztabelle.

2 Abschnitte


dann wieder ein Vergleich

3 Abschnitte


dann die Ersetzungen

Funktionen!

und dann wieder....

In der Tabelle gibt es zuerst die µl4-Funktion und dann 2 Arten von Zellen.

die ein Substitut enthält, das in mcl5 umgeschrieben wurde.

oder, 2 Arten von Zellen, nur eine identische Funktion.

und das zieht sich durch den ganzen Artikel... also ist das eine Übertragung auf µl4 oder ein Nachschlagewerk.

lassen sie eine sache in ruhe!


Es gibt auch viele Fehler, die zu einem nicht funktionierenden Zustand führen werden.

denn ich habe schon viel über die Eigenheiten der Speicherung von Daten in µl5-Arrays gelernt.

und in vielen Funktionen wird es notwendig sein, ich würde sogar sagen, es ist notwendig, die Größe des Arrays zu bestimmen,

einige von ihnen müssen die Richtung der Indizierung bestimmen.

wegen des Unterschieds der Datenverarbeitung in der mcl4- und mcl5-Umgebung.

weil ich schon spüre, dass es kompilieren wird, aber es wird nicht starten.


Natürlich wäre ein solcher Leitfaden, von dem Sie sprechen, sehr nützlich.

Es gibt einige interessante Punkte in dem Artikel

aber es ist weder Fisch noch Fleisch.


Lassen Sie ersatzlos nur eine Funktion und ihr Analogon auf mql5.

dies wird für eine komplette Neuschreibung des mql4-Indikators auf mql5 nützlich sein.

mit allen Verweisen auf die Dokumentation!

zur Hölle mit diesen kruden Ersatzfunktionen.


natürlich entschuldige ich mich für diese harsche kritik, aber einen so rohen artikel zu veröffentlichen, wenn er am meisten erwartet wird.

mit solch kritischen Fehlern.

was soll man daraus lernen....

eindeutig Ketzerei...


Und zu guter Letzt, warum gibt es keine Anhänge???

Wenn so viele Funktionen verschoben worden sind, warum gibt es dann keine .mqh-Datei?

in der alle Funktionen gesammelt werden... insbesondere 250 von ihnen... 1 zu 1 kopieren, um mqh4 zu übertragen ....

deutet wieder darauf hin, dass der Autor absichtlich versucht, etwas zu verbergen.


Mit freundlichen Grüßen Vasily.

 
CoreWinTT:
...

denn ich kann schon riechen, dass es kompiliert, aber es startet nicht.

...

Eine Funktion zu schreiben, die sich fehlerfrei kompilieren lässt, bedeutet noch lange nicht, dass man sie gefahrlos in seinen Code einbauen kann. Das größte Problem besteht darin, die Programmlogik zu übersetzen. Das ist wie beim Übersetzen von Gedichten: Man hat sie wortwörtlich übersetzt, aber sie reimen sich nicht. Deshalb reicht es auch nicht aus, nur Funktionen zu übersetzen. Die Aufgabe, von einer Sprache in eine andere zu konvertieren, ist nicht so einfach, wie es vielleicht scheint.

Ich sehe eine Lösung in Form eines Emulators mit einem einfachen und klaren Mechanismus zur Übertragung von Indikatoren, Skripten und Expert Advisors auf MQL5. Daran arbeite ich derzeit.

 
jep cool emule wird sein =)
 
CoreWinTT:

Wenn es ein Reiseführer ist, soll es ein Reiseführer sein!!!

Es ist kein Fisch und Chips.

....

Vasily, danke für Ihre konstruktive Kritik, ich hoffe, der Autor wird die Wünsche berücksichtigen und Varianten von autarken Funktionen ohne die Verwendung von globalen Arrays bereitstellen.

Der Artikel war als Referenz gedacht - um Entsprechungen zwischen MQL4- und MQL5-Funktionen zu liefern.

Dies ist wahrscheinlich der Grund für den Eindruck, dass der Autor versucht, etwas zu verbergen: minimale Erklärungen, viele Tabellen, keine vollständigen Anwendungsbeispiele. Aber das ist eine Besonderheit des Genres.

Es gibt viele Feinheiten bei der Arbeit mit Funktionen, die Details sollten im Detail und mit Beispielen betrachtet werden, aber das sind die Themen anderer Artikel - wir hoffen, dass sie erscheinen werden. Das Thema der Migration von MQL4 ist mit diesem Artikel noch lange nicht erschöpft, eine Menge interessanter Materialien sind in Vorbereitung und werden bald veröffentlicht werden.
.

 
DC2008:

Das ist folgendermaßen zu verstehen: Die Implementierung ist zu kompliziert und nicht gerechtfertigt. Schließlich ist das Ziel, die MQL4-Funktionen vollständig aufzugeben.

Das ist richtig. Es geht darum, zu erläutern, welche (anderen) Werkzeuge nun aufgrund welcher Änderungen in der Systemarchitektur verwendet werden sollten. Da dieses Material als Nachschlagewerk gegeben wird, ist es wichtig, alle Zellen darin mit "Lösungen" zu füllen. Wenn es kein Analogon gibt, dann gibt es einen anderen Ansatz.
 
marketeer:
Ganz genau. Es geht darum, zu erklären, welche (anderen) Mittel jetzt aufgrund welcher Änderungen in der Systemarchitektur verwendet werden sollten. Da dieses Material in Form eines Nachschlagewerks gegeben wird, ist es wichtig, alle Zellen darin mit einer "Lösung" zu füllen. Wenn es kein Analogon gibt, dann gibt es einen anderen Ansatz.

Es ist schwierig, ein Buch über jeden Indikator zu lesen.

Nicht einmal ich kann mich damit rühmen.

 
marketeer:
... ist es wichtig, alle Felder mit "Lösung" zu füllen. Kein Analogon bedeutet, dass es einen anderen Ansatz gibt.

Abschnitt 17 wird mit einem Verweis auf die "Lösung" hinzugefügt.

Schlagen Sie vor, welche Merkmale "ohne Analoga" zuerst zu beachten sind, denn nicht alle sind so relevant und notwendig. Ich werde versuchen, Änderungen vorzunehmen.

 

17 ist gut. Was die erste Runde angeht - das kann ich nicht beurteilen. Jeder, der mql4 in mql5 umwandeln wird, hat seine eigene Warteschlange. Um nichts zu verpassen, würde ich einfach die Reihenfolge von oben nach unten ausfüllen, beginnend mit AccountFreeMarginCheck, AccountFreeMarginMode, ArrayCopyRates, ArrayDimension usw. (es gibt nur noch 9 davon).

[Gelöscht]  
Quantum:

Lieber Vasily!

Vielen Dank für Ihren Kommentar, die Funktionen von Abschnitt 18 wurden aktualisiert. Bitte prüfen Sie die aktuelle Version.

Der Autor hat viel Arbeit geleistet, es kann Fehler geben, wir werden sie gemeinsam beheben.

Die Funktion TFMigrate(int tf) wird benötigt, um korrekte Werte von MQL5-Zeitrahmen zu ersetzen. Zum Beispiel ist in MQL4 der numerische Wert der Konstante PERIOD_H1 60, und in MQL5 ist der numerische Wert von PERIOD_H1=16385, d.h. TFMigrate(60)=16385.

Meiner Meinung nach sind zwei Funktionen notwendig, um mit TF unter Migrationsbedingungen zu arbeiten:

1. Konvertiert die Anzahl der Sekunden in TF - sagen wir ENUM_TIMEFRAMES SecondToPeriod (int Value);

2. Konvertiert den Zeitraum in Sekunden - sagen wir int PeriodToSecond(ENUM_TIMEFRAMES Value).


Das habe ich in meinem Migrationsmodul gleich zu Beginn erfolgreich getan (es gibt auch eine DLL-Option).


PS

Um die Konformität mit MQL4 zu maximieren, habe ich persönlich alle nicht standardmäßigen Perioden abgeschafft