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
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Merkmale der Sprache mql5, Feinheiten und Techniken der Arbeit
fxsaber, 2018.02.19 08:39 AM
Auf dem Netting können zur gleichen Zeit auf dem gleichen Symbol eine offene Position und mehrere Marktaufträge einer beliebigen Richtung sein. Zum Beispiel, eine BUY-Position und eine BUY-Order.
In der MT5-Bibliothek sind MT5-Orders und MT5-Positionen eine Einheit - MT4-Orders. Aus diesem Grund ist es in dieser Situation möglich, mehrere BUY/SELL-MT4-Aufträge für ein Symbol auf einem Netting-Konto zu erhalten. Dies ist kein Fehler und kann zu nichts Schlimmem führen. Aber ich schreibe darüber, falls jemand von dieser Situation überrascht ist.
Es stimmt, ich habe es nicht geschafft, ein solches Demokonto zu finden.
Dies ist eher eine theoretische Warnung. In der Praxis habe ich es nicht angetroffen.
Unten ist der Code, der ohne Warnungen unter MQL4/5 kompiliert
Vielen Dank an @Andrey Voytenko für den Vorschlag dieser Lösung!
Nachfolgend ist der Code, der ohne Warnungen unter MQL4/5 kompiliert
Vielen Dank an @Andrey Voytenko für den Vorschlag zu dieser Lösung!
Wofür ist dieser Hack?
Wozu ist dieser Hack gut?
Lange Typen sind im Beispiel auskommentiert. Wenn sie auskommentiert werden, gibt es keine Warnungen in MQL5 und NoStrict-MQL4. Aber in strict-MQL4 werden sie auftreten.
Um plattformübergreifende Bibliotheken ohne entsprechende Warnungen schreiben zu können, wurde diese Funktionalität hinzugefügt.
Sie brauchen sie nicht zu verwenden. Dies ist eine zusätzliche Erleichterung für diejenigen, die mit einer plattformübergreifenden Aufgabe dieser Art konfrontiert werden könnten.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Roboter von MT4 auf MT5
fxsaber, 2018.03.08 09:27 Uhr.
Ich versuche, eine Strategie zu implementieren (die offensichtlich gut in MT4 funktioniert), aber ich habe eine Ziegelmauer getroffen.
Der EA beginnt eine neue Sequenz von Trades, wann immer ein neues Signal generiert wird, so dass jedes gehandelte Paar in der Regel mehrere Sequenzen laufen haben wird.
Jeder Handel hat einen SL & TP, und der EA muss verfolgen, was passiert ist (SL oder TP), um den letzten Handel in jeder Sequenz durch die Überprüfung der Reihenfolge Geschichte.
Leider scheint dies nicht möglich zu sein, basierend auf den Bibliotheksnotizen (unten) und verschiedenen Versuchen, das System zum Laufen zu bringen:
// In MT4 wählt OrderSelect im Modus SELECT_BY_TICKET ein Ticket unabhängig von MODE_TRADES / MODE_HISTORY,
// da "Ticket number is a unique order ID".
// In MT5 ist die Ticketnummer NICHT eindeutig,
// daher hat OrderSelect im Modus SELECT_BY_TICKET die folgenden Auswahlprioritäten für übereinstimmende Tickets:
// MODE_TRADES: bestehende Position> bestehende Order> Transaktion> stornierte Order
// MODE_HISTORY: Transaktion> stornierte Order> bestehende Position> bestehende Order
Bei Experimenten habe ich festgestellt, dass sich die Ticketnummer nach einem SL/TP-Ereignis immer ändert und dass die einzige gemeinsame Information die magische Nummer ist - nicht einmal der Auftragskommentar wird beibehalten.
Beim Testen wird bei der Erteilung eines ersten Auftrags mit SL, TP, magischer Zahl und Handelskommentar das Ticket Nr. 2 zurückgegeben und alle erwarteten Informationen angezeigt.
Wenn jedoch der SL oder TP erreicht wird, verschwindet Ticket Nr. 2 und kann weder mit SELECT_BY_POS noch mit SELECT_BY_TICKET abgerufen werden.
Stattdessen gibt es (unter der Annahme, dass keine anderen Handelsaktivitäten stattfinden) jetzt Ticket Nr. 3, das keinen Auftragskommentar enthält.
Ohne Konsistenz in Bezug auf die Ticketnummer und ohne Auftragskommentar, auf den man sich beziehen kann, scheint es keine einfache Möglichkeit zu geben, den letzten Auftrag in einer bestimmten Sequenz zu identifizieren :(
Hoffentlich kann @fxsaber eine Lösung finden oder eine Umgehung vorschlagen :)
Leider habe ich das Problem nicht verstanden.
Entschuldigung für die späte Antwort :(
Das Problem ist, dass 'MODE_HISTORY' Handelsinformationen im Grunde unbrauchbar sind, weil:
1) wenn ein Handel geschlossen wird, ändert sich die Ticketnummer ... Sie können dies leicht testen, indem Sie einen Kauf-/Verkaufshandel mit einem TP und SL eröffnen - wenn der Handel als Ticket #2 eröffnet wird, wird dieser Handel zu Ticket #3 im History-Pool, nachdem der SL oder TP ausgelöst wurde
2) die magische Zahl geht verloren
3) der Ticket-Kommentar geht verloren
Wenn der EA-Code also prüfen muss, ob ein Handel mit Gewinn oder Verlust abgeschlossen wurde, ist dies unmöglich, da keine Informationen zur Identifizierung des Handels verfügbar sind.
Ich hoffe, dass Sie die magische Zahl beibehalten und den Handelskommentar wie bei MT4 gestalten können - vielleicht finden Sie auch einen Weg, die Ticketnummer beizubehalten.
Entschuldigung für die späte Antwort :(
Das Problem ist, dass die "MODE_HISTORY" Handelsinformationen im Grunde unbrauchbar sind, weil:
1) wenn ein Handel geschlossen wird, ändert sich die Ticketnummer ... Sie können dies leicht testen, indem Sie einen Kauf-/Verkaufs-Handel mit einem TP und SL eröffnen - wenn der Handel als Ticket #2 eröffnet wird, wird dieser Handel zu Ticket #3 im History-Pool, nachdem der SL oder TP ausgelöst wurde
2) die magische Zahl ist verloren
3) der Ticket-Kommentar geht verloren
Wenn der EA-Code also prüfen muss, ob ein Handel mit Gewinn oder Verlust abgeschlossen wurde, ist dies unmöglich, da keine Informationen zur Identifizierung des Handels verfügbar sind.
Ich hoffe, dass Sie die magische Zahl beibehalten und den Handelskommentar wie bei MT4 gestalten können - vielleicht finden Sie auch einen Weg, die Ticketnummer beizubehalten.
Beispiel
Ergebnis
Stop Loss geschlossen wurde!!!
PS Russischer Diskussionsfaden.