Antwort

Ninjatrader Stop Order Abrundung Problem

8 Antworten

xlhuang1995

Abonnent, bbp_participant, Gemeinschaft, 11 Antworten.

Profil besuchen

vor 8 Jahren #114993

Ich habe SQ ausgeführt und einige gute Kandidaten für EURUSD gefunden. Also exportierte ich diese Strategien zu ninjatrader, aber wenn ich sie in ninjatrader backtested, machten sie keine Trades mit nur ein paar abgebrochene Stop-Order bei 1,0000 für den Einstieg (siehe beigefügten Screenshot). Diese Strategien waren alle mit Stop-Entry-Order. 

 

Im Code habe ich festgestellt, dass SQ price = roundprice() für den Einstiegspreis verwendet. Also fügte ich Print(price) in der nächsten Zeile ein und es wurden Zeilen von 1 gedruckt, als ich den Backtest erneut durchführte.

 

Dann habe ich roundprice() gelöscht und den Preis ungerundet gelassen. Überraschenderweise wurden die Preise entsprechend meiner Ticksize korrekt gerundet (auch ohne roundprice()).

 

Dann berechnete ich roundprice() mit meinem Gehirn, nach SQMangedStrategy, die auch durch round() und _round () ging, und ich bekam den richtigen Preis. Allerdings hielt die Strategie geben mir 1,00000, wenn ich Backtest lief.

 

Das macht überhaupt keinen Sinn. Ich kann nicht herausfinden, warum es mir 1,00000 gibt, wenn der korrekte Preis etwa 1,42365 sein sollte.

 

Übrigens war meine Tickgröße 0,00005. Ich war auf Interactive Brokers laufen.

 

0

tomas262

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 8 Jahren #136454

Ich habe versucht, Ihr Problem mit 6E-Futures-Daten (Tickgröße 0,00005) und einer zufällig generierten Strategie zu duplizieren, die nur Limit-Order verwendet, und das Problem tritt auch bei mir auf. Es wurden keine Trades ausgeführt, sondern nur Aufträge mit einem Limitpreis von 1,0000. Mark wird sich ansehen, was getan werden kann.

0

xlhuang1995

Abonnent, bbp_participant, Gemeinschaft, 11 Antworten.

Profil besuchen

vor 8 Jahren #136613

Ja, ich glaube, ich habe es auf den Punkt gebracht. Es ist ein Fehler in der SQManagedStrategy, einer von SQ in NT importierten Strategie.

 

Wenn NT berechnet, wie viele Dezimalstellen in der Tickgröße enthalten sind, ist es so konzipiert, dass die Tickgröße am Dezimalpunkt geteilt wird. In meinem Beispiel wird aus 0,00005 0 und 00005. Es nimmt dann die letztere und zählt, wie viele Ziffern es gibt.

 

Die Tickgröße, die NT erhält und dann aufteilt, ist jedoch in SCIENTIFIC NOTATION. Es kann also nicht wirklich am Dezimalpunkt geteilt werden, weil es in 5E10-5 keinen Dezimalpunkt gibt. Und das verursacht das Problem.

 

Ich habe mit dem Code in SQManagedStrategy gespielt und dieses Problem selbst behoben. Es war eine einfache Lösung, aber ich kann nicht verstehen, wie die Ingenieure von SQ so einen dummen Fehler machen konnten. Und wie können die Leute SQ benutzen, um Forex-Strategien mit kleinen Tickgrößen zu generieren, die in NT verwendet werden können? Oder gibt es tatsächlich niemanden, der SQ mit NT verwendet?

0

mabi

Kunde, bbp_participant, Gemeinschaft, 261 Antworten.

Profil besuchen

vor 8 Jahren #136706

"StrategyQuant unterstÃ?tzt jetzt vollstÃ?ndig die NinjaTraderâ„¢ Handelsplattform!" ??

0

kazex

Kunde, bbp_participant, Gemeinschaft, 6 Antworten.

Profil besuchen

vor 7 Jahren #143048

Ich habe genau das gleiche Problem, was ist die Änderung in SQManagedStrategy benötigt, um es zu beheben?

 

Danke.

0

tomas262

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 7 Jahren #143051

Hallo,

 

Dies könnte helfen, das Problem zu lösen

 

Öffnen Sie in NT Tools -> Edit NinjaScript -> Edit Strategy, suchen Sie SQManagedStrategy und finden Sie die Methode Initialize().
Es gibt eine Linie:

string str = Instrument.MasterInstrument.TickSize.ToString(System.Globalization.CultureInfo.InvariantCulture).TrimEnd('0');           

ersetzen Sie es durch Linie:

string str = Instrument.MasterInstrument.TickSize.ToString("##.#").TrimEnd('0');

und es sollte jetzt richtig funktionieren.

0

mabi

Kunde, bbp_participant, Gemeinschaft, 261 Antworten.

Profil besuchen

vor 7 Jahren #143078

Danke, Tomas. Was ich nicht verstehe, ist, warum die Vorlage, auf die SQ generieren Code für nicht mit diesem aktualisiert wird.

0

kazex

Kunde, bbp_participant, Gemeinschaft, 6 Antworten.

Profil besuchen

vor 7 Jahren #143087

Hallo,

Dies könnte helfen, das Problem zu lösen

Öffnen Sie in NT Tools -> Edit NinjaScript -> Edit Strategy, suchen Sie SQManagedStrategy und finden Sie die Methode Initialize().
Es gibt eine Linie:

string str = Instrument.MasterInstrument.TickSize.ToString(System.Globalization.CultureInfo.InvariantCulture).TrimEnd('0');

ersetzen Sie es durch Linie:

string str = Instrument.MasterInstrument.TickSize.ToString("##.#").TrimEnd('0');

und es sollte jetzt richtig funktionieren.

Ich habe die Änderung vorgenommen, aber das Problem tritt immer noch auf, ich habe den Preis gedruckt und die Werte scheinen Sinn zu machen, aber einige Trades zwischen SQ und NT sind unterschiedlich, dies geschieht nicht mit Market Orders, justo Stop Orders (Entry Order oder Stop Trailing).

Enviado desde mi iPhone utilizando Tapatalk

0

tomas262

Administrator, sq-ultimate, 2 Antworten.

Profil besuchen

vor 6 Jahren #143275

Bitte senden Sie mir die STR-Strategie-Datei an [email protected]. Ich muss überprüfen, warum es mit Ihrer Strategie passiert, danke

0

Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)