In breve: non esistono vere e proprie “librerie Pine Script per Python” (cioè che permettano di eseguire codice Pine Script nativo di TradingView dentro Python).
Tuttavia, esistono diverse librerie e strategie alternative per integrare o replicare la logica di Pine Script in Python.
Ecco le principali opzioni:
🧩 1. Librerie per tradurre o emulare Pine Script in Python
🔸 pinescript-parser
-
Funziona come un parser che converte parte del linguaggio Pine Script in una rappresentazione Python.
-
⚠️ Supporta solo un sottoinsieme del linguaggio (non tutto Pine Script v5).
-
Utile per analisi o conversione parziale di strategie.
🔸 tv2bt o tv2py (progetti community)
-
Strumenti di conversione non ufficiali che cercano di trasformare script di TradingView in codice Python (ad esempio per backtesting con Backtrader).
-
Non sempre aggiornati, ma possono essere utili come base.
🧠 2. Alternative pratiche: replicare la logica Pine Script con librerie Python
Se il tuo obiettivo è replicare indicatori o strategie di TradingView in Python (ad esempio per fare backtesting o analisi dati), allora conviene usare librerie Python native per l’analisi tecnica:
📊 Librerie consigliate
| Libreria | Descrizione |
|---|---|
ta | Implementa molti indicatori standard di TradingView (RSI, MACD, Bollinger, ecc.) |
pandas-ta | Molto completa, simile alla sintassi Pine Script (df.ta.rsi(), df.ta.ema(), ecc.) |
backtrader | Framework completo per backtesting e strategie trading |
vectorbt | Altamente performante, integra Pandas e NumPy |
freqtrade | Bot di trading open source con indicatori simili a quelli di TradingView |
👉 Con pandas-ta, puoi praticamente scrivere codice molto vicino a Pine Script.
Esempio:
import pandas as pd
import pandas_ta as ta
df = pd.read_csv("BTCUSDT_1h.csv")
df["ema_20"] = ta.ema(df["close"], length=20)
df["rsi"] = ta.rsi(df["close"], length=14)Questo corrisponde più o meno a:
ema_20 = ta.ema(close, 20)
rsi = ta.rsi(close, 14)🔗 3. Interfacciarsi direttamente con TradingView
Se vuoi eseguire o leggere dati da TradingView, puoi usare:
-
tvdatafeed: per scaricare dati storici dai server TradingView senza API ufficiale. -
tradingview-ta: per ottenere segnali “buy/sell” dagli screener pubblici di TradingView.
Esempio:
from tradingview_ta import TA_Handler, Interval, Exchange
btc = TA_Handler(
symbol="BTCUSDT",
exchange="BINANCE",
interval=Interval.INTERVAL_1_HOUR
)
analysis = btc.get_analysis()
print(analysis.summary)✅ Riassunto
| Obiettivo | Soluzione consigliata |
|---|---|
| Eseguire Pine Script in Python | Non possibile direttamente |
| Tradurre Pine Script → Python | pinescript-parser o progetti tv2bt/tv2py |
| Ricreare indicatori di Pine | pandas-ta / ta |
| Interfacciarsi a TradingView | tradingview-ta, tvdatafeed |
Interfacciarsi a TradingView è un’idea molto allettante, data la vastità e la qualità dei loro dati e indicatori.
Analizziamo in modo critico le librerie che hai menzionato (tradingview-ta, tvdatafeed) e valutiamo se un’integrazione sia allineata con la filosofia e l’architettura di FIRE.
Analisi Tecnica delle Librerie
Queste librerie sono create dalla community per un motivo molto preciso: TradingView non offre una API pubblica e ufficiale per scaricare dati storici o in tempo reale a livello retail.
Questo fatto è il punto più importante da comprendere. Di conseguenza, queste librerie funzionano tramite metodi non ufficiali.
1. tradingview-ta
- Scopo: Fornire analisi tecniche e raccomandazioni (es. “Strong Buy”, “Sell”) basate sugli indicatori di TradingView per un dato ticker e timeframe.
- Come Funziona: È essenzialmente uno scraper. Simula un browser, visita la pagina di analisi tecnica di TradingView e ne estrae i valori dai widget. Non scarica i dati OHLC grezzi, ma il risultato delle analisi di TradingView.
- Pro:
- Leggero e semplice da usare per ottenere un “sentiment” veloce.
- Contro:
- Estremamente Fragile: Qualsiasi modifica al layout del sito web di TradingView romperebbe la libreria.
- Limitato: Non fornisce i dati grezzi del grafico, quindi non possiamo usarlo per il backtesting o per i nostri grafici.
- Rischio di Blocco IP: Lo scraping intensivo può portare al blocco del nostro indirizzo IP da parte di TradingView.
2. tvdatafeed
- Scopo: Replicare in modo più profondo la connessione dati di TradingView per scaricare dati storici OHLC.
- Come Funziona: È molto più sofisticato. Esegue il reverse-engineering delle API private che il client web di TradingView usa per comunicare con i loro server. Spesso apre una connessione WebSocket non documentata, simulando di essere un browser legittimo.
- Pro:
- Accesso a Dati di Qualità: Potenzialmente può accedere alla stessa vasta gamma di dati (forex, crypto, futures) che vedi sul sito di TradingView.
- Contro:
- Altamente Instabile e Inaffidabile: Essendo basato su un’API privata, TradingView può cambiarla in qualsiasi momento, senza preavviso, rompendo la nostra applicazione. Questo è quasi una certezza, non una possibilità.
- Violazione dei Termini di Servizio: L’utilizzo di API private non documentate è quasi sempre una violazione dei Termini di Servizio della piattaforma.
- Complessità di Manutenzione: Manutenere una connessione basata su reverse-engineering è un incubo.
Valutazione Strategica per il Progetto FIRE
Ora confrontiamo questi strumenti con i nostri principi guida: Sovranità, Privacy e Affidabilità.
-
Conflitto con la Sovranità: Integrare queste librerie ci legherebbe a doppio filo a un sistema chiuso e proprietario, in modo non ufficiale. Se TradingView decidesse di bloccarci, una funzionalità core della nostra app smetterebbe di funzionare. Questo va contro l’idea di un “laboratorio sovrano”.
-
Rischio per l’Affidabilità: Non possiamo costruire un prodotto professionale su fondamenta così fragili. Un backtest o un’analisi devono essere riproducibili e affidabili. Basarci su una connessione che può rompersi da un giorno all’altro è inaccettabile per un prodotto come FIRE. La nostra architettura di connettori è pensata per fonti stabili e ufficiali.
-
Alternative Migliori: Il nostro attuale sistema di connettori è progettato per fonti dati legittime:
- API Pubbliche Gratuite:
yfinanceè un ottimo esempio. Non è perfetto, ma è ragionevolmente stabile. - API di Broker: In futuro, potremmo aggiungere connettori per broker come Alpaca o Interactive Brokers, che offrono API ufficiali e robuste.
- Dati Locali: Supportiamo già il caricamento da file CSV, in linea con la nostra filosofia “local-first”.
- Dati a Pagamento: Per dati di altissima qualità, la strada corretta è integrare un fornitore di dati professionale (es. Polygon.io, Tiingo) con API ufficiali.
- API Pubbliche Gratuite:
Raccomandazione Finale
La mia raccomandazione è di NON integrare tradingview-ta o tvdatafeed come connettori dati principali nel progetto FIRE.
Il rischio tecnico e l’incompatibilità strategica con i nostri principi sono troppo alti. Sarebbe come costruire una casa su un terreno franoso.
Possibile Compromesso (a Bassa Priorità):
Potremmo considerare di aggiungere un connettore basato su tvdatafeed in futuro, ma etichettandolo chiaramente come “Sperimentale / Inaffidabile” e disabilitandolo di default. Questo permetterebbe agli utenti più smaliziati di usarlo a proprio rischio e pericolo, senza che l’affidabilità del prodotto principale dipenda da esso.
Per ora, il nostro sforzo dovrebbe concentrarsi sul consolidamento dei connettori esistenti e sull’integrazione di fonti dati ufficiali e stabili.
| Criterio | tradingview-ta / tvdatafeed | Connettori Ufficiali (yfinance, Broker API) |
|---|---|---|
| Affidabilità | 🔴 Molto Bassa (Punto di rottura garantito) | ✅ Alta (Basati su API stabili) |
| Manutenibilità | 🔴 Molto Alta (Richiede continui aggiornamenti) | ✅ Bassa (Segue la documentazione ufficiale) |
| Allineamento a FIRE | 🔴 Basso (Dipendenza da sistema chiuso) | ✅ Alto (Sovranità e affidabilità) |
| Legalità | 🟠 Area Grigia (Potenziale violazione ToS) | ✅ Nessun Problema |
| Qualità Dati | 🟢 Potenzialmente Alta | 🟠 Variabile (da yfinance) a 🟢 Alta (da Broker) |