Pine Script Tutorial in Italiano – Backtest Strategia su TradingView

Stai cercando di ottimizzare una strategia per un Trading Bot o un Trading System?

Vuoi semplicemente confrontare differenti approcci quantitativi di Trading ad un Mercato?

Vuoi vedere quali indicatori funzionano meglio per prendere posizioni, dati alla mano?

Uno dei tool più chiari, completi, personalizzabili e, non ultimo, gratuito, è quello messo a disposizione da TradingView. L’unico ostacolo piò essere il suo linguaggio di programmazione, a tratti non facilissimo.

In questo articolo, con anche l’ausilio di un video approfondito, vi offro un Pine Script Tutorial in Italiano, per impararne le basi e permettervi di scrivere uno script di Backtest di una vostra strategia su TradingView.

Che cos'è Pine Script?

Pine Script è il linguaggio di programmazione adottato da TradingView, che permettere di scrivere nuovi indicatori o nuove strategie. E’ molto simile al JavaScript, ma presenta alcune particolarità che ne rendono comunque necessario lo studio.

Nel tutorial di oggi, lo scopo non è insegnarvi a programmare, ma soltanto ad apprendere le funzioni, i comandi e la sintassi che serve per impostare uno script di base di Backtesting di una strategia. Eventualmente, approfondiremo in seguito funzioni più avanzate, ma un passo alla volta.

Cosa serve per iniziare?

Soltanto un account (anche gratuito) di TradingView.

Ovviamente, occorre anche avere in testa la strategia che si vuole tradurre in codice.

Una volta aperto TradingView, si può accedere all’Editor Pine dalla toolbar in basso, come mostrato nell’immagine sottostante.

La strategia che vedete scritta nell’Editor è quella che userò a titolo esemplificativo. Essa funziona in questa maniera:

Entra LONG se il prezzo di chiusura della candela sul TF corrente è maggiore della EMA 30 giornaliera e nel frattempo il prezzo chiude sotto almeno il 2% rispetto alla banda di Bollinger inferiore su Time Frame orario.

Chiude con un take profit o stop loss del 5%.

Entra SHORT se il prezzo invece gravita sotto la EMA 30 D e nel contempo la candela chiude sopra il 2% della Banda di Bollinger superiore disegnata su time frame orario. SL e TP sempre al 5%

Tutorial Pine Script in Italiano backtest tradingview
Editor Pine: Come si presenta ed esempio di Strategia compilata.

Pine Script: Funzioni e Sintassi

Le funzioni utilizzate nell’esempio, e che vanno imparate per prime, sono di due tipi:

  1. Aritmetiche (utilizzate per definire indicatori). Esempio: sma (Simple Moving Average)
  2. Procedurali (dicono allo script le nostre regole, o azioni aggiuntive da compiere). Due esempi sono “plot”, per disegnare su grafico, oppure strategy.entry/exit, per dire quando e come entrare/uscire a Mercato.
Indicatori Pine Script TradingView
Caricando un Indicatore nell’Editor, se ne può visionare il codice sorgente.

Il mio consiglio è di iniziare definendo tutti gli indicatori previsti nella strategia. Per fare questo non è necessario scriverli di proprio pugno, in quanto si può fare un pratico copia/incolla del codice sorgente dell’indicatore stesso.

Come si fa a vederlo? E’ sufficiente, sempre nell’editor Pine, cliccare “Nuovo” e selezionare l’indicatore desiderato.

Questo vi dovrebbe bastare per inizializzare tutti quanti gli indicatori. Tutto ciò che c’è da modificare sono i parametri.

Un’altra funzione che ho utilizzato spesso è security.

Essa aggancia un indicatore ad un determinato time frame, a prescindere da quello selezionato di volta in volta nel grafico.

Ad esempio, l’ho usata sulla EMA, per applicarla su TF giornaliero. La sintassi è semplicissima:

security (tickerid, TF, indicatore), dove tickerid va scritto così come lo vedete, in quanto utilizza il ticker selezionato sul grafico. TF indica il time frame, e va scritto in minuti se quest’ultimo è minore di 1 giorno, oppure in lettera (D, W, M). indicatore invece riguarda la formula che volete agganciare al TF specificato. Essa deve essere già stata definita nello script.

