Backtest automatico: far girare una strategia scritta sulle barre in cache
La modalità Backtest automatico della schermata Replay fa girare uno script di strategia salvato su settimane o anni di barre in cache, con costi di transazione obbligatori, usando le stesse regole di esecuzione prudenti del motore di ricerca, e registra il risultato nel pannello delle prestazioni.
Senzoukria · Documentazione · Aggiornato a settembre 2026
Dove trovarlo
- Dove
- Replay → Preparare → modalità «Backtest automatico» («Mesi di barre: la tua strategia gira da sola»)
- Valori predefiniti
- Periodo 1 mese, granularità 15 minuti, valore del punto 2 $, commissione andata e ritorno 1,24 $, slippage 1 tick
- Regole di esecuzione
- Ingresso all'apertura della barra successiva più lo slippage, uscite sulle ombre, su una barra ambigua vince lo stop, commissioni su ogni operazione
- Finestra di lettura
- Una strategia vede le ultime 500 barre a ogni decisione
Che cosa fa
Dove il replay manuale riproduce una giornata tick per tick, il backtest automatico fa girare una strategia scritta nella pagina Scripting sulle barre conservate nella cache locale. La strategia espone decide(bars, params, ctx, state) con le barre dalla più recente e restituisce un'azione: buy, sell o close, con qty, stopTicks e targetTicks opzionali. L'intero ciclo gira nel worker della sandbox (il protocollo ofsandbox, che porta la propria CSP) a passi di 300 ms, così l'interfaccia resta reattiva; lo stesso testo del ciclo gira anche in un worker blob per i test e per il sito, il che garantisce risultati identici.
Il pannello legge prima la cache per il contratto e la granularità scelti e riporta la copertura («{n} sessioni in cache su {n} richieste»). Le sessioni mancanti si possono scaricare dal broker (barre, oppure lo storico tick footprint quando la strategia legge gli squilibri livello per livello), e si può importare un file Databento ohlcv-1m. Le barre del server portano OHLC, volume e delta ma nessun livello footprint, e le barre importate non portano alcun delta.
Impostazioni
| Impostazione | Predefinito | Che cosa cambia |
|---|---|---|
| Strategia | «Scegli…» | Una strategia salvata dalla pagina Scripting; «Modifica la strategia» apre il codice, una bozza modificata gira senza essere salvata, Ctrl+Invio rilancia. |
| Periodo | 1 mese | 1 settimana, 1 mese, 3 mesi, 6 mesi, 1 anno, 2 anni, 5 anni (da 7 a 1.825 giorni). |
| Granularità | 15 minuti | 1 minuto, 5 minuti, 15 minuti, 1 ora. Sei mesi di barre a 1 minuto sono circa 250.000 barre e richiedono minuti per configurazione. |
| Valore del punto ($) | 2 (MNQ) | Valore in dollari di un punto intero per contratto; minimo 0,01. |
| Commissione andata e ritorno per contratto ($) | 1,24 | Sottratta da ogni operazione; minimo 0. |
| Slippage (tick) | 1 | Penalizza sempre l'ingresso: gli acquisti eseguono più in alto, le vendite più in basso; minimo 0. |
| Walk-forward | Disattivato | Attiva fette, quota di addestramento, criterio di selezione e assi dei parametri (vedi la pagina walk-forward). |
| Lancia il backtest | — | Avvia l'esecuzione; «Interrompi» la annulla. L'intestazione del risultato recita «Risultato · {n} barre». |
Regole di simulazione
- Una decisione è presa su una barra chiusa e applicata all'apertura della barra successiva: nessuna esecuzione a un prezzo che apparteneva al passato nel momento in cui la decisione esisteva.
- Stop e target sono verificati contro il massimo e il minimo della barra, non contro la chiusura.
- Quando una stessa barra tocca sia lo stop sia il target, vince lo stop: senza tick l'ordine è ignoto, quindi il motore decide contro di te.
- Le commissioni sono applicate a ogni operazione; il suggerimento sui costi ricorda che costi a zero trasformano una strategia perdente in una vincente non appena opera spesso.
- Un segnale inverso chiude prima la posizione corrente (motivo «inversione»); un'azione di chiusura porta a flat (motivo «flatten»).
- MAE, MFE e il rischio all'ingresso (distanza dello stop × qty × valore del punto) sono registrati per ogni operazione, per i grafici delle escursioni e degli R-multipli.
- I log dello script sono conservati fino a 200 righe; una strategia Python gira tramite l'interprete installato dalla pagina Scripting; le strategie C++ non sono ancora sottoponibili a backtest.
Limiti e trappole
Il risultato viene registrato nel pannello delle prestazioni come esecuzione «auto» con i giorni effettivamente coperti, e l'elenco mostra «{n} g su {req} chiesti» quando la copertura è sotto il 90 % della finestra richiesta. Un backtest su copertura parziale copre solo quella finestra, e il pannello lo dice.
Le barre storiche sono un'autorizzazione del broker: il pannello distingue «permission denied» (rp_code 13, barre non abilitate sul conto) da un archivio che non risale così indietro. Un backtest non piazza alcun ordine; le strategie automatiche pilotano sempre e solo il conto di valutazione simulato.
Pagine correlate
- Analisi walk-forward
- Assistente di backtest (IA)
- Pannello delle prestazioni (sessioni passate)
- Guida al backtest sui futures
- Trading quantitativo per principianti
Questa pagina in altre lingue
Domande frequenti
- Perché il backtest esegue all'apertura della barra successiva?
- La decisione esiste solo una volta chiusa la barra. Entrare a un prezzo di quella stessa barra userebbe informazioni che non avevi ancora, il che è il primo difetto dei backtester ingenui.
- Posso mettere le commissioni a zero?
- Il campo accetta 0, ma il suggerimento avverte che un backtest a costo zero mente non appena la strategia opera spesso. Il valore predefinito di 1,24 $ è un ordine di grandezza per un andata e ritorno su prop firm.
- Perché non c'è nulla in cache per il mio contratto?
- La cache si riempie quando apri il contratto nel grafico a quella granularità, oppure quando scarichi lo storico mancante dal pannello del backtest. Si può anche importare un file Databento ohlcv-1m.