Risposta

Ninjatrader Arrotondamento degli ordini di stop Problem

8 risposte

xlhuang1995

Abbonato, bbp_partecipante, comunità, 11 risposte.

Visita il profilo

8 anni fa #114993

Stavo eseguendo SQ e ho trovato alcuni candidati interessanti per EURUSD. Ho quindi esportato queste strategie in ninjatrader, ma quando le ho testate in ninjatrader, non hanno effettuato alcuna operazione con solo alcuni ordini di stop cancellati a 1,0000 per l'entrata (vedere lo screenshot allegato). Queste strategie utilizzavano tutte un ordine di entrata con stop. 

 

Nel codice ho scoperto che SQ utilizzava price = roundprice() per il prezzo di entrata. Ho quindi aggiunto Print(price) alla riga successiva e ha stampato righe di 1 quando ho eseguito nuovamente il backtest.

 

Poi ho eliminato roundprice() e ho lasciato il prezzo non arrotondato. Sorprendentemente, i prezzi sono stati arrotondati correttamente in base al mio ticksize (anche senza roundprice()).

 

Poi ho calcolato roundprice() usando il mio cervello, secondo SQMangedStrategy, che è passato anche attraverso round() e _round (), e ho ottenuto il prezzo corretto. Tuttavia, la strategia continua a darmi 1,00000 quando eseguo il backtest.

 

Questo non ha assolutamente senso. Non riesco a capire perché continui a darmi 1,00000 quando il prezzo corretto dovrebbe essere qualcosa come 1,42365.

 

BTW, il mio ticksize era 0,00005. Stavo operando su Interactive Brokers.

 

0

tomas262

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

8 anni fa #136454

Ho provato a duplicare il tuo problema utilizzando i dati dei futures 6E (dimensione dei tick 0,00005) e una strategia generata in modo casuale utilizzando solo l'ordine limite e il problema si è presentato anche a me. Nessuna operazione eseguita, solo ordini con prezzo limite di 1,0000. Mark esaminerà cosa si può fare.

0

xlhuang1995

Abbonato, bbp_partecipante, comunità, 11 risposte.

Visita il profilo

8 anni fa #136613

Sì, credo di essere arrivato al punto. Si tratta di un bug nella SQManagedStrategy, una strategia importata in NT da SQ.

 

Quando NT calcola quanti decimali ci sono nella dimensione del tick, è progettato per dividere la dimensione del tick al punto decimale. Nel mio esempio, 0,00005 diventa 0 e 00005. Quindi prende quest'ultimo e conta quante cifre ci sono.

 

Tuttavia, la dimensione del tick che NT ottiene e poi divide è in notazione scientifica. Quindi non può dividere in corrispondenza della virgola decimale perché non c'è una virgola decimale in 5E10-5. E questo causa il problema.

 

Ho giocato con il codice di SQManagedStrategy e ho risolto il problema da solo. È stata una soluzione facile, ma non riesco a capire come gli ingegneri di SQ abbiano potuto commettere un errore così stupido. E come si può usare SQ per generare strategie forex con tick di dimensioni ridotte da usare in NT? Oppure non c'è nessuno che usa SQ con NT?

0

mabi

Cliente, bbp_partecipante, comunità, 261 risposte.

Visita il profilo

8 anni fa #136706

"StrategyQuant ora supporta pienamente la piattaforma di trading NinjaTrader¢â'¬â"¢!". ??

0

kazex

Cliente, bbp_partecipante, comunità, 6 risposte.

Visita il profilo

7 anni fa #143048

Ho esattamente lo stesso problema, qual è la modifica necessaria in SQManagedStrategy per risolverlo?

 

Grazie.

0

tomas262

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

7 anni fa #143051

Salve,

 

questo potrebbe aiutare a risolvere il problema

 

In NT aprire Strumenti -> Modifica NinjaScript -> Modifica strategia, trovare SQManagedStrategy e il metodo Initialize().
C'è una linea:

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

sostituirlo con una linea:

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

e dovrebbe iniziare a funzionare correttamente.

0

mabi

Cliente, bbp_partecipante, comunità, 261 risposte.

Visita il profilo

7 anni fa #143078

Grazie Tomas. Quello che non capisco è perché il modello per il quale SQ genera il codice non viene aggiornato con questo.

0

kazex

Cliente, bbp_partecipante, comunità, 6 risposte.

Visita il profilo

7 anni fa #143087

Salve,

questo potrebbe aiutare a risolvere il problema

In NT aprire Strumenti -> Modifica NinjaScript -> Modifica strategia, trovare SQManagedStrategy e il metodo Initialize().
C'è una linea:

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

sostituirlo con una linea:

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

e dovrebbe iniziare a funzionare correttamente.

Ho fatto la modifica ma il problema si presenta ancora, ho stampato il prezzo e i valori sembrano avere senso ma alcune operazioni tra SQ e NT sono diverse, questo non succede con gli ordini di mercato, ma solo con gli ordini di stop (entry order o stop trailing).

Inviato dal mio iPhone utilizzando Tapatalk

0

tomas262

Amministratore, sq-ultimate, 2 risposte.

Visita il profilo

6 anni fa #143275

Inviatemi il file della strategia STR a [email protected]. Devo verificare perché succede con la tua strategia, grazie.

0

Stai visualizzando 8 risposte - da 1 a 8 (di 8 totali)