In questo articolo descriviamo come indicizzare i dati e le variabili con Tradingview per il trading algoritmico, cioè come pine-script indicizza i valori all’interno di strutture dati, quindi è articolo un po’ complesso da capire per i neofiti della programmazione.
In Pine-script, ci sono alcune nozioni di base che dobbiamo comprendere affinché le nostre capacità di programmazione crescano e si consolidano. In effetti, alcune di queste nozioni di base sono così fondamentali che, anche se non abbiamo intenzione di scrivere strategie complete, conoscere queste nozioni è utile per leggere o modificare molte delle strategie e indicatori open source già disponibili nella community di Tradingview. Questo articolo non può coprire tutti i concetti fondamenti di pine-script (sarebbe troppo lungo) ma possiamo iniziare a descriverli. In DataTrading.info sono disponibili altri articoli per approfondire le funzionalità di Tradingview.
Indicizzare i dati e le variabili con Tradingview
In poche parole, l’indicizzazione è un modo per fare riferimento/leggere un valore memorizzato in una specifica posizione all’interno di una struttura dati, ad esempio una lista. L’indicizzazione è particolarmente utile quando non conosciamo gli elementi all’interno di una lista e quindi facciamo riferimento agli elementi tramite un numero.
Per comprendere meglio questo concetto, facciamo un esempio nella vita reale. Immaginiamo di avere una lista della spesa, come la seguente:
Se ci chiediamo “qual è il terzo elemento della lista?” e rispondiamo “Spaghetti”, stiamo facendo una indicizzazione! Abbiamo specificato un numero che rappresenta una posizione nell’elenco e abbiamo trovato l’oggetto che si trova in quella posizione della lista.
Indicizzazione in Pine-Script
In pine-script, ogni “variabile” è in realtà una lunga lista di valori memorizzati. Dopo la visualizzazione di ogni nuova barra, l’intero script è nuovamente eseguito e si aggiunge nuovo valore a ciascuna lista dei prezzi. In altre parole, le variabili “interne” open
, high
, low
e close
sono in realtà liste molto lunghe di valori (prezzi).
Se nel codice facciamo riferimento alla variabile close
, pine-script restituisce il valore più recente all’interno della lista dei prezzi di chiusura. Quindi, come accediamo ad altri elementi della lista? Tramite l’indicizzazione. Per indicizzare la lista, aggiungiamo le parentesi quadre []
alla fine del nome della lista e specifichiamo un numero , ad esempio close[2]
. Ogni numero rappresenta una diversa posizione nella lista a partire da zero. Zero è il valore corrente, quindi le due istruzioni close
e close[0]
restituiscono lo stesso valore.
Per capire come i numeri di indice si riferiscono a valori diversi in momenti diversi, vediamo la seguente immagine:
Il grafico di prezzi immaginari mostra il prezzo di chiusura sul timeframe orario. Sotto il grafico, abbiamo posizioni dell’indice che puntano alla lista dei prezzi di chiusura orari. Notiamo che 0
è il valore più recente ed 11
è il valore più vecchio sul grafico.
Se scriviamo close[5]
in uno script contenente i dati del grafico immaginario e lo eseguiamo sulla barra “NOW “, otteniamo il valore $10.
È importante sottolineare che lo script è eseguito quando arriva ogni nuova barra OHLC e aumenta la dimensione della lista. Poiché l’indice inizia sempre dalla barra più recente, close[5]
restituirà un valore diverso dopo l’acquisizione di ogni nuova barra. Se eseguiamo di nuovo lo script alle 13:00 (che non è ancora nel grafico), close[5]
restituisce $ 30, perchè questo valore è ora il quinto valore più recente.
Codice di Pine-script
Per capire come indicizzare i dati in Pine-script di Tradingview, apriamo l’editor di pine-script. Se non sai come fare, puoi leggere l’articolo il primo Script con Tradingview per screenshot e istruzioni dettagliate.
E’ sufficiente incollare il seguente codice nell’editor, modifichiamo i numeri di indice e aggiungiamolo al grafico.
//@version=3
study("Index Playground")
plot(close, color=blue, linewidth=2)
plot(close[5], color=orange, linewidth=2)
La seguente immagine mostra un grafico con due esempi. Nella prima sottotrama usiamo le impostazioni del precedente codice precedente, mentre nella seconda usiamo un indice di 50.
Notiamo che all’aumentare dell’indice le due linee seguono lo stesso percorso, la differenza è che la linea arancione è 5 o 50 barre in ritardo rispetto la linea blu. Questo da un’idea di come lo script è eseguito e la lista dei prezzi close è aggiornata ad ogni nuova barra. Possiamo vedere che ad ogni esecuzione dello script, la funzione plot()
per la linea arancione considera il valore della lista dei prezzi di chiusura di 5 o 50 barre precedenti e lo traccia “now”.
Codice completo
In questo articolo abbiamo descritto come indicizzare i dati e le variabili 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