EXIT RULE im MT4 Problem!!
18 Antworten
Gaudio Fx
vor 8 Jahren #114590
Ich kann diese Ausstiegsregel durch eine logischere Regel wie diese ersetzen:
aber wenn diese Bedingung vor der Bestellung wahr ist, in metatrader die Schließung ist am gleichen Punkt zu öffnen .. aber in strategyquant die Schließung ist nach der Kerze schließen!! .. ich möchte die gleiche Bedingung in MT4..IT'S POSSIBLE?
mikeyc
vor 8 Jahren #134663
Diese Ausstiegsregel ergibt für mich keinen logischen Sinn.
Warum sollte ein überdurchschnittliches Volumen das Schließen einer Short-Position und ein unterdurchschnittliches Volumen das Schließen einer Long-Position bedeuten oder umgekehrt? Dies scheint ein weiteres Beispiel für die seltsame Logik bei der Auswahl symmetrischer Regeln zu sein.
Das Volumen, das über oder unter dem Durchschnitt liegt, ist nicht richtungsbestimmend.
Gaudio Fx
vor 8 Jahren #134664
es ist nicht logisch, ich weiß .. aber es war nur ein Beispiel .. ist das Konzept, das ich denke, ist wichtig, oder ob die "Exit-Regel aktiv ist, bevor die Eröffnung des Handels, WARUM in metatrader4 ist aktiv zur gleichen Zeit öffnen, während auf strategyquant ist aktiv nur in der Schließung Kerze ????? .. DIES IST DIE FRAGE... nicht für logische Exemplar exit...
Ich kann diese Ausstiegsregel durch eine logischere Regel wie diese ersetzen:
aber wenn diese Bedingung vor der Bestellung wahr ist, in metatrader die Schließung ist am gleichen Punkt zu öffnen .. aber in strategyquant die Schließung ist nach der Kerze schließen!! .. ich möchte die gleiche Bedingung in MT4..IT'S POSSIBLE?
mikeyc
vor 8 Jahren #134665
Sieht aus, als handele es sich um schwebende Aufträge (Limit- oder Stop-Aufträge). Sind Sie sicher, dass sie geschlossen und nicht gelöscht werden?
Was zeigt die Registerkarte "Ergebnisse" im MT4 anstelle des Diagramms an?
Gaudio Fx
vor 8 Jahren #134666
tomas262
vor 8 Jahren #134667
Gaudio, ich habe den Eindruck, dass die Einstiegs- und Ausstiegsbedingungen manchmal "kollidieren" können, und je nach Backtesting-Präzision ergibt sich dann ein unterschiedliches Verhalten, z. B. sofortiger Ausstieg nach dem Einstieg. Können Sie mir die Strategie (*.STR-Datei) an folgende Adresse schicken [email protected] damit ich es überprüfen kann? Die Lösung kann hier ein Fix für SQ oder die Bearbeitung Ihres Strategiecodes sein, um auf den Bar Close zu warten.
geektrader
vor 8 Jahren #134673
Ja, das ist ein Präzisionsproblem. Wenn Sie eine solche Strategie mit echten Tick-Daten backtesten, verhält sie sich in der SQ genauso und wird fehlschlagen. Stellen Sie also sicher, dass Sie Strategien immer mit echten Tickdaten zumindest der letzten Jahre überprüfen, um solche Dinge zu vermeiden. Ich persönlich würde auch niemals "Volumen" für eine Handelslogik verwenden, da das Volumen bei jedem Broker völlig unterschiedlich ist. Das Gleiche gilt für die "Stunde", es sei denn, Sie wissen, dass die historischen Daten, die Sie verwenden, zeitlich absolut mit Ihrem aktuellen Broker übereinstimmen.
mikeyc
vor 8 Jahren #135652
Ich wiederhole: strategyquant aktiviert die Ausstiegsregel unmittelbar nach dem Schließen der Kerze, bei der Sie den Handel eröffnet haben.Stattdessen mt4 dies nicht geschehen, die Exit-Regel ist aktiv zur gleichen Zeit zu öffnen.
Ich habe gerade dieses Problem mit SQ vs MT4 auch gefunden.
In SQ wird die Position beim Öffnen des Balkens eröffnet und am Ende des Balkens/bei Eröffnung des nächsten Balkens geschlossen. In MT4 (mit jeder Tick-Präzision) wird die Order sofort beim Öffnen des Balkens eröffnet und geschlossen.
In MT4 sehen Sie also keinen Gewinn, in SQ eine sehr gute Rentabilität. Die Ergebnisse sind völlig unterschiedlich.
Dies geschieht in Strategien, die eine Ausstiegsregel haben, die zur gleichen Zeit wie die Einstiegsregel wahr ist, d.h. einen Handel öffnen und einen Handel in diesem Balken schließen. Es scheint, SQ nimmt dies zu bedeuten, öffnen Sie den Handel bei bar öffnen und schließen am Ende der bar, und MT4-Logik tut beides bei bar öffnen.
Beunruhigend ist, dass dies für viele Strategien mit Ein- und Ausstiegsregeln gilt.....
mikeyc
vor 8 Jahren #135653
Erste Tests zeigen, dass Sie die MT4-Strategien so "reparieren" können, dass sie wie in SQ funktionieren, indem Sie der folgenden Funktion eine Codezeile hinzufügen:
void closePositionAtMarket() { RefreshRates(); double priceCP; if(OrderType() == OP_BUY) { priceCP = Bid; } else { priceCP = Ask; } if(OrderOpenTime() >= Time[0]) return; // Neue Code-Zeile! Beenden, wenn die Order gerade eröffnet wurde rettmp = OrderClose(OrderTicket(), OrderLots(), priceCP, MaxSlippage); }
Gaudio Fx
vor 8 Jahren #135655
Erste Tests zeigen, dass Sie die MT4-Strategien so "reparieren" können, dass sie wie in SQ funktionieren, indem Sie der folgenden Funktion eine Codezeile hinzufügen:
void closePositionAtMarket() { RefreshRates(); double priceCP; if(OrderType() == OP_BUY) { priceCP = Bid; } else { priceCP = Ask; } if(OrderOpenTime() >= Time[0]) return; // Neue Code-Zeile! Beenden, wenn die Order gerade eröffnet wurde rettmp = OrderClose(OrderTicket(), OrderLots(), priceCP, MaxSlippage); }
geektrader
vor 8 Jahren #135656
Ja, aber wenn man darüber nachdenkt, macht SQ es im Backtest falsch, nicht MT4. Wenn eine Regel für Öffnen und Schließen zur gleichen Zeit gilt, sollte der Auftrag innerhalb von 2 Ticks geöffnet und geschlossen werden - Tick 1 öffnen, Tick 2 schließen. Die Order einen Takt lang zu halten, ist weniger sinnvoll als sie sofort zu schließen, wie es MT4 tut. Also eigentlich SQ Backtesting-Code sollte angepasst werden, um die Bestellung sofort zu schließen und tatsächlich ungültig die Strategie auf diese Weise zu, denn das ist alles, was es ist, können Sie nicht eine offene und geschlossene Regel Anwendung im gleichen Moment. Es wäre gültig, WENN die Strategie hätte auch die Möglichkeit, den Handel mindestens 1 bar zu halten, dann alles in Ordnung, Ihre oben MT4-Code wäre dann richtig sein. Aber wenn die Open- und Close-Regel gleichzeitig gültig sind, ist das, was SQ tut, genau das, was logisch richtig ist und wie eine solche Strategie tatsächlich auch funktionieren würde, wenn sie manuell gehandelt wird. Die Orderregeln würden z.B. sagen: Eröffne einen Trade, wenn Previous close > current open und schließe ihn, wenn Previous close > current open. In diesem Fall müsste man die Order öffnen und gleich wieder schließen, um die Regeln zu befolgen - das macht zwar keinen Sinn, aber genau das tun die Strategien, die solche Regeln haben, auch. Würde es heißen, eröffne einen Handel, wenn der vorherige Schlusskurs > die aktuelle Eröffnung ist, halte mindestens 1 Bar und schließe ihn, wenn der vorherige Schlusskurs > die aktuelle Eröffnung ist, dann ist das in Ordnung und macht Sinn.
mikeyc
vor 8 Jahren #135658
Suchen Sie in der mq4-Datei nach closePositionAtMarket()
Fügen Sie die Zeile
wenn(OrderOpenTime() >= Zeit[0]) return; // Neue Codezeile! Beenden, wenn der Auftrag gerade eröffnet wurde
Wo ich es gezeigt habe.
geektrader
vor 8 Jahren #135660
Ja, ich verstehe völlig, was Sie meinen, aber das entspricht einer zusätzlichen Regel von "halten Handel mindestens 1 bar vor dem Ausstieg", die nicht eine Regel in SQ für diese Strategie ist, wie Sie sagen, und daher ist falsch LOGISCH. Sicherlich tut Ihr Fix das, was Sie wollen, das verstehe ich, aber logisch ist es trotzdem nicht korrekt. Wenn Sie die gleichen Regeln für Öffnen und Schließen zur gleichen Zeit anwenden, um die Logik von SQ korrekt auf MT4 zu übertragen, MUSS die Order innerhalb von 2 Ticks geöffnet und geschlossen werden, wenn sie dem realen Markt ausgesetzt ist. Sicher, WENN Sie die zusätzliche Regel "mindestens 1 Bar halten" hinzufügen, dann ist Ihre Lösung korrekt, aber da diese Regel nicht in der ursprünglichen Strategie in SQ enthalten ist, ist es nicht korrekt, es in MT4 so zu machen. Ich will damit nur sagen, dass es sich um ein logisches Problem handelt und SQ sich hier korrekt verhält. Es ist kein wirklicher Fehler, sondern genau so, wie sich solche Regeln (ohne die zusätzliche Regel "Handel mindestens 1 Bar halten") im Live-Handel verhalten würden.
mikeyc
vor 8 Jahren #135663
Ich schlage nur eine Lösung vor, damit sich MT4 so verhält wie SQ. Niemand muss dies tun, aber wenn sie wollen, dass der Live-Handel mit SQ übereinstimmt, ist dies, was es braucht.
Gaudio Fx
vor 8 Jahren #135664
Suchen Sie in der mq4-Datei nach closePositionAtMarket()
Fügen Sie die Zeile
if(OrderOpenTime() >= Time[0]) return; // Neue Codezeile! Beenden, wenn der Auftrag gerade eröffnet wurde
Wo ich es gezeigt habe.
okok..
Wenn ich dies in einem logischen "oder" und nicht in einem "wenn" möchte, habe ich "wenn" durch "oder" ersetzt?
z. B: or(OrderOpenTime() >= Time[0]) return; // Neue Codezeile! Beenden, wenn der Auftrag gerade eröffnet wurde
geektrader
vor 8 Jahren #135665
Ich schlage nur eine Lösung vor, damit sich MT4 so verhält wie SQ. Niemand muss dies tun, aber wenn sie wollen, dass der Live-Handel mit SQ übereinstimmt, ist dies, was es braucht.
Ja, beim Backtesting mit Tickdaten öffnet und schließt SQ die Order auch innerhalb von 2 Ticks, genau wie MT4.