Sie verpassen Handelsmöglichkeiten:
- Freie Handelsapplikationen
- Über 8.000 Signale zum Kopieren
- Wirtschaftsnachrichten für die Lage an den Finanzmärkte
Registrierung
Einloggen
Sie stimmen der Website-Richtlinie und den Nutzungsbedingungen zu.
Wenn Sie kein Benutzerkonto haben, registrieren Sie sich
Sergej!
So lauten die Rückgabecodes des Handelsservers für solche Situationen.
Beispiel: Sie haben die Verfügbarkeit von freien Mitteln geprüft und ein positives Ergebnis erhalten.
Sie senden eine Order, aber sie wurde nicht angenommen (wie Sie sagten: "Was kann passieren"),
Der Handelsserver meldet Ihnen den Fehler "Unzureichende Mittel" im Rückgabecode.
Mikhail, denkst du wirklich, ich verstehe das nicht? :)
Ok, ich werde meinen Satz und den Gedanken des Artikels übersetzen: zuerst machen wir eine Vorabprüfung und dann prüfen wir das Ergebnis. Ich halte mich nicht mit dem Handel auf (dafür, ja, das sind die Rückgabecodes des Handelsservers), denn es könnte alles sein:
1) Zum Beispiel eine Datei: zuerst prüfen, ob eine solche Datei existiert, wenn nicht, dann Daten erstellen und in sie schreiben. Anschließend prüfen, was das Ergebnis ist.
2) Zum Beispiel ein grafisches Objekt: Prüfen Sie zunächst, ob ein solches Objekt existiert. Wenn nicht, wurde es erstellt, andernfalls wurde es verschoben (wenn sich die Koordinaten geändert haben). Dann prüfen wir, was wir bekommen haben.
usw. Fast alles, was von etwas anderem abhängt und fehlschlagen kann.
Also, lassen Sie uns noch definieren/zusammenfassen. Ihre Hauptbeschwerde ist, dass die Codes der Fehlermeldungen des Handelsservers und die möglichen Reaktionen des Programms darauf nicht berücksichtigt werden?
Zum ersten Punkt - all das steht in der Dokumentation.
Zum zweiten Punkt - es scheint mir, dass die möglichen Reaktionen offensichtlich werden, wenn Sie den Artikel lesen.
Aber wenn Sie anderer Meinung sind, ist die einfachste Lösung, einen ganzen Artikel darüber zu schreiben. Ich persönlich halte es nicht für so notwendig, selbst darüber zu schreiben. Wenn es für Sie so wichtig ist, dann tun Sie es bitte. Ich bin sicher, Sie werden es besser machen als ich, denn Sie haben ein klares Interesse daran.
P.S. Ich bin sicher, dass es bei MQL4/5 nicht nur um Expert Advisors geht. Offensichtlich geht es für Sie hauptsächlich um diese. Aber zum Beispiel habe ich in den letzten zwei Monaten doppelt so viele Indikatoren wie EAs erstellt. Alles ist also sehr subjektiv.
Sergej!
Ich habe keine Beschwerden über Ihren Artikel.
Hallo!
vielen Dank für Ihren Artikel!
Darf ich Ihre CLogger-Klasse in meinen eigenen Projekten verwenden?
BTW: Zu welcher Art von Lizenz gehören die Artikel/der Quellcode von mql5.com?
Mit freundlichen Grüßen,
Alex
Ich benutze MT5.
Wenn ich Ihr Beispiel im Backtest verwendet habe, wird das "mylog" in den Ordner C:\Programme\MetaTrader 5 Terminal\Tester\Agent-127.0.0.1-3000\MQL5\Files geschrieben.
Um die Sache zu vereinfachen, dachte ich, ich lege sie in einem persönlichen Ordner ab: "C:\MT5Personal\\Logs\\mylog", zum Beispiel.
Ich erhalte jedoch immer die Fehlermeldung 5002, und die Größe des Namens überschreitet nicht 255 Byte.
Was könnte falsch sein?
Ich danke Ihnen.
Zur Effizienz des Loggers... Die Java-Sprache hat auch zuerst einen Logger gemacht, und musste dann lange leiden.
In Java wurde dieses Problem durch die Verwendung von var args gelöst, die in MQL4/5 nicht verfügbar sind. Was ist das Problem? - Zuerst rufen wir error.toString() auf, dann verketten wir alle Strings in `CLogger::log(string1 + string2 + string3...); ` und erst am Ende prüfen wir, ob der erhaltene String gedruckt werden soll.
Was würde ich stattdessen vorschlagen? - Nichts Neues, was eigentlich ein Standard in demselben Java geworden ist:
`if(CLogger::isLevel(LOG_LEVEL_INFO))
CLogger::log(string1 + string2 + string3);`
Natürlich braucht man in diesem Fall verschiedene Logger für die Protokollierung in eine Datei, printf und andere.
Es ist alles in einer einzigen Datei gespeichert. Was ist, wenn Sie zwei brauchen? Was ist, wenn etwas nur gedruckt und etwas in eine Datei geschrieben werden muss? Keine Flexibilität. Es ist notwendig, einen Aufruf nicht über defyne zu machen, sondern über die Erstellung eines Objekts.
Oder ich möchte zum Beispiel drucken und in eine Datei schreiben. Oder ich möchte einen Push senden und gleichzeitig eine E-Mail verschicken.
Ein wahrer Schatz! Vielen Dank für Ihren Beitrag!
Prost, Zarik