Diskussion zum Artikel "Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil XXIII): Handelsklassen - Verifikation der Parameter"
Nun, ich danke Ihnen. Für MQL4 ist dies wirklich ein Fundstück. Vielen Dank für Ihre harte Arbeit und die Zeit, die Sie zum Wohle der Gemeinschaft investiert haben.
Fangen wir schon mal an, Dokumentation zu schreiben.
Nun, ich danke Ihnen. Für MQL4 ist dies wirklich ein Fundstück. Vielen Dank für Ihre harte Arbeit und Zeit zum Wohle der Gemeinschaft verbracht.
Fangen wir schon mal an, die Dokumentation zu schreiben.
Ich bin neugierig - benutzt jemand diese Bibliotheken? Es sind wirklich riesige Codeblätter, und es wird mehr Zeit in Anspruch nehmen, sie zu verstehen, als MQL selbst zu studieren. Es ist sehr gut möglich, dass die Bibliothek nützlich zu verwenden ist. Aber meiner Meinung nach gibt es in mql5 weniger Operatoren als Methoden und Klassen in dieser riesigen Bibliothek.
Meiner Meinung nach sollte OOP den Code reduzieren und ihn lesbarer machen. Aber bei der Verwendung all dieser Bibliotheken habe ich keine Bequemlichkeit feststellen können. Nimmt man die Standardbibliothek, so wird dort zum Öffnen einer Position eine einfache Kontsrution verwendet: Obligated object of the type:
Ctrade tr;
tr.OpenBuy();
das war's schon!
Aber bei dieser Bibliothek ist nur OnInit mit einer Menge von Dingen vollgestopft. Es werden so viele globale Variablen verwendet. Es ist problematisch, etwas zu finden, um es gelinde auszudrücken.
Ich bin neugierig - benutzt jemand diese Bibliotheken? Es sind wirklich riesige Codeblätter, und es wird mehr Zeit in Anspruch nehmen, sie zu verstehen, als MQL selbst zu studieren. Es ist sehr gut möglich, dass die Bibliothek nützlich zu verwenden ist. Aber meiner Meinung nach gibt es in mql5 weniger Operatoren als Methoden und Klassen in dieser riesigen Bibliothek.
Meiner Meinung nach sollte OOP den Code reduzieren und ihn lesbarer machen. Aber bei der Verwendung all dieser Bibliotheken habe ich keine Bequemlichkeit feststellen können. Wenn man die Standardbibliothek nimmt, wird dort zum Öffnen einer Position eine einfache Contsruktion verwendet: Obligated object type:
Ctrade tr;
tr.OpenBuy();
Das war's schon!
Und bei dieser Bibliothek wird nur OnInit mit einer Menge Dinge vollgestopft. So viele globale Variablen werden auch verwendet. Es ist, gelinde gesagt, problematisch, etwas zu finden.
Doch, das tun sie.
Sie brauchen den Code der Bibliothek nicht zu analysieren. Die Artikel beschreiben den Erstellungsprozess und dienen als detailliertes Tutorial für alle Interessierten.
Jeder Artikel wird von einem Test-Ratgeber begleitet, der zeigt, wie man diese oder jene Funktionalität der Bibliothek verwendet. Wenn die Funktionalität nicht benötigt wird, muss sie nicht initialisiert werden.
Die Bibliothek ist noch nicht fertig - sie befindet sich erst in der Entwicklung. Es wird einfache und bequeme Funktionen für den Zugriff auf Daten und für das Öffnen einer Position geben. Übrigens, Sie haben das Öffnen einer Position mit Standardwerten beschrieben. Und Sie haben (absichtlich?) die Initialisierung des Handelsobjekts übersprungen.
Wenn es derzeit keine einfache Buy(), Sell()-Methode in der Bibliothek gibt, heißt das nicht, dass es in Zukunft keine geben wird. Es wird sie geben, und nicht nur sie.
Und jetzt zeigen Sie mir bitte zum Beispiel, wie Sie eine geschlossene Position in MQL4, die vorherige, mit magik 123 und nicht das aktuelle Symbol, leicht identifizieren können - ob sie geöffnet wurde, als eine Pending Order ausgelöst wurde. Und welche Art von Auftrag.
ob er geöffnet wurde, als der schwebende Auftrag ausgelöst wurde. Und welche Art von Auftrag.
MQL4 speichert die Historie von ausgelösten schwebenden Aufträgen nicht, Sie können nur in der Historie der Aufträge feststellen:
- wenn die geschlossene Order vom Typ OP_BUY oder OP_SELL war - das bedeutet, dass eine Market Order geschlossen wurde.
- wenn die geschlossene Order vom Typ OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT oder OP_SELLSTOP war - bedeutet dies, dass die schwebende Order gelöscht wurde.
Der Zeitpunkt der Schließung der Order entspricht dem Zeitpunkt der Schließung der Marktorder oder dem Zeitpunkt der Stornierung der schwebenden Order.
Der Zeitpunkt der Eröffnung der Pending Order entspricht dem Zeitpunkt der Platzierung der Pending Order, aber dieser Zeitpunkt wird im Moment der Auslösung der Pending Order durch den Zeitpunkt der Eröffnung der Market Order ersetzt.
Die Ticket- und Magick-Nummer der Order ändert sich während der gesamten Zeit nicht (außer im Falle einer Gegen- oder Teilschließung der Order - hier ist die Situation anders, aber der Magick ändert sich nicht).
D.h. die Tatsache, dass ein schwebender Auftrag ausgelöst wurde, ist in der Geschichte der MQL4-Aufträge nicht vorhanden, es gibt nur die Tatsache, dass ein schwebender Auftrag gelöscht wurde. Ich weiß nicht einmal mehr, wie notwendig diese Information ist, vielleicht kenne ich nicht alle Aufgaben, die damit verbunden sind.
Wie viel davon notwendige Informationen sind - ich weiß es nicht mehr, vielleicht sind die Aufgaben nicht alles, was ich weiß.
Schätzung des Slippage-Wertes. In MT5 gibt es OrderOpenPriceRequest und OrderClosePriceRequest für diesen Zweck.
MQL4 speichert nicht die Historie von ausgelösten schwebenden Aufträgen, Sie können nur in der Historie von Aufträgen definieren:
- wenn die geschlossene Order vom Typ OP_BUY oder OP_SELL war - das bedeutet, dass eine Marktorder geschlossen wurde
- wenn die geschlossene Order vom Typ OP_BUYLIMIT, OP_BUYSTOP, OP_SELLLIMIT oder OP_SELLSTOP war - bedeutet dies, dass die schwebende Order gelöscht wurde.
Der Zeitpunkt der Orderschließung entspricht dem Zeitpunkt der Schließung der Marktorder oder dem Zeitpunkt der Löschung der schwebenden Order.
Der Zeitpunkt der Eröffnung der Pending-Order entspricht dem Zeitpunkt der Platzierung der Pending-Order, aber dieser Zeitpunkt wird im Moment der Auslösung der Pending-Order durch den Zeitpunkt der Eröffnung der Marktorder ersetzt.
Die Ticket- und Magick-Nummer der Order ändert sich während der gesamten Zeit nicht (außer im Falle einer Gegen- oder Teilschließung der Order - hier liegt eine andere Situation vor, aber die Magick ändert sich nicht).
D.h. die Tatsache, dass ein schwebender Auftrag ausgelöst wurde, ist in der Geschichte der MQL4-Aufträge nicht vorhanden, es gibt nur die Tatsache, dass ein schwebender Auftrag gelöscht wurde. Ich weiß nicht einmal mehr, wie notwendig diese Information ist, vielleicht kenne ich nicht alle Aufgaben, die damit verbunden sind.
Also habe ich eine Person, die die Möglichkeiten der Bibliothek nicht versteht, gebeten, zu schreiben, wie er sie "leicht und einfach" erkennt.
Und die Bibliothek kann es. Und der Benutzer muss nicht einmal darüber nachdenken - er braucht nur zu fragen.
Es ist sofort klar - "Ich habe es nicht gelesen, aber ich verurteile es".
Schätzung des Slippage-Wertes. MT5 hat OrderOpenPriceRequest und OrderClosePriceRequest für diesen Zweck.
Ich habe sie noch nicht ausgewertet, weil ich an der Perfektionierung festhalte...umschreiben umschreiben - umschreiben ((((
aber imho sollten solche Dinge (Auswertung der Arbeit des Brokers) parallel zur Arbeit des Hauptexpert Advisors erfolgen und protokolliert werden, solche Daten haben im Tester keinen Sinn?
-------------------
Ich habe also eine Person, die die Möglichkeiten der Bibliothek nicht versteht, gebeten zu schreiben, wie er sie "leicht und einfach" erkennt.
Und die Bibliothek kann es. Und der Benutzer muss nicht einmal darüber nachdenken - er braucht nur zu fragen.
Es ist sofort klar - "Ich habe es nicht gelesen, aber ich verurteile es".
Bei den Materialien des Artikels blättere ich selektiv, die Menge der Informationen ist einfach zu groß, da ist es einfacher zu fragen:
Ist es möglich, den Zustand des TS in den Testbeispielen zu speichern? - Es geht mir nicht um das "Abholen" von Orders auf eigene Faust, sondern um die Möglichkeit, den Zustand des Expert Advisors im Falle eines Terminal Reload zu speichern.
solche Daten für einen Tester bedeutungslos sind?
Für einen Prüfer sind sie sehr sinnvoll. Man kann sich sehr täuschen, wenn man den Schlupf nicht einschätzt.
Diese Situation ist mir zum Beispiel sofort aufgefallen
Forum zum Thema Trading, automatisierte Handelssysteme und Testen von Handelsstrategien.
MetaTrader 5 Strategy Tester: Fehler, Bugs, Vorschläge zur Verbesserung seiner Arbeit
fxsaber, 2019.10.13 16:58
Bei benutzerdefinierten Aktiensymbolen werden Take-outs zum letzten Preis akzeptiert und zum Geld-/Briefkurs ausgeführt.
Ein Beispiel: Der Take für eine BUY-Position liegt bei 1,09801. Der Geld-/Briefkurs/letzte Tick = 1,09799/1,09802/1,09801. Sie wird ausgelöst, weil der letzte Kurs berührt wurde, aber sie wird zum Geldkurs ausgelöst, der schlechter ist als der letzte.
Es stellt sich heraus, dass die Takes die ganze Zeit mit negativem Slippage ausgelöst werden.
...
auf die Materialien des Artikels, blättere ich selektiv, das Volumen der Informationen, na ja, nur groß, so ist es einfacher zu fragen:
Sehen die Testbeispiele die Möglichkeit vor, den Zustand des TC zu speichern? - Es geht mir nicht um das "Abholen" von Orders auf eigene Faust, sondern um die Möglichkeit, den Zustand des Expert Advisors im Falle eines Terminal Reloads zu speichern.
Die Testbeispiele dienen nur der Überprüfung dessen, was in diesem Artikel beschrieben ist. Als Test der Funktionsfähigkeit.
Beispiele für die Verwendung der Funktionalität zusammen mit ihrer Beschreibung werden in separaten Artikeln nach der Fertigstellung der Hauptfunktionalität der Bibliothek und der Schaffung von Benutzerfunktionen für den schnellen Zugriff auf alle Funktionen der Bibliothek zu finden sein.
----------------------
Was ist mit "Expertenstatus" gemeint?

- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Neuer Artikel Bibliothek für ein leichtes und schnelles Entwickeln vom Programmen für den MetaTrader (Teil XXIII): Handelsklassen - Verifikation der Parameter :
In dem Artikel setzen wir die Entwicklung der Handelsklasse fort, indem wir die Kontrolle über fehlerhafte Parameterwerte von Handelsaufträgen und die Audiosignale von Handelsereignissen implementieren.
Kompilieren Sie den EA und starten Sie ihn im Tester, wobei Sie in den Parametern Lots auf 10, sowie StopLoss in Punkten und TakeProfit in Punkten auf jeweils 1 Punkt einstellen:
So versuchen wir, eine Position mit einer ungültigen Losgröße zu eröffnen, so dass die Mittel für die Eröffnung nicht ausreichen, und versuchen, den minimalen Stop-Order-Abstand zu verletzen, der durch den StopLevel-Parameter des Symbols geregelt wird:
Der EA zeigt zwei Fehler im Journal an — "Nicht genug Geld, um den Handel durchzuführen" und "StopLoss-Werte verletzen die Anforderungen der StopLevel-Parameter". Wir haben auch TakeProfit auf einen Punkt gesetzt. Warum zeigt der EA keine Informationen auch über diesen Fehler an? Eigentlich gibt es hier keinen Fehler, da Platzierung von TakeProfit und StopLoss Werten, die innerhalb des minimalen SYMBOL_TRADE_STOPS_LEVEL durchgeführt werden, nicht gegen die Regel verstößt:
TakeProfit- und StopLoss-Level sollten mit dem aktuellen Kurs verglichen werden, um die entgegengesetzte Operation durchzuführen.
Autor: Artyom Trishkin