Hallo! In der Beschreibung steht: "Dementsprechend kann OrderSelect im SELECT_BY_TICKET Modus in MT5 in seltenen Fällen (im Tester) nicht das auswählen, was in MT4 vorgesehen war. "Können Sie genauer erläutern, in welchen Fällen genau?
Wenn Position/Handel/Auftragstickets übereinstimmen.
Je besser ein MT4 Expert Advisor geschrieben ist, desto einfacher ist es, ihn in MT5 zu konvertieren. Und die Größe/Komplexität des ursprünglichen EAs spielt bei der Konvertierung keine Rolle.
Wenn die OnTradeTransaction ermöglicht es Ihnen, einen Nicht-Handels-Advisor (Service) zu schreiben, der das Vorhandensein eines Handels-"Klon"-Advisors verfolgt, der auf dem Konto läuft.
Wie Sie sehen, unterscheidet sich die Differenz zwischen Equity und Balance um die Höhe der Provision. Und es mag scheinen, dass der klassische MT4-Ausdruck
ProfitWithCommission += OrderProfit() + OrderSwap() + OrderCommission(); // Berechnen Sie den aktuellen Gewinn unter Berücksichtigung der Provision
in MT5 seine Bedeutung verliert. Aber das ist nicht der Fall. Wenn Sie nämlich eine Position schließen, ändert sich der Saldo um diesen Betrag, nicht um den, den das Eigenkapital vorher anzeigte. Grob gesagt, ist der Wert des Eigenkapitals im MT5 falsch, wenn man dieses Konzept im MT4 betrachtet.
Berücksichtigen Sie diese Besonderheit von MT5. Die Bibliothek ist in diesem Fall genauer. Und es wird einfach sein, den gleichen Break-Even zu berechnen.
offenen Position zu verlieren. Um dies zu tun, reicht es aus, einen Handel ohne Kommentar zum Positionssymbol zu machen.
Die Bibliothek wird den Kommentar in dem beschriebenen Fall nicht verlieren - OrderComment() wird den Kommentar erzeugen, der bei der Eröffnung der Position vorhanden war.
// Liste ändern:// 13.02.2018// Hinzufügen: MT5-OrderSend-Fehlerprotokollierung hinzugefügt.// Fix: Jetzt sind nur noch schließende MT5-Orders (SL/TP/SO, partial/full close) "unsichtbar".// Fix: Der Mechanismus zur Bestimmung von SL/TP von geschlossenen Positionen nach OrderClose wurde korrigiert - funktioniert, wenn StopLevel es erlaubt.
Eine Besonderheit des MT5-Betriebswird hier im Detail beschrieben. Die Bibliothek hat diese Situation lange Zeit korrekt verarbeitet. Aber sie hat geflucht (Alert), dass die Situation nicht standardisiert ist.
Jetzt wird sie nicht mehr fluchen.
// Liste ändern:// 15.02.2018// Fix: MT5-OrderSend-Synchronisationsprüfung berücksichtigt nun mögliche Besonderheiten der ECN/STP-Implementierung.
Als Test können Sie dieses Skript auf einem komplizierten Demokonto FXOpen-MT5 ausführen.
MT5 läuft überhaupt nicht gut. Ein Beispiel, das das Problem zeigt
// Beispiel für eine falsche Ablesung der Handelsumgebung bei jedem Tick// Das Skript emuliert zwei Ticks des TS, der eine Position öffnen soll, wenn es keine gibt.#include <Trade/Trade.mqh>
// Gibt die Anzahl der Positionen pro Zeichen zurückint GetAmountPositions( conststring Symb )
{
int Res = 0;
// Dieser MQL5-Code hat einen Fehlerfor (int i = PositionsTotal() - 1; i >= 0; i--)
if (PositionGetSymbol(i) == Symb)
Res++;
/*
// In MT4 wird dieser Code ohne Fehler ausgeführt
for (int i = OrdersTotal() - 1; i >= 0; i--)
if (OrderSelect(i, SELECT_BY_POS) && (OrderType() <= OP_SELL) && (OrderSymbol() == Symb))
Res++;
*/return(Res);
}
// Beispiel OnTickvoid ExampleOnTick()
{
static CTrade Trade;
// Wenn keine Position vorhanden ist, öffnenif (!GetAmountPositions(_Symbol))
Trade.Buy(1);
}
// Emulation der Ankunft von zwei Tick-EreignissenvoidOnStart()
{
ExampleOnTick();
Sleep(10); // Zwischen zwei Ticks ~10 ms.
ExampleOnTick();
}
Was denken Sie, wenn Sie dieses Skript auf ein Symbol ohne Positionen ausführen, was wird am Ende passieren?
Die richtige Antwort ist, dass eine oder zwei Positionen geöffnet werden.
Dieses Problem wird umgangen, wenn Sie zumindest teilweise im MQL4-Stil schreiben. Um dies sicherzustellen, reicht es aus, GetAmountPositions im MQL4-Stil zu schreiben (im Quellcode auskommentiert) und MQL5-Stil zu entfernen.
Hallo! In der Beschreibung steht: "Dementsprechend kann OrderSelect im SELECT_BY_TICKET Modus in MT5 in seltenen Fällen (im Tester) nicht das auswählen, was in MT4 vorgesehen war. "Können Sie genauer erläutern, in welchen Fällen genau?
Wenn Position/Handel/Auftragstickets übereinstimmen.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Expert Advisors: eaBreakeven
fxsaber, 2018.01.11 08:13 Uhr.
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Wie kann man das Volumen einer Pending Order ändern?
fxsaber, 2018.01.19 16:34
Forum über Trading, automatisierte Handelssysteme und das Testen von Handelsstrategien.
Expert Advisors: Three Point Arbitrage
fxsaber, 2018.01.20 09:58
Schließung einer Position sofort vom Saldo abgezogen.
MT4Orders hat immer noch eine Kommission für Positionen. Aus diesem Grund tritt die folgende Situation auf
Ergebnis
Wie Sie sehen, unterscheidet sich die Differenz zwischen Equity und Balance um die Höhe der Provision. Und es mag scheinen, dass der klassische MT4-Ausdruck
in MT5 seine Bedeutung verliert. Aber das ist nicht der Fall. Wenn Sie nämlich eine Position schließen, ändert sich der Saldo um diesen Betrag, nicht um den, den das Eigenkapital vorher anzeigte. Grob gesagt, ist der Wert des Eigenkapitals im MT5 falsch, wenn man dieses Konzept im MT4 betrachtet.
Berücksichtigen Sie diese Besonderheit von MT5. Die Bibliothek ist in diesem Fall genauer. Und es wird einfach sein, den gleichen Break-Even zu berechnen.
offenen Position zu verlieren. Um dies zu tun, reicht es aus, einen Handel ohne Kommentar zum Positionssymbol zu machen.
Die Bibliothek wird den Kommentar in dem beschriebenen Fall nicht verlieren - OrderComment() wird den Kommentar erzeugen, der bei der Eröffnung der Position vorhanden war.
Eine Besonderheit des MT5-Betriebswird hier im Detail beschrieben. Die Bibliothek hat diese Situation lange Zeit korrekt verarbeitet. Aber sie hat geflucht (Alert), dass die Situation nicht standardisiert ist.
Jetzt wird sie nicht mehr fluchen.
Als Test können Sie dieses Skript auf einem komplizierten Demokonto FXOpen-MT5 ausführen.
Ergebnis
Forum zum Thema Handel, automatisierte Handelssysteme und Testen von Handelsstrategien
Organisation des Zyklus der Bestellung brute force
fxsaber, 2018.02.16 09:40
MT5 läuft überhaupt nicht gut. Ein Beispiel, das das Problem zeigt
Was denken Sie, wenn Sie dieses Skript auf ein Symbol ohne Positionen ausführen, was wird am Ende passieren?
Die richtige Antwort ist, dass eine oder zwei Positionen geöffnet werden.
Dieses Problem wird umgangen, wenn Sie zumindest teilweise im MQL4-Stil schreiben. Um dies sicherzustellen, reicht es aus, GetAmountPositions im MQL4-Stil zu schreiben (im Quellcode auskommentiert) und MQL5-Stil zu entfernen.
Seien Sie besonders wachsam mit MQL5-Stil.