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 empfehle, dieses Design zu vermeiden
da die Verarbeitung des vorherigen Ticks so viel Zeit in Anspruch nehmen kann, dass das Eintreffen des ersten Ticks des neuen Balkens verpasst wird.
Entsprechend ist es möglich, die Eröffnung zu verpassen.
Es ist besser, sich an den Zeitpunkt der Balkeneröffnung zu binden, aber dazu müssen Sie z.B. den vorherigen Zeitpunkt des Nullbalkens speichern, um ihn mit dem aktuellen Zeitpunkt des Nullbalkens zu vergleichen.
Wenn sie gleich ist, gibt es keinen neuen Balken.
Wenn sie unterschiedlich sind, wird zumindest ein neuer (nächster) Balken geöffnet, nach dem wir die gespeicherte Zeit des Nullbalkens mit der aktuellen Zeit des Nullbalkens initialisieren.
Diese Konstruktion ist zuverlässiger.
Behandeln Sie dies in einem zukünftigen Artikel:
Soweit ich weiß, unterstützt MT5 nur *1* (eine) serverseitige s/l- und t/p-Order *pro Instrument* (nicht pro Handel) und keine OCO-Orders (OCO-Orders können verwendet werden, um s/l- und t/p-Orders pro Handel zu simulieren, aber auch hier gibt es eine Race Condition). Solange die oben genannten Probleme nicht gelöst sind, würde ich nicht mehr als 100 $ für den Handel über MT5 einsetzen (vereinfachte Single-Order Single-Timeframe Single-Direction MA Cross EAs). Und ich bin nicht einmal sicher über die $100.
Ich empfehle, dieses Design zu vermeiden
da die Verarbeitung des vorherigen Ticks so viel Zeit in Anspruch nehmen kann, dass das Eintreffen des ersten Ticks des neuen Balkens verpasst wird.
Entsprechend ist es möglich, die Eröffnung zu verpassen.
Es ist besser, sich an den Zeitpunkt der Balkeneröffnung zu binden, aber dazu müssen Sie z.B. den vorherigen Zeitpunkt des Nullbalkens speichern, um ihn mit dem aktuellen Zeitpunkt des Nullbalkens zu vergleichen.
Wenn sie gleich ist, gibt es keinen neuen Balken.
Wenn sie unterschiedlich ist, wird zumindest ein neuer (nächster) Balken geöffnet, nach dem wir die gespeicherte Zeit des Nullbalkens mit der aktuellen Zeit des Nullbalkens initialisieren.
Diese Konstruktion ist zuverlässiger.
Ich habe es auf diese Weise gemacht:
Kompiliert, aber Debugger schlägt fehl.
Laden von C:\Programmdateien\MetaTrader 5\MQL5\Experts\Examples\eMyEA.ex5 fehlgeschlagen
Neuer Artikel Der Prototyp des Handelsroboters ist veröffentlicht:
Autor: Алексей Сергеев
Vielen Dank für den tollen Artikel! Ich bin ein Neuling, aber ich habe eine Frage über den Code.
In der Funktion void CExpertAdvisor::TrailingPosition(long dir,int TS), gibt es eine Zeile:
sl=NormalSL(dir,apr,apr,TS,StopLvl); // Stop Loss berechnen
Sollten wir apr sowohl für das zweite als auch für das dritte Argument beim Aufruf von NormalSL verwenden? Ich dachte, es sollte sein:
sl=NormalSL(dir,op,apr,TS,StopLvl);
da das zweite Argument der Geld-/Briefkurs für die "angegebene" Richtung (d.h. die Variable op) und nicht für die "umgekehrte" Richtung (d.h. die Variable apr) sein sollte.
Vielen Dank!
In der Funktion void CExpertAdvisor::TrailingPosition(long dir,int TS), gibt es eine Zeile:sl=NormalSL(dir,apr,apr,TS,StopLvl); // Stop Loss berechnen
Sollten wir apr sowohl für das zweite als auch für das dritte Argument beim Aufruf von NormalSL verwenden? Ich dachte, es sollte sein:
sl=NormalSL(dir,op,apr,TS,StopLvl);
Nein.
das zweite und dritte Argument muss apr sein.
denn die Berechnung von tral wird von dem Preis abgeleitet, zu dem die Position geschlossen wird. Die Funktion Bid für Buy und Ask für Sell ist korrekt.
da das zweite Argument der Geld-/Briefkurs für die "angegebene" Richtung (d. h. die Variable op) und nicht für die "umgekehrte" Richtung (d. h. die Variable apr) sein sollte.
nein.
das zweite und dritte Argument müssen apr. sein.
sein, da die Berechnung von tral von dem Preis abgeleitet wird, zu dem die Position geschlossen wird. Die Funktion Bid für Buy und Ask für Sell ist korrekt.
sollte aus der "umgekehrten" Richtung berechnet werden . In diesem Fall also apr.Danke für die schnelle Antwort! Ich dachte, ich müsste falsch liegen.
Kann ich auch in der Funktion fragen
warum wir eine "10" zwischen "dist" und "m_smbinf.TickValue()" im Rückgabewert haben? Ich vermute, "dist" ist der Stop-Loss (in Pips), und "m_smbinf.TickValue()" ist der US-Dollar-Wert pro Pip pro Lot für das Währungspaar. Ich bin mir also nicht sicher, warum wir eine weitere "10" dazwischen multiplizieren.
Vielen Dank!
Sehr nützlicher Artikel. Vielen Dank!