Come creare indicatori TA su TradingView
Home
Articoli
Come creare indicatori TA su TradingView

Come creare indicatori TA su TradingView

Avanzato
Pubblicato Aug 28, 2020Aggiornato Jun 15, 2023
13m

Introduzione

Senza i giusti strumenti di trading, non puoi condurre un'analisi tecnica efficace. Una forte strategia di trading ti aiuterà a evitare errori comuni, migliorare la tua gestione del rischio e aumentare le tue capacità nell'individuare e sfruttare opportunità.
Per molti, TradingView è la piattaforma di riferimento per l'analisi dei grafici. Con una vasta gamma di strumenti per l'analisi tecnica, la potente applicazione web HTML5 viene utilizzata da milioni di utenti per tracciare i movimenti nei mercati Forex, crypto e azionari tradizionali.
TradingView offre molte funzionalità utili: consente di monitorare asset negoziati su un grande numero di piattaforme di trading e pubblicare idee di trading all'interno del suo social network. In questo articolo, ci concentreremo sulla sua personalizzazione. Utilizzeremo Pine Script, il linguaggio di programmazione di TradingView, che concede un controllo granulare sui nostri layout grafici.

Cominciamo!


Cos'è Pine Script?

Pine Script è un linguaggio di scripting che puoi utilizzare per modificare i tuoi grafici su TradingView. La piattaforma ti fornisce già un grande numero di funzionalità per farlo, ma Pine Script ti permette di fare un ulteriore passo avanti. Che tu voglia cambiare i colori delle tue candele o fare backtest di una nuova strategia, l'Editor Pine ti consentirà di personalizzare i grafici in tempo reale come preferisci.
Il codice stesso è documentato in modo eccellente, quindi assicurati di dare un'occhiata al manuale utenti per maggiori informazioni. Il nostro obiettivo in questo tutorial è discutere le basi e introdurre indicatori che possono tornare utili per il trading di criptovalute.


Primi passi

Iniziare a usare Pine Script è semplicissimo. Qualsiasi codice che scriviamo viene eseguito sui server di TradingView, quindi possiamo accedere all'editor e sviluppare i nostri script da un browser – senza dover scaricare o installare altro.

In questo tutorial, analizzeremo la coppia di valute Bitcoin/Binance USD (BTCBUSD). Se ancora non ne hai uno, crea un account gratuito (è disponibile anche un abbonamento pro, ma non è necessario per questa guida). 
Segui questo link, e vedrai un grafico simile a quello che vedi qui sotto:


Il tuo sarà probabilmente più aggiornato.


Da qui, vogliamo arrivare al grafico multifunzione – clicca sul pulsante per accedervi. Così facendo otteniamo una visione molto più dettagliata, strumenti per disegnare e opzioni per tracciare linee di tendenza, tra le altre cose.


Il grafico multifunzione. Puoi regolare l'intervallo di tempo cliccando sui periodi in alto a sinistra.


