creare un backtest realistico con Tradingview

Creare un backtest realistico con Tradingview

In questo articolo approfondiamo le modalità corrette per creare un backtest realistico con Tradingview per il trading algoritmico. In DataTrading.info abbiamo pubblicato alcuni articoli specificamente mirati per aiutare i principianti ad iniziare con il trading algoritmico. Tali articoli si sono concentrati sul “come” implementare qualcosa su Backtrader o su Tradingview.

Tuttavia, usare un linguaggio o un framework specifico è solo una parte del lavoro. Ci sono anche idee, concetti, fondamenti e best practice di backtesting che sono ugualmente importanti da comprendere e applicare a qualsiasi linguaggio di programmazione o framework. Un particolare aspetto merita un approfondimento specifico.

Creare un backtest realistico con Tradingview

E’ possibile modificare una strategia per anticipare l’entrata nei trade? Queste sono due domande che potrebbero essere molto frequenti le prime volte che si effettuano i backtest. Abbiamo scoperto che esiste un comune malinteso sulle modalità con cui sono eseguiti i backtest di una strategia. Questo può portare i neofiti a credere che ci sia un problema con il loro codice, ma nella maggior parte dei casi non si tratta di un errore.

Se stai leggendo questo e hai una domanda simile, possiamo iniziare dicendo che non c’è assolutamente niente di sbagliato nel chiederlo. In effetti, è sempre bene essere scettici sui risultati che sono ottenuti con un backtest. Quando guardiamo i grafici, è facile capire perché i neofiti possono credere che il loro backtest non funziona in modo ottimale. E’ anche il motivo per cui gli indicatori possono sembrare buoni “sulla carta”, ma quando analizziamo le prestazioni nel mondo reale li troviamo carenti. Diamo un’occhiata ad alcuni semplici esempi che dimostrano come creare un backtest realistico con Tradingview e rispondere alla domanda che alcune persone potrebbero chiedersi  nel vedere che i trade sono in ritardo.

Esempio 1

I seguenti screenshot sono tratti da una semplice strategia di crossover della media mobile.

Creare un backtest realistico con Tradingview

Nella prima immagine possiamo vedere che le medie mobili si incrociano prima che la strategia entri long. La strategia entra all’apertura della candela  successiva al crossover. Alcune persone potrebbero provare a entrare nel momento in cui avviene il crossover e quindi pensano che entrare nella candela successiva sia un ritardo. Tuttavia, questo è rischioso per un paio di motivi.

  • Il segnale non è confermato finché la candela non è chiusa. Quindi, nel mondo reale, il primo momento in cui possiamo entrare sarebbe l’apertura della barra successiva.
  • Durante il backtest su un singolo timeframe, non disponiamo dei dati relativi ai movimenti del prezzo tra l’apertura e la chiusura della barra. Ha toccato prima i massimi o i minimi? È rimbalzato più volte tra i due? A meno che non stiamo lavorando su più timeframe o riproducendo i dati per l’intera giornata, non disponiamo di queste informazioni. Pertanto, è impossibile sapere esattamente quando sarebbe stato aperto un trade tra le barre e a quale prezzo avremmo potuto entrare.

Esempio 2

Nella seconda immagine di seguito, le medie mobili si incrociano tra le barre.

Creare un backtest realistico con Tradingview

Le linee della media mobile sono disegnate da punto a punto. A seconda dell’angolo delle linee, possono facilmente incrociarsi tra le barre piuttosto che direttamente su di esse. Questo significa che il crossover non è correlato al tempo. Ad esempio, se un crossover avviene a metà strada tra le barre giornaliere non significa che l’incrocio delle medie mobili sia avvenuto esattamente dopo 12 ore.

Esempio 3: Un ritardo di 2 barre – Cosa sta succedendo?

Nel terzo screenshot, il problema sembra peggiorare! Ora siamo in ritardo di 2 candele! Questo può far pensare ad un bug la prima volta che lo si vede. C’è qualcosa che non va nello script?

Creare un backtest realistico con Tradingview

Tuttavia, se diamo un’occhiata più da vicino, sebbene sembri che le linee abbiano attraversato 2 barre prima dell’entrata, i valori dell’indicatore mostrano che in realtà le barre non si sono incrociate fino alla barra successiva.

Tradingview-2-bar-annotated

È possibile entrare prima?

Sì, possiamo impostare “Ricalcola ad ogni tick” nella scheda delle proprietà della strategia. In questo modo possiamo entrare non appena viene soddisfatta una condizione sul tick! Nota: Questo è possibile solo per i dati in tempo reale (ad esempio i Forward Test, dove si usano i dati tick per tick). I dati storici  sono forniti barra per barra. In altre parole, una barra equivale a un tick per i dati storici. 

Per creare un backtest realistico con Tradingview dobbiamo quindi valutare attentamente se inserire i tick in tempo reale. Se entriamo e usciamo dai trade prima che una candela si sia chiusa, il segnale su cui pensiamo di entrare non è stato ancora confermato. Il prezzo potrebbe facilmente girarsi e invalidare il segnale. Inoltre, non stiamo facendo trading sullo stesso timeframe. In realtà stiamo negoziando l’azione del prezzo su un timeframe inferiore. Se vogliamo entrare prima nei trade, è meglio fare trading con un timeframe inferiore. Possiamo farlo mentre facciamo riferimento ai valori nel timeframe più elevato per avere la conferma.

Tradingview-recalc-on-every-tick

Conclusione

Abbiamo usato la parola “ritardo” molte volte in questo articolo e forse senza una buona ragione, ma  è la prima cosa che viene in mente quando vediamo le differenze nei segnali dei trade nel grafico. Possiamo vedere che alla fine non ci sono ritardi, ma una spiegazione logica per ogni caso. Si spera che questo articolo possa aiutare a risparmiare tempo e fatica nel debug di una strategia.

Codice completo

In questo articolo abbiamo descritto come creare un backtest realistico con Tradingview per il trading algoritmico. Per il codice completo riportato in questo articolo, si può consultare il seguente repository di github:
https://github.com/datatrading-info/TradingView

Scroll to Top