Ninjatrader Stop Order Abrundung Problem
8 Antworten
xlhuang1995
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.
tomas262
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.
xlhuang1995
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?
mabi
vor 8 Jahren #136706
"StrategyQuant unterstÃ?tzt jetzt vollstÃ?ndig die NinjaTraderâ„¢ Handelsplattform!" ??
kazex
vor 7 Jahren #143048
Ich habe genau das gleiche Problem, was ist die Änderung in SQManagedStrategy benötigt, um es zu beheben?
Danke.
tomas262
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.
mabi
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.
kazex
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
tomas262
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
Ansicht von 8 Antworten - 1 bis 8 (von insgesamt 8)