Non ci soffermeremo sulle modalità d'uso dei vari strumenti disponibili, ma se vuoi approfondire l'analisi tecnica, ti consigliamo fortemente di studiarli meglio. In basso a sinistra (evidenziato nell'immagine), vedrai alcune schede – clicca su Editor Pine.


L'Editor Pine



Questo editor è dove avviene la magia. Gli spiegheremo cosa vogliamo fare, e cliccando su Aggiungi al Grafico vedremo le nostre annotazioni apparire nel grafico sopra. Ricorda che includendo diverse annotazioni contemporaneamente il grafico diventerà caotico e complicato, quindi le rimuoveremo quando passiamo all'esempio successivo (tasto destro del mouse nel grafico > Rimuovi Indicatori).
Come puoi vedere abbiamo già qualche riga di codice. Clicchiamo su Aggiungi al Grafico per vedere cosa succede.



Un secondo grafico viene aggiunto sotto all'originale, e in questo caso rappresenta gli stessi dati. Sposta il mouse sopra Il mio Script e clicca sulla croce per rimuoverlo. Ora, diamo un'occhiata al codice.
study("Il mio Script")
La prima linea serve solo a impostare la nostra annotazione. Richiede il nome che vogliamo dare all'indicatore (in questo caso, "Il mio Script"), ma ci sono anche altri parametri opzionali che possiamo aggiungere. Uno di questi è overlay, che spiega a TradingView di piazzare l'indicatore sul grafico esistente (invece di collocarlo in un nuovo segmento). Come puoi vedere dal nostro primo esempio, di default è false. Anche se non lo vedremo in azione ora, overlay=true aggiunge l'indicatore al grafico esistente.
plot(close)
Questa linea è l'istruzione di tracciare il prezzo di chiusura di Bitcoin. plot traccia semplicemente un grafico a linee, ma possiamo anche rappresentare candele e barre, come vedremo tra poco. 

Ora, facciamo una prova con queste istruzioni:

//@version=4
study("Il mio Script", overlay=true)
plot(open, color=color.purple)
Una volta aggiunta questa sezione di codice, dovresti vedere un secondo grafico (simile all'originale ma spostato verso destra). Non abbiamo fatto altro che tracciare il prezzo di apertura, e siccome l'apertura del giorno corrente è la chiusura del giorno precedente, è logico che i due grafici abbiano un andamento identico.
Ok! Sbarazziamoci delle annotazioni che abbiamo inserito (ricorda, basta cliccare con il tasto destro e selezionare Rimuovi Indicatori). Sposta il mouse su Bitcoin / BUSD e clicca il pulsante Nascondi per eliminare anche il grafico originale.

Molti trader preferiscono i grafici a candele in quanto forniscono più informazioni di una semplice linea come quella che abbiamo appena creato. Ora andremo ad aggiungerle.

//@version=4
study("Il mio Script", overlay=true)
plotcandle(open, high, low, close)
È un buon inizio, ma la mancanza di colori lo rende un po' monotono. Idealmente, dovremmo avere candele rosse quando l'apertura è superiore alla chiusura per un determinato intervallo, e candele verdi quando la chiusura supera l'apertura. Aggiungeremo una linea sopra alla funzione plotcandle():
//@version=4
study("Il mio Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close)

Questa nuova istruzione esamina ogni candela e controlla se l'apertura è superiore o uguale alla chiusura. In caso positivo, significa che i prezzi sono scesi nell'arco del periodo, quindi colorerà di rosso la candela. In caso contrario, la colorerà di verde. Modifichiamo la funzione plotcandle() per introdurre questo schema di colori:

//@version=4
study("Il mio Script", overlay=true)
colors = open >= close ? color.red : color.green
plotcandle(open, high, low, close, color=colors)

Rimuovi gli indicatori presenti nel grafico se non l'hai già fatto, e aggiungi questo. Ora dovresti vedere qualcosa di simile a un normale grafico a candele.


Fantastico!


Tracciare medie mobili (MA)

Ora conosciamo alcune delle basi. Passiamo al nostro primo indicatore personalizzato – la media mobile esponenziale, o EMA. È uno strumento prezioso, in quanto ci permette di filtrare il rumore nel mercato e smussare la price action. 
L'EMA è leggermente diversa dalla media mobile semplice (SMA), in quanto dà più peso ai dati più recenti. Tende ad essere più reattiva ai movimenti improvvisi e spesso viene usata per strategie a breve termine (per esempio, nel day trading).


Media mobile semplice (SMA)

Già che ci siamo possiamo tracciare la SMA, giusto per confrontare le due tipologie. Aggiungi questa linea al tuo script:

plot(sma(close, 10))

Questa istruzione traccia la media dei dieci giorni precedenti. Modifica il numero tra parentesi per vedere come la curva cambia quando prende in considerazione lunghezze diverse.


La SMA, basata sui dieci giorni precedenti.


Media mobile esponenziale (EMA)

L'EMA sarà un po' più complicata da comprendere, ma non preoccuparti. Per prima cosa esaminiamo la formula:

EMA = (Chiusura - EMA del Giorno Precedente) * Moltiplicatore - EMA del Giorno Precedente

Cosa ci dice questa equazione? Per ogni giorno, calcoliamo una nuova media mobile basata su quella del giorno precedente. Il moltiplicatore è ciò che “dà peso” all'intervallo più recente, e viene calcolato con la seguente formula:

Moltiplicatore = 2 / (Lunghezza dell'EMA + 1)

Analogamente alle medie mobili semplici, dobbiamo specificare la lunghezza dell'EMA. Da un punto di vista sintattico, la funzione per tracciare l'EMA è simile a quella per la SMA. Tracciala accanto alla SMA, così puoi metterle a confronto:

//@version=4
study("Il mio Script", overlay=true)
plot(sma(close, 10))
plot(ema(close,10))


Puoi vedere una leggera differenza tra i due tipi di MA.



Script built-in

Finora, abbiamo scritto il nostro codice manualmente per prendere confidenza. Ora andiamo a introdurre qualcosa che ci fa risparmiare tempo, soprattutto se stiamo creando script più complessi e non vogliamo iniziare da zero.

Nella parte in alto a destra del tuo editor, clicca su Apri e poi su Nuovo script di default. Vedrai un menù con ogni sorta di indicatori tecnici. Clicca su <0>Moving Average Exponential per visualizzare il codice sorgente usato in un indicatore EMA.



Procedi aggiungendolo al grafico.


Questo è diverso dal nostro – avrai notato le funzioni input(). Sono ottime dal punto di vista dell'usabilità in quanto puoi cliccare su questa casella…



...e modificare facilmente alcuni dei valori in una finestra pop-up cliccando sull'ingranaggio delle Impostazioni.



Aggiungeremo un paio di funzioni input() nel nostro prossimo script per dimostrarlo.


Tracciare l'indice di forza relativa (RSI)

L'Indice di Forza Relativa (RSI) è un altro indicatore essenziale nell'analisi tecnica. È conosciuto come un indicatore di slancio, ovvero misura il tasso con cui gli asset vengono comprati e venduti. Rappresentato su una scala da 0 a 100, l'RSI cerca di informare gli investitori su quali asset sono ipercomprati o ipervenduti. In genere, un asset può essere considerato ipervenduto se presenta un punteggio inferiore o pari a 30, e ipercomprato con un punteggio superiore o pari a 70.
Visitando Apri > Nuovo script di default > RSI Strategy, puoi vederlo con i tuoi occhi. Generalmente l'RSI viene misurato su periodi di 14 (14 ore o 14 giorni), ma sei libero di modificare questa impostazione per adattarla alla tua strategia.
Aggiungi l'indicatore al grafico. Ora dovresti vedere qualche freccia (definita dalla funzione strategy.entry() nel codice). RsiLE indica una potenziale opportunità di long sull'asset in quanto potrebbe essere ipervenduto. RsiSE evidenzia possibili punti in cui aprire short sull'asset quando è in condizioni di ipercomprato. Ricorda che, come per tutti gli indicatori, non dovresti necessariamente fare affidamento a questi segnali come una prova definitiva che i prezzi saliranno/scenderanno.


Backtesting

Abbiamo a disposizione un modo per mettere alla prova i nostri indicatori personalizzati. Anche se le prestazioni passate non garantiscono risultati futuri, il backtesting dei nostri script può darci un'idea della loro efficacia nell'identificare segnali.

Di seguito faremo un esempio con un semplice script. Creeremo una strategia lineare che apre una posizione long quando il prezzo di BTC scende al di sotto degli 11.000$ e chiude la posizione quando il prezzo supera gli 11.300$. Possiamo quindi vedere quanto questa strategia sarebbe stata redditizia in passato.

//@version=4
strategy("ToDaMoon", overlay=true)
enter = input(11000)
exit = input(11300)
price = close

if (price <= enter)
    strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip")
if (price >= exit)
    strategy.close_all(comment="SellTheNews")
Qui abbiamo definito entry e exit come variabili – entrambi sono input, quindi possiamo cambiarle nel grafico più tardi. Inoltre, abbiamo impostato la variabile price, che assume la chiusura per ciascun periodo. Quindi, abbiamo introdotto logica sotto forma di istruzioni if. Se l'elemento tra parentesi è vero, il blocco indentato sottostante verrà eseguito. Altrimenti, verrà saltato.

Quindi, se il prezzo è inferiore o pari al nostro ingresso desiderato, la prima espressione risulta vera, e apriremo una posizione long. Quando il prezzo raggiunge o supera la nostra uscita desiderata, il secondo blocco verrà attivato, chiudendo tutte le posizioni aperte. 

Annoteremo il grafico con frecce che mostrano i punti di ingresso/uscita, quindi abbiamo specificato come etichettarli con il parametro commenti (in questo esempio, “BuyTheDip” e “SellTheNews”). Copia il codice e aggiungilo al grafico.


Ora puoi vedere gli indicatori sul grafico. Potresti dover ridurre lo zoom.


TradingView applica automaticamente le tue regole ai dati più vecchi. Noterai anche che passa dall'Editor Pine alla scheda Tester Strategia. Questo ti permette di visualizzare una panoramica dei tuoi potenziali profitti, una lista di operazioni e le prestazioni di ciascuna.


Posizioni che abbiamo aperto e chiuso.


Colleghiamo le cose

È ora di scrivere il nostro script personale usando alcuni dei concetti che abbiamo visto finora. Andremo a combinare EMA e RSI usando i loro valori per colorare le candele, producendo informazioni che possiamo visualizzare facilmente.

Questo non dev'essere interpretato come una consulenza finanziaria – non c'è un modo oggettivamente corretto di usare questo indicatore. Come vale per tutti gli altri, andrebbe utilizzato insieme ad altri strumenti per sviluppare una strategia propria.

Ora lavoriamo al nostro nuovo script. Rimuovi tutti i tuoi indicatori dal grafico, e nascondi il grafico originale Bitcoin/BUSD, per avere una tela bianca su cui dipingere.

Iniziamo definendo il nostro studio. Sentiti libero di assegnare il nome che preferisci, ma assicurati di impostare overlay=true.
study(title="Binance Academy Script", overlay=true)
Ricorda la nostra formula per l'EMA di prima. Dobbiamo fornire il moltiplicatore con la lunghezza dell'EMA. Rendiamolo un input che richiede un numero intero (quindi, senza decimali). Inoltre, imposteremo un valore minimo (minval), e un valore di default (defval).
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)


Usando questa nuova variabile, possiamo calcolare il valore EMA per ogni candela nel nostro grafico:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)


Fantastico. Ora passiamo all'RSI. Definiamo la sua lunghezza in modo simile:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)

E ora, possiamo calcolarlo:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)

A questo punto, introduciamo la logica che colora le candele in base ai valori dell'EMA e dell'RSI. Prendiamo una situazione in cui (a) il prezzo di chiusura della candela supera l'EMA e (b) l'RSI è superiore a 50.

Perché? Beh, potresti decidere che questi indicatori possono essere usati in parallelo per segnalare quando aprire long o short su Bitcoin. Per esempio, potresti pensare che soddisfare entrambe le condizioni suggerisce un buon momento per aprire una posizione long. O viceversa, potresti usarlo per sapere quando non aprire short, anche se altri indicatori dicono il contrario.

Quindi, la nostra prossima linea apparirà così:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
Traducendola in testo semplice, stiamo solo dicendo che se il valore dell'EMA supera il prezzo di chiusura e il punteggio dell'RSI supera 50, coloreremo la candela di verde. Altrimenti, la coloreremo di rosso. 

Ora, tracciamo l'EMA:

study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
Infine, tracciamo le candele, avendo cura di includere il parametro color:
study(title="Binance Academy Script", overlay=true)
emaLength = input(title="EMA Length", type=input.integer, defval=25, minval=0)
emaVal = ema(close, emaLength)
rsiLength = input(title="RSI Length", type=input.integer, defval=25, minval=0)
rsiVal = rsi(close, rsiLength)
colors = close > emaVal and rsiVal > 50 ? color.green : color.red
plot(emaVal, "EMA")
plotcandle(open, high, low, close, color=colors)

Ed ecco il nostro script! Aggiungilo al grafico per vederlo in azione.


Un grafico BTC/BUSD con l'indicatore EMA/RSI.


In chiusura

In questo articolo, abbiamo studiato alcuni esempi elementari di ciò che puoi fare con l'Editor Pine di TradingView. A questo punto, dovresti sentirti sicuro nel creare semplici annotazioni su grafici di prezzo per ottenere informazioni aggiuntive dai tuoi indicatori personalizzati.

In questo articolo abbiamo coinvolto solo un paio di indicatori, ma è semplice crearne di più complessi – selezionando gli script built-in dal menù Apri > Nuovo script di default o scrivendoli da solo.

Ti manca l'ispirazione? I seguenti articoli potrebbero fornire spunti per il tuo prossimo progetto: