Backtest più precisi con il Bar Magnifier

May 30, 2022

Gli abbonati Premium hanno ora la possibilità di ottenere risultati più realistici durante il backtest automatico delle proprie strategie grazie all’opzione Bar Magnifier, che consente di analizzare nel dettaglio i movimenti interni di una barra e garantire un’esecuzione più fedele degli ordini. Quando questa opzione è attiva, vengono meno le supposizioni che l’emulatore broker è costretto a fare in condizioni normali, ovvero basandosi solo sui valori OHLC delle barre storiche.

Il timeframe usato dal Bar Magnifier per eseguire le entrate si modifica dinamicamente in base al timeframe in uso nel grafico. Questa tabella elenca tutte le corrispondenze:

Timeframe grafico, T Timeframe Bar Magnifier
1S < T < 30S 1S
30S <= T < 5 5S
5 <= T < 30 15S
30 <= T < 60 1
60 <= T < 240 5
240 <= T < D 15
D <= T < W 60
W <= T < 2W 120
T >= 2W D

Tabella 1. Timeframe di riferimento intrabar

Ecco un esempio di una strategia che usa un ordine stop senza l’opzione Bar Magnifier:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = false)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

L’emulatore broker piazza un ordine stop sulla barra #10381 e lo esegue al prezzo di 157.0 sulla barra successiva, non appena la condizione stop = 157.0 si realizza. Questo perchè ipotizza sempre che il prezzo all’interno della barra si sia mosso dal valore di apertura, al minimo, poi al massimo ed infine alla chiusura. Dopo qualche barra (11 giorni per il timeframe corrente), si realizza la condizione per uscire dalla posizione (stop price = 156.0):

Quando è attivo Bar magnifier (parametro use_bar_magnifier = true), i prezzi di entrata ed uscita sono inalterati; tuttavia, l’uscita avviene nella stessa barra in cui si è verificata l’entrata:

//@version=5
strategy("bar_magnifier_demo", overlay = true, use_bar_magnifier = true)

if bar_index  == 10381
    strategy.entry("Long", strategy.long, stop = 157.0)
    strategy.exit("Exit", stop = 156.0)

Controllando il timeframe inferiore per lo stesso simbolo (in questo caso un grafico orario, come stabilito dalla tabella qui sopra) si può notare che i movimenti del giorno hanno portato il prezzo a toccare la condizione di stop = 156.0 poco dopo la condizione di entrata a 157.0:

Bar Magnifier permette quindi all’emulatore broker di accedere ai movimenti di prezzo verificatisi nei timeframe inferiori, rendendo il tutto più affidabile e veritiero.

Ecco un esempio di strategia che usa i timeframe inferiori per ottenere un’esecuzione più precisa degli ordini limite e stop:

//@version=5
strategy(
 title                  =   "Magnifier On",
 overlay                =   true, 
 calc_on_order_fills    =   true,
 calc_on_every_tick     =   true,
 precision              =   3, 
 default_qty_type       =   strategy.cash, 
 currency               =   currency.USD, 
 default_qty_value      =   1000, 
 initial_capital        =   1000,
 use_bar_magnifier      =   true)

trailPoints = input.int(150, "Trail Points (in ticks)")
trailOffset = input.int(100, "Trail Offset (in ticks)")
stopSize    = input.int(300, "Stop Offset (in ticks)")

longCondition = bar_index % 25 == 0 and not (strategy.closedtrades.exit_bar_index(strategy.closedtrades - 1) == bar_index)

if (longCondition)
    strategy.entry("Long", strategy.long)

strategy.exit("Exit", loss = stopSize, trail_points = trailPoints, trail_offset = trailOffset)

I profitti della strategia di test peggiorano del 50% quando Bar Magnifier è attivo, a simboleggiare quanto sia importante avere la migliore esecuzione possibile in fase di backtesting:

Bar Magnifier può essere attivato nella finestra delle “Impostazioni/Proprietà” della strategia:

Disabilitandolo, la strategia viene ricalcolata con la vecchia logica:

Per rimanere sempre aggiornati sulle novità di Pine, leggi le Note di rilascio. In alternativa, l’account PineCoders condivide le comunicazioni tramite il canale Telegram Squawk Box e tramite l’acount Twitter, oltre che nella chat pubblica presente su TradingView.

Speriamo che questa importante novità possa esservi utile. Continuate ad inviarci feedback e suggerimenti per migliorare ancora. TradingView esiste per voi, grazie a voi.

Look first Then leap

TradingView è realizzato per te. Assicurati di sfruttare al massimo tutte le sue funzionalità
Apri grafico