Ti presentiamo la nuova versione (v4) del nostro linguaggio di programmazione, Pine Script. Comprende una serie di miglioramenti su tanti aspetti e la correzione di alcuni bug. Tuttavia, l’aggiornamento più importante e atteso è il supporto agli strumenti di disegno.
In questo articolo faremo una panoramica di ciò che è cambiato, ma sappi che è presente la documentazione completa e il manuale di riferimento nel caso in cui tu volessi approfondire i dettagli (puoi anche recarti direttamente alla sezione degli strumenti di disegno).
Etichette
La funzione label.new ti permette di applicare etichette al grafico, anche contenenti del testo variabile. Ecco un esempio di uno script che disegna un’etichetta contenente il prezzo di chiusura della candela:
//@version=4
study("Last Bar Price", overlay=true)
l = label.new(bar_index, na, 'last price is '+tostring(close),
color=close >= open ? color.green : color.red,
textcolor=color.white,
style=label.style_labeldown, yloc=yloc.abovebar)
label.delete(l[1])

Puoi modificare e/o rimuovere l’etichetta dopo averla create con la famiglia di funzioni
label.*
. Ecco un esempio più complesso di uno script che utilizza la funzione di creazione etichette: Pivot Points High/Low.
Linee
La funzione line.new ti permette di tracciare delle linee sul grafico. Ecco un esempio di uno script che disegna una linea tra il massimo della barra corrente e il minimo della decima barra storica (la numero 11 a partire da destra verso sinistra – nel grafico giornaliero, è la barra di 11 giorni fa):
//@version=4
study("Line", overlay=true)
l = line.new(bar_index, high, bar_index[10], low[10], width = 4)
line.delete(l[1])

Le linee possono essere modificate e/o rimosse usando le apposite funzioni della famiglia line.*
. Ecco un esempio di uno script più complesso realizzato tracciando delle line sul grafico: Zig Zag.
N.B.: Attualmente su di un grafico è possibile mostrare 50-55 disegni per singola tipologia e per singolo script (50-55 etichette, ad esempio). Si tratta di una limitazione voluta allo scopo di non sovraccaricare i server.
Gli strumenti di disegno menzionati migliorano moltissimo le capacità di Pine Script, permettendoti di integrare delle logiche complesse all’interno degli script. Ecco alcuni esempi nella nostra documentazione.
Serie di stringhe
Tra i dati che supportiamo, ora ci sono le serie di stringhe (variabili di testo). Ecco un esempio di come si possono usare le stringhe in associazione con le etichette:
//@version=4
study("Series string", overlay = true)
draw_label(title) =>
label.new(bar_index, high, text=title)
t = close >= open ? "green" : "red"
draw_label(t)
Keyword var
Una variabile dichiarata nel metodo classico viene re-inizializzata ad ogni calcolo dello script. Questo richiedeva che il codice propagasse di volta in volta il valore precedente della variabile in modo esplicito. La parola chiave var dichiara una variabile e la inizializza solo una volta, permettendo al valore della stessa variabile di essere automaticamente salvato dal momento dell’inizializzazione. Ad esempio, qui c’è uno script di esempio che conta il numero di barre verdi sul grafico:
//@version=4
study("My Script")
var s = 0.0
if close >= open
s := s + 1
plot(s)
Ogni volta che la condizione close >= open
viene soddisfatta, il valore della variabile s
sarà incrementato di uno. Il valore di inizializzazione può essere una qualsiasi espressione aritmetica.
La sintassi per dichiarare le variabili con la parola chiave var
evita l’uso del seguente codice: s := nz(s[1], s)
. Definire una variabile con il termine var
è molto utile quando si lavora con gli strumenti di disegno.
Funzioni, variabili e costanti con nuovi nomi
Su Pine Script v4 abbiamo rinominato le seguenti costanti, funzioni e variabili:
- Le costanti di colore (es. red) ora rientrano nella nomenclatura
color.*
(es. color.red). - La funzione color è stata rinominata in color.new.
- Le costanti per il tipo di input (es. integer) ora rientrano nella nomenclatura
input.*
(es. input.integer). - Le costanti per lo stile di raffigurazione (es. stile histogram) ora appartengono alla famiglia
plot.style_*
(es. plot.style_histogram). - Le costanti per lo stile della funzione hline (es. stile dotted) ora rientrano nella famiglia
hline.style_*
(es. hline.style_dotted). - Le costanti per i giorni della settimana (es. sunday) ora rientrano nella nomenclatura
dayofweek.*
(es. dayofweek.sunday). - Le variabili per il timeframe del grafico (es. period, isintraday) fanno ora parte della famiglia
timeframe.*
(es. timeframe.period, timeframe.isintraday). - La variabile interval diventa multiplier.
- Le variabili ticker e tickerid sono state rinominate rispettivamente in syminfo.ticker e syminfo.tickerid.
- La variabile n che contiene il valore indice della barra è stata rinominata in bar_index.
Abbiamo effettuato tali cambiamenti per rendere il codice più semplice da scrivere e più intuitivo da leggere. I nuovi nomi sono raggruppati, a seconda del loro scopo, sotto prefissi comuni. Ad esempio, vedrai una lista di tutti i colori disponibili se digiti ‘color’ nell’editor e premi Ctrl + barra spaziatrice.
Dichiarazione esplicita del tipo di variabile
Su Pine Script v4 non è più possibile creare variabili senza dichiarare prima la loro classe di appartenenza (vedi valore na). Questo è stato fatto per evitare tutta una serie di complicanze che possono emergere con il cambio di classe dopo l’inizializzazione. D’ora in poi, devi dichiare esplicitamente il tipo di variabile utilizzando le parole chiave o le apposite funzioni (ad esempio, float) quando inizializzi una variabile con valore na:
//@version=4
study("NA", overlay=true)
float a = na
a := if close >= open
high
else
low
plot(a)
Prova subito la nuova versione di Pine Script! Alcuni utenti hanno già avuto modo di testarlo ed hanno sviluppato tanti script interessanti con l’ausilio delle nuove funzionalità.
Ad esempio, Ricardo Santos ha scritto questi indicatori:




Joris Duyck ha creato lo script Trendlines, per illustrare le nuove possibilità offerte dall’utilizzo delle trendline.

Speriamo che questi esempi ti possano ispirare. Nella nostra chat (inglese) puoi porre domande, esporre problematiche, discutere di idee e condividere opinioni. Ci teniamo a ringraziare tutti i membri della nostra community, i Pinescripters, che hanno speso del tempo come beta tester e ci hanno aiutato a creare un prodotto migliore. Se hai domande specifiche sul linguaggio di programmazione, puoi anche utilizzare la pagina Stack Overflow.