Test di precisione in NT
15 risposte
xlhuang1995
8 anni fa #115059
Salve gente,
Non so se qualcuno di voi sta facendo il backtesting delle strategie generate da SQ in NT. Ho riscontrato che, durante il backtesting delle strategie in SQ, gli ordini vengono eseguiti con la precisione scelta (simulazione di tick, 1 min, TF selezionato, ecc.), ma le condizioni di entrata/uscita vengono verificate solo quando una barra viene chiusa (M1, M5, M15, a seconda del TF della strategia).
Se non capite cosa sto dicendo, diciamo che state testando una semplice strategia di inversione dell'RSI M15 che utilizza ordini di stop per l'entrata, con una precisione di test di 1 minuto. SQ verificherà se l'RSI tocca 70/30 ogni 15 minuti, ma controllerà se l'ordine di stop può essere eseguito ogni 1 minuto.
Non so se SQ sia stato progettato per farlo o altro. Il problema è che, dopo aver esportato la strategia in NT, possiamo solo scegliere se eseguirla "Calculated on Bar Close" o meno.
Se scegliamo SÌ, NT verificherà le condizioni di ingresso e l'evasione degli ordini, tick per tick.
Se scegliamo NO, non verrà eseguito un tick per tick, ma una barra per barra.
Indipendentemente dalla scelta, la strategia non funzionerà esattamente come in SQ. Devo aggiungere delle righe di codice alla strategia per far sì che generi le stesse operazioni tra SQ e NT.
Mi chiedo se ci sia qualcuno che possa ottenere gli stessi risultati seguendo semplicemente le istruzioni per l'installazione di SQ per NT.
SQ non è stato progettato per una facile esportazione delle strategie? Perché devo fare questi sforzi che potrebbero essere facilmente risolti dal software stesso?
![](https://h8v7k6i3.rocketcdn.me/wp-content/uploads/2021/07/tomas262_avatar-96x96.jpg)
tomas262
8 anni fa #136629
Salve,
Il motore di backtesting di NT dovrebbe valutare la strategia solo alla chiusura della barra come mostrato qui https://ninjatrader.com/support/helpGuides/nt7/?discrepancies_real_time_vs_bac.htm
xlhuang1995
8 anni fa #136641
Sì, è vero. Ma nel trading in tempo reale, è possibile scegliere se calcolare alla chiusura della barra o meno. In questo caso, i risultati del test di SQ non possono essere utilizzati, perché il sistema si limita a compilare gli ordini tick per tick, ma non elabora le condizioni di ingresso.
Inoltre, nel backtesting è possibile aggiungere quella che NT chiama Granularità Intrabar nei codici per fornire riempimenti intrabar.
mabi
8 anni fa #136647
Quale codice hai aggiunto?
![](https://h8v7k6i3.rocketcdn.me/wp-content/uploads/2021/07/tomas262_avatar-96x96.jpg)
tomas262
8 anni fa #136651
Helllo,
grazie per i suggerimenti. Il tweak NT Intrabar Granularity potrebbe essere aggiunto a SQ4 e lo trasmetterò agli sviluppatori. Per il trading in tempo reale è necessario mantenere le stesse condizioni e la stessa precisione (valutazione alla chiusura della barra) di SQ3. Con il motore di backtesting di NinjaTrader e i dati storici importati da NT si utilizza sempre la "precisione del timeframe selezionato".
Dirkdiggler
8 anni fa #136975
Quale codice hai aggiunto?
Se si desidera ottenere una buona qualità di riempimento del test posteriore, è possibile apportare queste modifiche.
1. Sostituire SQManagedStrategy con il testo allegato.
2. Aggiungere questo codice a Initialize
protetto override void Initialize() { Add(PeriodType.Range,1); }
3. Aggiungete questo codice a OnBarUpdate
protected override void OnBarUpdate() { se (BarsInProgress !=0) return; }
4. Cercate nel codice BarsSinceEntry() e modificatelo in BarsSinceEntry(0,"",0).
Ora si otterrà la qualità del test su barre con intervallo di 1 periodo, più velocemente rispetto al tick di 1 periodo, purché si disponga di dati tick nel database di Ninja.
![](https://h8v7k6i3.rocketcdn.me/wp-content/uploads/2021/07/tomas262_avatar-96x96.jpg)
tomas262
8 anni fa #136988
Ottimo, grazie per la condivisione!
mabi
8 anni fa #137480
Voglio solo aggiungere che questo fine settimana ho testato 5 strategie presumibilmente buone generate su SQ con i dati di Market replay sullo stesso periodo (1 anno). I risultati reali sono molto diversi. La precisione del tick è davvero necessaria.
Ninjatrader è solo una piattaforma di trading per eseguire operazioni di larghezza .SQ è presumibilmente un generatore di strategie che può creare strategie per l'uso di larghezza Ninjatrader. A me sembra che non funzionino affatto nel mercato reale come testato.
Esiste un modo per esportare/convertire i dati tick da NInjatrader al formato Metatrader in modo che la precisione dei tick possa essere utilizzata per i test in SQ per eliminare quelli non corretti? E' davvero necessario o il team di SQ può creare uno strumento di conversione come questo.
Dirkdiggler
8 anni fa #137497
Mabi, il metodo che ho postato sopra vi darà risultati quasi identici a quelli di market replay. Ti farà risparmiare un po' di tempo.
mabi
8 anni fa #137498
Mabi, il metodo che ho postato sopra vi darà risultati quasi identici a quelli di market replay. Ti farà risparmiare un po' di tempo.
Lo apprezzo molto. Vorrei filtrarli prima che arrivino a Ninjatrader. Per questo motivo ho chiesto un promemoria. L'unica cosa che è stata detta prima su questo problema è che "può" essere implementato in SQ4, ma non che hanno in programma di farlo.
DanT
8 anni fa #137599
Salve,
Ho generato alcune strategie a 10 minuti, il feed di dati che ho utilizzato è a 10 minuti di fronte a Ninja Trader.
Stesso problema in StrategyQuant e nel backtest di NinjaTrader, molte operazioni (70-80%) vengono chiuse nella stessa barra.
Come posso fare un backtest accurato? Sono un principiante di SQ e di NT 🙂
Grazie,
Dan
![](https://h8v7k6i3.rocketcdn.me/wp-content/uploads/2021/07/tomas262_avatar-96x96.jpg)
tomas262
8 anni fa #137620
Salve,
Ho generato alcune strategie a 10 minuti, il feed di dati che ho utilizzato è a 10 minuti di fronte a Ninja Trader.
Stesso problema in StrategyQuant e nel backtest di NinjaTrader, molte operazioni (70-80%) vengono chiuse nella stessa barra.
Come posso fare un backtest accurato? Sono un principiante di SQ e di NT 🙂
Grazie,
Dan
Ciao Dan, ti ho risposto via e-mail
mabi
8 anni fa #137628
Salve,
Ho generato alcune strategie a 10 minuti, il feed di dati che ho utilizzato è a 10 minuti di fronte a Ninja Trader.
Stesso problema in StrategyQuant e nel backtest di NinjaTrader, molte operazioni (70-80%) vengono chiuse nella stessa barra.
Come posso fare un backtest accurato? Sono un principiante di SQ e di NT 🙂
Grazie,
Dan
Questo è un problema che riguarda Ninjatrader. Avrebbero potuto risolvere questo problema 10 anni fa ma non l'hanno mai fatto. Non ci sono soldi per risolvere questo problema, ma molti soldi per non risolverlo. Tutti i venditori di "serpenti" usano questo problema per mostrare i loro risultati di trading falsi in qualsiasi sistema possano vendere, solo alcune operazioni all'interno della barra possono distruggere il sistema e possono essere nascoste soprattutto alla chiusura del giorno.C'è un modo per risolvere questo problema come sopra post da dirkdiggler. Oppure è possibile acquistare un addon intrabar per ninjatrader su backtestdata.com che funziona con backtesting storico o ottimizzazione per tutte le strategie di terze parti. Il miglior test resta il market replay o l'incubazione live. Quando si utilizzano i dati di SQ e di NInjatrader è necessario costruire strategie che non prevedano operazioni all'interno delle barre.
DanT
8 anni fa #137641
Se si desidera ottenere una buona qualità di riempimento del test posteriore, è possibile apportare queste modifiche.
1. Sostituire SQManagedStrategy con il testo allegato.
2. Aggiungere questo codice a Initialize
protetto override void Initialize() { Add(PeriodType.Range,1); }3. Aggiungete questo codice a OnBarUpdate
protected override void OnBarUpdate() { se (BarsInProgress !=0) return; }4. Cercate nel codice BarsSinceEntry() e modificatelo in BarsSinceEntry(0,"",0).
Ora si otterrà la qualità del test su barre con intervallo di 1 periodo, più velocemente rispetto al tick di 1 periodo, purché si disponga di dati tick nel database di Ninja.
Ciao,
Faccio i passi 1-3, ma il 4 no, perché nella mia strategia non ho nessun "BarsSinceEntry()". Potete dirmi come posso fare e dove devo aggiungere questa condizione?
Grazie,
Dan
Dirkdiggler
8 anni fa #137643
La vostra strategia potrebbe non includere il metodo BarsSinceEntry nella sua logica. Ma se lo prevede, è possibile inserire 0,"",0 tra i ().
mabi
8 anni fa #137652
Marketreplay.net ha messo in vendita la versione pro di Ninjatrader. 1/3 del prezzo a cui l'ho acquistata. Supporta il download in batch di contratti continui. Lo uso come incubazione di una strategia. Testato fino alla fine del 2015 ed eseguito su Market replay per i restanti 6 mesi e poi sui dati live per una settimana e poi lo provo con denaro reale.
Stai visualizzando 15 risposte - da 1 a 15 (di 15 totali)