Diskussion zum Artikel "Die Transaktionen des Handels Anfrage- und Antwortstrukturen, Beschreibung und Protokollierung"
Veröffentlichter Artikel Trade Transactions. Anfrage- und Antwortstrukturen, Beschreibung und Protokollausgabe:
Autor: Artyom Trishkin
Vielen Dank, Artyom, dass du alle notwendigen Informationen in einem Artikel zusammengefasst hast! Ich habe ihn zu meinen Favoriten hinzugefügt.
Mit freundlichen Grüßen, Vladimir.
Danke für den interessanten Artikel. Aber es ist schade, dass der Funktion OrderCheck() so wenig Aufmerksamkeit geschenkt wird.
Ich hoffe auf einen separaten Artikel, der dieser nützlichen Funktion gewidmet ist...
Danke für den interessanten Artikel. Aber es ist schade, dass der Funktion OrderCheck() sehr wenig Aufmerksamkeit geschenkt wird
Ich hoffe auf einen separaten Artikel, der dieser nützlichen Funktion gewidmet ist...
In einigen alten Versionen von MT5 habe ich festgestellt, dass OrderCheck() manchmal Aufträge ablehnte, die eigentlich recht erfolgreich ausgeführt wurden. Ich habe es aufgegeben und möchte diese Fehler nicht noch einmal in Kampfrobotern testen, auch wenn sie inzwischen behoben sein könnten.
Danke für den interessanten Artikel. Aber es ist schade, dass der Funktion OrderCheck() sehr wenig Aufmerksamkeit geschenkt wird
Ich hoffe auf einen separaten Artikel, der dieser nützlichen Funktion gewidmet ist...
Ich war gerade dabei, eine "erweiterte Hilfe" zu schreiben - eine Menge Referenzinformationen. Und alles über OrderCheck ist lakonisch und überschaubar. Und es gibt keine Ausschweifungen in ihm selbst. Ich habe beschrieben, was, was und wie die Felder ausgefüllt werden. Sie werden nicht in allen Fällen ausgefüllt. Die Antwort der Funktion mit dem Code ist fast immer "OK", denn ich bin es gewohnt, die Handelsanfrage korrekt auszufüllen. Wenn Sie die Situation über "fast" nehmen, ist es absichtlich eingegebene falsche Daten, um die Arbeit zu überprüfen. Das heißt, ich habe keine Ahnung, was ich da beschreiben soll, und das sogar für einen Artikel.
Ich war gerade dabei, eine "erweiterte Hilfe" zu schreiben - eine Menge Hintergrundinformationen. Aber alles über OrderCheck scheint prägnant und übersichtlich zu sein. Und es gibt keine Ausschweifungen in ihm selbst. Ich habe beschrieben, was, was und wie die Felder ausgefüllt werden. Sie werden nicht in allen Fällen ausgefüllt. Die Antwort der Funktion mit dem Code ist fast immer "OK", denn ich bin es gewohnt, die Handelsanfrage korrekt auszufüllen. Wenn Sie die Situation über "fast" nehmen, ist es absichtlich eingegebene falsche Daten, um die Arbeit zu überprüfen. Das heißt, ich habe keine Ahnung, was ich da beschreiben soll, und das sogar für einen Artikel.
Zumindest haben nur wenige Leute die Struktur von MqlTradeCheckResult sorgfältig gelesen
struct MqlTradeCheckResult { uint retcode; // Antwortcode double balance; // Saldo nach der Transaktion double equity; // Eigenkapital nach der Transaktion double profit; // Fließender Gewinn double margin; // Margenanforderungen double margin_free; // Freier Spielraum double margin_level; // Höhe der Marge string comment; // Kommentar zum Antwortcode (Fehlerbeschreibung) };
Und meistens sagen sie, dass diese Funktion ausschließlich dafür gedacht ist, wie es in der Dokumentation steht
Die Funktion OrderCheck() prüft, ob die Mittel für die gewünschte Handelsoperation ausreichen.
Aber es lohnt sich, auf die Felder der Struktur "Balance after ..." und "Equity after ..." zu achten. Ich spreche hier keineswegs von "Margin-Anforderungen". Diese Parameter sind sehr nützlich. Zum Beispiel, wenn nach dem Abschluss eines Geschäfts "vierzig Kopeken" Eigenkapital auf dem Konto übrig sind... Ist es notwendig, ein solches Geschäft abzuschließen, auch wenn genügend Geldmittel vorhanden sind und die anderen Parameter des Auftrags in Ordnung sind? Natürlich ist es möglich, diesen Wert durch eine andere Methode zu erhalten, aber meiner Meinung nach ist es viel günstiger, mehrere nützliche Parameter durch eine Funktion zu erhalten.
Und meiner Erfahrung nach behebt der Antwortcode bei erfolgreicher Prüfung falsche SL- und/oder TP-Preise. Und nicht nur diese. Hierüber würde ich gerne einen Artikel schreiben. Darüber, welche anderen Codes funktionieren...
Leider meldet OrderCheck() keinen Fehler.
| 10018 | TRADE_RETCODE_MARKET_CLOSED | Der Markt ist geschlossen. |
Vielleicht kümmern sich die Entwickler endlich um dieses Problem...
Wenigstens lesen nur wenige Leute die Struktur von MqlTradeCheckResult sorgfältig
Und meistens sagen sie, dass diese Funktion ausschließlich dafür gedacht ist, wie es in der Dokumentation steht
Aber es lohnt sich, auf die Felder der Struktur "Balance after ..." und "Equity after ..." zu achten. Ich spreche hier keineswegs von "Margin-Anforderungen". Diese Parameter sind sehr nützlich. Wenn zum Beispiel "vierzig Kopeken" an Eigenkapital auf dem Konto übrig sind, nachdem ein Geschäft abgeschlossen wurde... Ist es notwendig, ein solches Geschäft abzuschließen, auch wenn genügend Geldmittel vorhanden sind und die anderen Parameter des Auftrags in Ordnung sind? Natürlich ist es möglich, diesen Wert mit einer anderen Methode zu ermitteln, aber meiner Meinung nach ist es viel günstiger, mehrere nützliche Parameter mit einer Funktion zu ermitteln.
Und meiner Erfahrung nach behebt der Antwortcode bei erfolgreicher Prüfung falsche SL- und/oder TP-Preise. Und nicht nur diese. Hierüber würde ich gerne einen Artikel schreiben. Darüber, welche anderen Codes funktionieren...
Leider meldet OrderCheck() keinen Fehler
| 10018 | TRADE_RETCODE_MARKET_CLOSED | Markt geschlossen |
Vielleicht werden die Entwickler diesem Problem endlich Aufmerksamkeit schenken....
Ich verstehe nicht, von welchen SL und TP Sie sprechen? Sie sind nicht in den Bereichen der Struktur...
Und über das Eigenkapital, den Saldo nach der Transaktion ... Nun..., wissen Sie, ich wollte eigentlich sagen, dass es nützlich ist, das zu wissen, und dass diese Daten analysiert werden sollten, bevor ein Auftrag an den Server gesendet wird. Aber habe ich das nicht gesagt? Oder hätte ich klarstellen sollen, dass man keine Position eröffnen sollte, wenn man später nicht genug für einen Brötchengeber hat ... . Aber, sehen Sie, ich dachte, und ich denke, es ist klar. Deshalb habe ich ja auch geschrieben, dass man die ausgefüllten Felder dieser Struktur analysieren kann. Und über die Tatsache, dass "Markt geschlossen" nicht zurückgegeben wird, habe ich nicht geschrieben (obwohl ich es wollte, einfach weil ich es vergessen habe). Und ich dachte, dass dies Rückgabecodes des Handelsservers sind. Sie sind für alle Fälle des Lebens. Offensichtlich ist dieser Code nicht für diesen Fall. Er gibt normalerweise in OrderSend zurück. Obwohl ja, um zu überprüfen, ob der Markt geschlossen ist, müssen Sie eine Bestellung zu senden - eine schwache Lösung. Aber was gibt es.
Ich verstehe nicht, von welchem SL und TP Sie sprechen? Sie befinden sich nicht in den Strukturfeldern...
Ich spreche von den Codes
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Falsches Volumen in der Abfrage |
| 10015 | TRADE_RETCODE_UNGÜLTIGER_PREIS | Falscher Preis in der Abfrage |
| 10016 | TRADE_RETCODE_UNGÜLTIGE_STOPS | Falsche Stops in der Anfrage |
Diese Codes werden an die Struktur MqlTradeCheckResult zurückgegeben und perfekt ausgewertet.
Mit anderen Worten, wenn Sie nicht schreiben wollen, oder Rashid nicht willkommen ist, bestehe ich nicht darauf.
Ich spreche von den Codes
| 10014 | TRADE_RETCODE_INVALID_VOLUME | Falsches Volumen in der Anfrage |
| 10015 | TRADE_RETCODE_INVALID_PRICE | Falscher Preis in der Anfrage |
| 10016 | TRADE_RETCODE_UNGÜLTIGE_STOPS | Falsche Stops in der Anfrage |
Diese Codes werden an die Struktur MqlTradeCheckResult zurückgegeben und perfekt analysiert.
Mit anderen Worten: Wenn Sie nicht schreiben wollen, oder Rashid es nicht begrüßt, bestehe ich nicht darauf.
Nun, was können Sie hier schreiben, außer "Sie können Antwortcodes analysieren"? Nun, eine Person hat einen solchen Code erhalten - es ist klar, dass die Haltestellen falsch sind. Also muss er programmatisch bearbeitet werden, damit es keine falschen Haltestellen gibt. Die Analyse von Antwortcodes ist auch eine Analyse. Genauso wie Strukturfelder. Das heißt, es ist alles gesagt worden - analysieren und Schlüsse ziehen. Oder denken Sie, dass Sie jede Serverantwort beschreiben müssen und welche Aktionen in diesem Fall durchgeführt werden sollten? Nun, das ist in der Bibliothek implementiert, die ich noch nicht fertig geschrieben habe, aber dort wird schon seit langem gehandelt. Mit vollständiger Analyse und Anpassungen. Warum sich wiederholen?
Nun, was kann man hier schreiben, außer "Sie können die Antwortcodes analysieren".... Nun, eine Person hat einen solchen Code erhalten - es ist klar, dass die Haltestellen nicht korrekt sind. Es muss also programmatisch bearbeitet werden, damit es keine falschen Haltestellen gibt. Die Analyse von Antwortcodes ist auch eine Analyse. Genauso wie Strukturfelder. Das heißt, es ist alles gesagt worden - analysieren und Schlüsse ziehen. Oder denken Sie, dass Sie jede Serverantwort beschreiben müssen und welche Aktionen in diesem Fall durchgeführt werden sollten? Nun, das ist in der Bibliothek implementiert, die ich noch nicht fertig geschrieben habe, aber dort wird schon seit langem gehandelt. Mit vollständiger Analyse und Anpassungen. Warum sich wiederholen?
Um den Rückgabecode zu erhalten und zu analysieren, sollten Sie zumindest verstehen, was diese Funktion ist und ihren Nutzen verstehen. Das ist genau das, was ich meine. Der Artikel wird ein erweitertes Verständnis der Funktion vermitteln, nicht nur eine Beschreibung aus der Dokumentation.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Alexey Viktorov, 2023.08.03 13:40
Zumindest lesen nur wenige Leute die Struktur von MqlTradeCheckResult sorgfältig.
struct MqlTradeCheckResult { uint retcode; // Antwortcode double balance; // Saldo nach der Transaktion double equity; // Eigenkapital nach der Transaktion double profit; // Fließender Gewinn double margin; // Margenanforderungen double margin_free; // Freie Marge double margin_level; // Höhe der Marge string comment; // Kommentar zum Antwortcode (Fehlerbeschreibung) };
Und meistens sagen sie, dass diese Funktion ausschließlich dafür gedacht ist, wie es in der Dokumentation steht
Die Funktion OrderCheck() prüft, ob die Mittel für die gewünschteHandelsoperationausreichen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Alexey Viktorov, 2023.08.03 19:55
Wenn Sie nicht schreiben wollen, oder Rashid es nicht begrüßt, bestehe ich nicht darauf.
Ja, um zu prüfen, ob der Markt geschlossen ist, müssen Sie einen Auftrag senden - eine schwache Lösung. Aber es ist so.
Ist es immer noch eine so unmögliche Aufgabe für die Schöpfer der MQL5-Programmiersprache - die MarketClosed-Funktion ohne Tamburintanz?
Mit freundlichen Grüßen, Vladimir.
- 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 Die Transaktionen des Handels Anfrage- und Antwortstrukturen, Beschreibung und Protokollierung :
Der Artikel befasst sich mit der Struktur von Handelsanfragen, d. h. mit der Erstellung einer Anfrage, ihrer vorläufigen Überprüfung vor der Übermittlung an den Server, der Antwort des Servers auf eine Handelsanfrage und der Struktur von Handelsgeschäften. Wir werden einfache und bequeme Funktionen zum Senden von Handelsaufträgen an den Server erstellen und auf der Grundlage der besprochenen Informationen einen EA erstellen, der über Handelsgeschäfte informiert.
MQL5 verfügt über die Funktion OrderSend() zum Platzieren von schwebenden Aufträgen, zum Öffnen von Positionen sowie zum Ändern von Aufträgen und Positionen. Die erste Eingabe der Funktion ist die Struktur der Handelsanfrage MqlTradeRequest. Das Feld "Aktion" der Struktur gibt die Art der auszuführenden Aktion an, und die übrigen Felder werden in Abhängigkeit von der im Feld "Aktion" ausgewählten Aktion ausgefüllt. Wir senden also verschiedene Anfragen an den Server, indem wir die für eine Handelsanfrage erforderlichen Parameter an die Funktion übergeben.
Autor: Artyom Trishkin