Tester di Strategia
Questo manuale spiega come eseguire il back-test di una strategia utilizzando lo Strategy Tester di JForex4, illustrando la configurazione, i metodi di test, la logica di esecuzione degli ordini e come leggere i risultati.
1. Aprire lo Strategy Tester
- Andare su View nella barra dei menu superiore e selezionare Strategy Tester.
- Il tester si apre come una nuova scheda affiancata a Orders, Positions e Messages.
- Selezionare la strategia dal menu a discesa. Se non è ancora stata aggiunta all'area di lavoro, fare prima clic su Open per aggiungerla.
- (Opzionale) Fare clic su Edit per apire il codice sorgente della strategia nell'editor di codice — disponibile solo se è presente il file sorgente
.java.
2. Configurare il test
Impostazioni dell'account
Fare clic su Account per definire il conto di trading simulato:
- Deposito iniziale e valuta del conto
- Leva finanziaria (Leverage)
- Livello di margin cut (in % della leva utilizzata)
- Stop loss sull'equity (MC Equity) — interrompe automaticamente il test se l'equity scende sotto questo livello
Strumenti
Fare clic su Instruments per selezionare gli strumenti per i quali devono essere scaricati i dati storici. Selezionare ogni strumento utilizzato dalla strategia per il trading o per i calcoli.
Nota: questo non è il punto in cui si scelge lo strumento effettivamente negoziato dalla strategia — questo viene impostato separatamente, sia codificato direttamente nella strategia, sia scelto successivamente nella finestra Define Parameters.
Periodo campione e Time Frame
Scegliere l'intervallo di date storiche (Sample Period) e il Time Frame:
- Ticks — utilizza dati tick storici reali (il più preciso, il più lento).
- Candles (Candele) (1 minuto / 1 ora / 1 giorno) — più veloce, utilizza l'interpolazione per generare tick dai dati delle candele OHLC. Consente inoltre di scegliere Bid o Ask come base.
Modalità visiva (Visual Mode)
Attivare Visual Mode per osservare la simulazione svolgersi su un grafico dal vivo mentre viene eseguita. Quando attivata, il pulsante Start sblocca anche i controlli di riproduzione per metter in pausa il test o rallentarne la velocità.
Ottimizzazione (Optimization)
Se la strategia ha parametri configurabili, attivare Optimization per testare più combinazioni di parametri in un'unica esecuzione. Per ogni parametro (a esclusione dello strumento e del periodo) è possibile definire un valore minimo, un valore di incremento (step) e un valore massimo — la strategia viene quindi testata una volta per ogni combinazione di step.
I risultati di ciascuna combinazione appaiono nella parte inferiore della finestra del tester. Fare clic con il tasto destro su qualsiasi riga per annullarla, copiarne le impostazioni, visualizzarne il report o riutilizzarne i parametri di input.
Profit Factor = Profitto lordo ÷ Perdita lorda (entrambi presi come numeri positivi). Ad esempio, con un profitto lordo di 1000 e una perdita lorda di 250 → Profit Factor = 4,0. È sempre un valore positivo, e un valore più alto indica generalmente un rapporto più favorevole tra operazioni vincenti e perdenti.
3. Filtri sui tick (Tick Filters) (solo per il Time Frame Ticks)
Quando Ticks è selezionato come Time Frame, scegliere come filtrare i tick:
| Filtro | Comportamento |
|---|---|
| Process all ticks (Elabora tutti i tick) | Il più preciso, ma il più lento — riproduce ogni tick mai registrato. |
| Process all ticks with a different non-recurrent price (Elabora tutti i tick con un prezzo diverso e non ricorrente) | Salta i tick che ripetono lo stesso prezzo. |
| Process ticks on a market direction (Elabora i tick in base alla direzione del mercato) | Salta i tick a meno che non rappresentino un vero punto di inversione/svolta nella direzione del prezzo. |
| Process ticks on a predefined price range change (Elabora i tick in base a una variazione predefinita dell'intervallo di prezzo) | Salta i tick fino a quando il prezzo non si muove di un intervallo definito. |
| Process ticks with the specified time interval (Elabora i tick con l'intervallo di tempo specificato) | Salta i tick in base a un intervallo di tempo definito. |
4. Metodi di interpolazione (solo per i Time Frame a candela)
Disponibili quando il Time Frame è un periodo a candela (1 min, 1 ora, 1 giorno). Invece di scaricare dati tick reali, il tester genera tick sintetici dai dati delle candele OHLC — il che accelera notevolmente il test.
| Metodo | Descrizione |
|---|---|
| Cubic Spline (Spline cubica) | Il metodo più preciso basato sulle candele. Costruisce i tick utilizzando i prezzi OHLC come punti base tramite interpolazione con spline cubica. Può occasionalmente generare più tick di quanti ne produrrebbe un flusso di dati reale per periodi molto brevi (ad esempio 10 secondi). |
| 4 ticks at OHLC (4 tick su OHLC) | Il metodo di interpolazione più affidabile tra quelli disponibili. Interpola ogni candela in esattamente 4 tick di prezzo — Open, High, Low e Close. L'ordine dei tick High e Low dipende da quale dei due è più vicino al prezzo Open: quello più vicino a Open viene elaborato come secondo tick, prima dell'altro. |
| Tick on Open (Tick su Open) | Genera un singolo tick utilizzando il prezzo Open della candela. |
| Tick on Close (Tick su Close) | Genera un singolo tick utilizzando il prezzo Close della candela. |
Esempio: se la strategia opera su candele da 1 minuto e non necessita di una granularità più fine, selezionare 1 Min come Time Frame e 4 ticks at OHLC come metodo di interpolazione — la strategia riceverà quindi esattamente 4 tick al minuto (open, poi high/low in ordine di prossimità, poi close).
5. Impostazioni personalizzate
- Save interpolated price data (Salva i dati di prezzo interpolati) — mantenere o scartare i dati tick generati dall'interpolazione.
- Visual Mode (Modalità visiva): mostrare/nascondere Equity, Balance e P/L; scegliere un modello (Template) di grafico salvato; impostare il Period predefinito visualizzato durante la modalità visiva.
- Messages (Messaggi): attivare Save Messages to per salvare i messaggi in un file; attivare Save Reports to per salvare i report in un file; attivare Show Reports per aprire automaticamente il report al termine del test.
6. Logica di elaborazione degli ordini
Comprendere esattamente come il tester esegue gli ordini è essenziale per potersi fidare dei risultati del backtest.
Regola generale: gli ordini vengono eseguiti al prezzo dell'ordine stesso — tranne in caso di gap di mercato (ad esempio, quando il mercato riapre con un gap dopo una pausa). Nelle situazioni di gap:
- Gli ordini LIMIT vengono eseguiti a un prezzo migliore rispetto al prezzo dell'ordine.
- Gli ordini STOP senza impostazione MAX.SLIPPAGE vengono eseguiti al primo prezzo disponibile dopo il gap.
- Gli ordini STOP con impostazione MAX.SLIPPAGE, se il prezzo di esecuzione ricadesse fuori da tale limite di slippage, vengono automaticamente ripresentati come ordini LIMIT.
Logica di esecuzione dettagliata:
- Gli ordini attivati sul lato BID vengono confrontati con i prezzi delle candele BID interpolate; gli ordini attivati sul lato ASK vengono confrontati con i prezzi delle candele ASK interpolate.
- Se un ordine (indipendentemente dal tipo) viene attivato da un tick di prezzo CLOSE, HIGH o LOW, viene eseguito al prezzo dell'ordine stesso, corretto in base all'ultimo spread conosciuto se necessario (questa correzione si applica quando l'attivazione proviene dal lato opposto).
- Se un ordine viene attivato da un tick di prezzo OPEN, viene eseguito a quel tick di prezzo OPEN sul lato corrispondente — eccetto per un ordine STOP con MAX.SLIPPAGE impostato: se il tick OPEN ricade fuori dal limite di slippage dello STOP, l'ordine viene invece convertito in un ordine LIMIT.
Suggerimento: poiché "4 ticks at OHLC" include sempre un tick Open per ogni candela, questa logica attivata da OPEN (e la relativa eccezione STOP/MAX.SLIPPAGE) si applica direttamente quando si effettuano test con questo metodo di interpolazione.
7. Eseguire il test
- Fare clic sul pulsante Start.
- Si apre la finestra Define Parameters — impostare qui i valori configurabili della strategia (strumento, importo, slippage, stop loss/take profit, ecc.). I campi esatti mostrati dipendono dal codice della strategia.
- Fare clic su Run per avviare la simulazione.
- Se la modalità visiva è attiva, utilizzare i controlli di riproduzione per metter in pausa o rallentare il test durante l'esecuzione.
- Al termine (i test di grandi dimensioni basati su tick possono richiedere del tempo), il report del test si apre automaticamente nel browser (se Show Reports è attivato).
8. Analizzare i risultati
Il report include i risultati operazione per operazione, le curve di equity/balance e statistiche riepilogative come il Profit Factor descritto sopra. Se è stata eseguita una scansione di Optimization, confrontare i report per ciascuna combinazione di parametri dall'elenco dei risultati nella parte inferiore della finestra del tester prima di scegliere una configurazione da adottare.
Best Practice
- Iniziare con Ticks / "Process all ticks" per il passaggio di validazione finale — è la simulazione più vicina alle condizioni di mercato reali, anche se è la più lenta.
- Utilizzare l'interpolazione delle candele per un'iterazione rapida. Durante lo sviluppo o la messa a punto di una strategia, "4 ticks at OHLC" fornisce un feedback rapido e affidabile senza dover scaricare l'intera cronologia dei tick.
- Adattare la scelta del metodo di interpolazione/filtro tick alla logica della strategia. Una strategia che reagisce ai prezzi OPEN si comporta diversamente con "4 ticks at OHLC" rispetto a "Tick on Close" — assicurarsi che il metodo di test scelto corrisponda a ciò che effettivamente attiva la logica della strategia nel mondo reale.
- Attenzione alle interazioni con MAX.SLIPPAGE. Se la strategia si basa su ordini STOP, testare sia con che senza MAX.SLIPPAGE per capire come gli scenari di gap e di tick OPEN potrebbero convertire gli ordini in esecuzioni LIMIT.
- Ricordare: le performance passate mostrate nel tester non sono un indicatore affidabile delle performance future — validare sempre ulteriormente in un ambiente demo prima di passare al conto reale.