Fragen von Anfängern MQL5 MT5 MetaTrader 5 - Seite 854
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
Ich bin fiddling mit CTrade::PositionClose(const ulong ticket,const ulong Abweichung=ULONG_MAX) und erkennen, dass es nicht genau innen organisiert ist. Es geht um 2 Rückgabecodes - bool und ResultRetcode(). RetCode wird intern nicht immer auf Null gesetzt, bevor es false zurückgibt. Wenn also PositionClose false ergibt, kann RetCode durchaus TRADE_RETCODE_DONE zurückgeben. Es wäre schön, wenn die Entwickler diese 2 Rückgabewerte synchronisieren könnten.
Code + Beispiel + Protokolle.
COrderInfo::OrderType() gibt immer 0 zurück.
Um dies zu überprüfen, können Sie manuell eine beliebige schwebende Order platzieren (BuyStop, SellStop, ...),
und geben Sie sie dann in das Skript ein.
Vielleicht etwas mit der virtuellen Funktionstabelle? Bei der Fehlersuche komme ich nur zu virtual int CObject::Type()
PS. Ich habe es bereits selbst herausgefunden. COrderInfo hat 2 ähnliche Methoden: Type() und OrderType().
Code + Beispiel + Protokolle.
Sie sehen, welche Situation ich meine.
Ich sehe keine SetResultRetcode- und SetResultComment-Methoden in CTrade, um sie vor jeder neuen Operation zurückzusetzen.
Ich muss meine Klasse erben, wo ich eine einzige Methode hinzufüge
Sie sehen, welche Situation ich meine.
Ich sehe keine SetResultRetcode- und SetResultComment-Methoden in CTrade, um sie vor jeder neuen Operation zurückzusetzen.
Und wozu? Völlig unnötige Funktionen.
Erstens: Sie schießen in die Luft - Sie senden einen Handelsauftrag, ohne vorher zu prüfen - ohne zu prüfen, was die Operation zurückgegeben. Sehen Sie sich die Referenz an:PositionClose ist vom Typ bool.
Zweitens betrachten wir die Kette der Positionsschließung: Wenn die Position nicht gefunden wird (sie kann nicht mit dem angegebenen Ticket ausgewählt werden), wird "false" zurückgegeben.
Dabei werden die Strukturen nirgends gelöscht - weil es keinen Sinn macht - schließlich konnte die Position vorher nicht ausgewählt werden, also sind auch keine Informationen in den Strukturen vorhanden.
Was soll das bringen? Völlig unnötige Funktionen.
Erstens: Sie schießen in die Luft - Sie senden einen Handelsauftrag, ohne vorher zu prüfen - ohne zu prüfen, was die Operation zurückgegeben. Schauen wir uns die Referenz an:PositionClose ist vom Typ bool.
Zweitens betrachten wir die Kette der Positionsschließung: Wenn die Position nicht gefunden wird (sie kann nicht mit dem angegebenen Ticket ausgewählt werden), wird "false" zurückgegeben.
Gleichzeitig werden die Strukturen nirgendwo gelöscht, da dies keinen Sinn macht - schließlich konnte die Position vorher nicht ausgewählt werden, daher gibt es keine Informationen in den Strukturen.
1) Wir können ebenso gut sagen, dass ResetLastError() eine absolut unnötige Funktion ist.
2) Es gibt eine Prüfung für das zurückgegebene Ergebnis. Stellen Sie sich analog dazu vor, Sie rufen eine WinAPI-Funktion auf, die einen Fehler zurückgibt, und GetLastError() (analog zu ResultRetcode) gibt einen beliebigen letzten Code zurück.
Wenn ich eine Prüfung vor dem Aufruf von PositionClose hinzufüge (was ich tun werde), überschreibt sie keine anderen Prüfungen vor anderen Aufrufen, wenn sich der RetCode nicht ändert.
Mein Expert Advisor schreibt Informationen in das Protokoll. Alles, was ich brauche, ist in log sane ResultRetcode und ResultComment zu schreiben, wenn einige Aufruf falsch zurückgegeben.
1) Man könnte ebenso gut sagen, dass ResetLastError() völlig unnötig ist.
2) Es gibt eine Prüfung für das Rückgabeergebnis. Stellen Sie sich analog dazu vor, Sie rufen eine WinAPI-Funktion auf, die einen Fehler zurückgibt, und GetLastError() (analog zu ResultRetcode) gibt einen beliebigen letzten Code zurück.
Wenn ich vor dem Aufruf von PositionClose eine Prüfung hinzufüge (was ich tun werde), werden keine anderen Prüfungen vor anderen Aufrufen außer Kraft gesetzt, wenn sich der RetCode nicht ändert.
Mein Expert Advisor schreibt Informationen in das Protokoll. Alles, was ich tun muss, ist sane ResultRetcode und ResultComment in das Protokoll zu schreiben, wenn einige Aufruf falsch zurückgegeben.
Lesen Sie in der Hilfe der Klasse CTrade nach, wenn Sie dasErgebnis der Ausführung einer Handelsanfrage (Rückgabecode des Handelsservers) durch Aufruf der MethodeResultRetcode()überprüfen müssen.
Lesen Sie in der Hilfe der Klasse CTrade, wanndas Ergebnis der Ausführung der Handelsanfrage (Rückgabecode des Handelsservers) durch den Aufruf der MethodeResultRetcode()überprüft werden soll.
Das können Sie behaupten.
1) Wenn PositionClose false zurückgibt, wird der Retcode nie gefüllt?
2) Wenn PositionClose true zurückgibt, dann wird der Retcode immer gefüllt?
Auftrag -> Handel -> Position. Nehmen Sie den Eröffnungskurs der Position.
Können Sie ein Bild davon zeigen, wie dieser Auftrag -> Handel -> Position, es ist unter, wo die Geschäfte geschrieben werden, so dass es nicht zulassen, Kopieren gibt
Können Sie ein Bild davon zeigen, wie diese Order -> Trade -> Position, es ist am unteren Rand, wo Trades geschrieben werden, so dass es nicht lassen Sie kopieren.
Bitte schreiben Sie entweder Ihre Frage um oder setzen Sie Satzzeichen, oder besser noch fügen Sie ein Bild hinzu, was, wo und wer. Andernfalls stellt sich heraus, dass ich vertraute Buchstaben sehe, aber die Bedeutung und Ihren Standpunkt nicht verstehen kann.