strategy.entry ed exit, infine, nell’esempio, hanno le seguenti sintassi:

strategy.entry (“nome strategia”, direzione, condizione). Nome strategia è un identificativo definito da noi, da scrivere tra virgolette. Direzione può essere strategy.long o strategy.short. La condizione conviene preimpostarla come variabile (nell’esempio le ho chiamate ConditionEntryL ed S per Long e Short), e poi richiamarla. La sintassi è when = condizione.

strategy.exit (“nome strategia”, take profit, stop loss). Nome strategia deve corrispondere a quello utilizzato in strategy.entry. take profit è definito in tickers, ovvero unità minima in tradingview per la coppia considerata (può essere in satoshi, in centesimi di USD, dipende!). La sintassi è profit = takeprofit. Per lo stop loss vale la stessa considerazione. SL e TP non devono essere per forza uguali, come nell’esempio.

Close è una funzione built-in che considera il prezzo di chiusura della candela.

Consultazione del Report

Una volta ultimata la compilazione della strategia, cliccando “Aggiungi al grafico“, lo script viene eseguito ed il sistema lanciato sui dati a disposizione.

Automaticamente, viene visualizzato il report di profitto della strategia, che mostra alcuni dati fondamentali, quali:

  • Percentuale posizioni chiuse in profitto
  • Profitto netto alla fine del periodo di test
  • Perdita media
  • Guadagno medio (per operazione)

Saper leggere questi dati, permette di affinare la strategia. Vi faccio qualche esempio.

Nella strategia dimostrativa, TP e SL erano equidistanti, quindi la percentuale di posizioni chiuse in profitto diventa un dato predominante nella sua valutazione.

Se, al contrario, le posizioni avessere avuto un risk/reward ratio maggiore, si potrebbe comunque risultare globalmente profittevoli anche chiudendo più posizioni in perdita che in guadagno.

In base a questi dati, si può quindi costruire un risk management e position sizing opportuno al fine di ottimizzare il rendimento finale.

Pine Script Tutorial in Italiano - Video

Per approfondire quanto detto fin’ora, vi lascio un video, girato da me, che spiega tutto in maggior dettaglio.

Codice Sorgente della Strategia di Esempio

Vi lascio, infine, il codice sorgente della strategia usata sopra, pronto per essere copiato, incollato e modificato da chiunque di voi su Pine Script!

//@version=3
strategy("Bollinger + EMA", overlay=true)

//inizializzazione parametri

//medie mobili
mm = ema(close, 30)
mmd = security(tickerid, "D", mm)

//bande di Bollinger
basis = sma(close, 20)
dev = 2 * stdev (close, 20)
upper = basis + dev
lower = basis - dev
editedlower = security(tickerid, "60",lower*0.98)
editedupper = security(tickerid, "60",upper*1.02)

//disegno su grafico
plot (mmd, color = red)
plot (basis, color = black)
plot (upper)
plot(lower)
plot (editedlower, color=green)
plot (editedupper, color=green)

//condizioni ingresso ed uscita mercato
ConditionEntryL = (close > mmd) and crossunder (close, editedlower)
ConditionEntryS = (close < mmd) and crossover (close, editedupper)
tp = 0.05*close*100000000

//ingressi ed uscite Mercato
strategy.entry ("BBlong",strategy.long, when = ConditionEntryL)
strategy.exit ("BBlong", profit = tp, loss = tp)

strategy.entry ("BBshort",strategy.short, when = ConditionEntryS)
strategy.exit ("BBshort", profit = tp, loss = tp)

1 thought on “Pine Script Tutorial in Italiano – Backtest Strategia su TradingView

  1. Simone Risposta

    Ciao dopo aver visto il tuo video ho deciso di iniziare ad imparare questo linguaggio di tradingview mentre stavo facendo la mia strategia mi sono imbattuto in un problema quello di convertire una variabile series in float ho provato a cercare su internet e anche nella guida di tradingview ma purtroppo non ho trovato una soluzione. Hai una soluzione? Premetto che ho cominciato da poco con pine script.

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.