In questo articolo descriviamo come creare un indicatore dei volumi in acquisto e vendita con Tradingview per il trading algoritmico. L’indicatore prevede di importare e classificare il volume in un timeframe basso per avere una migliore analisi del volume di acquisto e vendita rispetto ad un timeframe superiore.
L’indicatore non è migliore rispetto agli eccellenti strumenti del volume profile con l’abbonamento Pro di Tradingview. Tuttavia, può fornire alcune informazioni in più rispetto a quelle che sono attualmente disponibili per gli utenti gratuiti. Il codice mostra come usare in modo interessante le funzioni create dall’utente e la chiamata security()
che può essere replicata per altri scopi.
L’indicatore dei volumi in acquisto e vendita
L’indicatore prevede la seguente logica:
- Analizza il timeframe inferiore. Ad esempio 5 minuti quando siamo su un grafico a 1 ora.
- Crea una funzione per scorrere le candele e fare una valutazione.
- Se la candela si è chiusa al rialzo, il volume è classificato come volume in acquisto. Al contrario, in caso di chiusura al ribasso, il volume è classificato come volume in vendita
- La funzione verrà quindi passata alla funzione
security()
per essere eseguita in un timeframe inferiore. - Tutti i volumi in acquisto e in vendita del timeframe inferiore sono sommati e visualizzati sul grafico principale.
È importante notare che questo indicatore non fornisce il vero volume in acquisti o in vendite perchè si base sul semplice presupposto che se il prezzo ha chiuso al rialzo, ci devono essere stati più acquirenti che venditori mentre se ha chiuso al ribasso presuppone il contrario.
Il codice
//@version=3
study("Intra-bar Volume", overlay=false)
lower_tf = input("5", title='Lower Timeframe')
bars_in_tf = input(12, title='Bars of lower Timeframe')-1 // -1 perchè il ciclo parte da 0
balanced_volume(range)=>
vol = na
for i = 0 to range
if open[i] == close[i]
vol := na(vol) ? volume[i] : vol + volume[i]
vol
buying_volume(range)=>
vol = na
for i = 0 to range
if open[i] < close[i]
vol := na(vol) ? volume[i] : vol + volume[i]
vol
selling_volume(range)=>
vol = na
for i = 0 to range
if open[i] > close[i]
vol := na(vol) ? volume[i] : vol + volume[i]
vol
lower_buy_vol = security(tickerid, lower_tf, buying_volume(bars_in_tf))
lower_sell_vol = security(tickerid, lower_tf, selling_volume(bars_in_tf))
balanced_vol = security(tickerid, lower_tf, balanced_volume(bars_in_tf))
plot(balanced_vol, style=columns, color=black, transp=70, title='Balanced Volume')
plot(lower_buy_vol, style=columns, color=green, title='Buying Volume')
plot(lower_sell_vol, style=columns, color=red, transp=50, title='Selling Volume')
Commento al codice
L’indicatore dei volumi in acquisto e vendita si basa sull’uso intelligente di una opzione prevista dalla funzione security()
che ci passare di specificare qualsiasi funzione come attributo in input. La funzione in input è eseguita nel timeframe dove lavora security()
e si restituisce i risultati. È come eseguire uno script all’interno dello script!
Di solito, security()
è usata per richiamare una sma()
o qualche altra funzione integrata. in Tradingview. Possiamo però richiamare anche funzioni personalizzate! L’unica limitazione è che la funzione deve restituire un singolo valore. Questo è il motivo per cui abbiamo diviso buying_volume
e selling_volume
in due funzioni separate.
Parlando di funzioni, i neofiti di pinescript possono leggere l’articolo introduttivo alla creazione di funzioni.
Barre del timeframe inferiore
Per usare questo indicatore, dobbiamo calcolare quante barre del timeframe inferiore sono contenute nel timeframe del grafico principale. Ad esempio, le impostazioni predefinite sono configurate per eseguire l’indicatore su un grafico 1H. Di conseguenza, dobbiamo impostare l’input “Bars on Lower Timeframe” su 12, dato che ci sono 12 barre da 5 minuti in 60 minuti.
Naturalmente, l’ideale sarebbe automatizzarlo ma sembra essere piuttosto impegnativo.
Timeframe a 5 minuti
L’indicatore prevede di default i 5 minuti per il timeframe inferiore perché le barre sul timeframe di 1 minuto sono spesso combinate/consolidate quando non c’è movimento del prezzo. Dal momento che stiamo semplicemente scorrendo un numero x di barre nel timeframe inferiore, può causare un problema quando le barre sono consolidate. Possiamo verificarlo facilmente tracciando la differenza tra time
e time[1]
.
Ecco l’output del grafico a 1 minuto.
Possiamo vedere che ci sono molti periodi in cui una barra rappresenta in realtà 2 o più minuti! Tuttavia, se passiamo al grafico a 5 minuti, l’output è molto più consistente.
Quindi dobbiamo analizzare lo strumento che vogliamo negoziare e trovare il timeframe più basso con barre consolidate limitate per ottenere i migliori risultati.
Il grafico
Posizionando l’indicatore sul grafico otteniamo quanto segue:
Il grafico visualizza fino a 3 colonne. Una colonna verde per il volume degli acquisti, una colonna rossa per il volume delle vendite e una colonna nera per il volume bilanciato. Il volume bilanciato è dove né gli acquirenti né i venditori hanno il controllo.
Verifica
Solo per essere sicuri che l’indicatore funzioni, possiamo verificare l’output controllando che il totale delle singole barre corrisponda al timeframe più elevato.
Come possiamo vedere nel grafico, i valori si sommano correttamente. Inoltre, possiamo vedere che c’era una piccola quantità di volume in cui né gli acquirenti né i venditori avevano il controllo. Come accennato in precedenza, lo classifichiamo come volume bilanciato e lo misuriamo con una barra nera. come ulteriore verifica possiamo dare un’occhiata al grafico con timeframe a 5 minuti di fianco al timeframe orario.
Codice completo
In questo articolo abbiamo descritto come creare un indicatore dei volumi in acquisto e vendita 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