1. Analisi Nuova Feature: “Configurazione Dinamica Strategia”
È possibile farlo in FIRE? Assolutamente SÌ. È una funzionalità standard nei framework di backtesting professionali.
Ecco come la implementeremo, mappando concettualmente quello che vedi su TradingView nella nostra architettura Python.
Il Concetto: “Dichiarazione dei Parametri”
Attualmente, nella tua strategia hai:
self.ema_length = 4 # HardcodedIn TradingView (Pine Script) hai:
EMAlen = input.int(4, minval=1, title="EMA-Length")
In FIRE, introdurremo un sistema simile. La strategia “dichiarerà” i suoi parametri nel costruttore, e FIRE costruirà automaticamente la finestra di dialogo che hai mostrato negli screenshot.
L’Architettura Proposta (Piano d’Azione)
Dobbiamo agire su tre livelli:
-
Livello Strategia (
BaseStrategy): Creeremo un meccanismo per definire i parametri.- Esempio immaginato:
self.add_parameter("ema_length", 4, type="int", min=1, label="EMA Length") self.add_parameter("show_ema", True, type="bool", label="Show EMA Line?") self.add_parameter("bar_color", "#FFD700", type="color", label="Bar Color")
- Esempio immaginato:
-
Livello UI (
StrategySettingsDialog): Creeremo una nuova classe UI generica.- Questa classe leggerà i parametri dichiarati dalla strategia.
- Genererà automaticamente:
QSpinBoxper i numeri (int).QCheckBoxper i booleani (bool).ColorPickerper i colori.
- Restituirà i valori modificati dall’utente.
-
Livello Orchestrazione (
BacktestTabWidget):- Aggiungeremo un pulsante “⚙️ Settings” accanto a “Run Backtest”.
- Quando cliccato, apre il dialogo.
- Quando l’utente conferma, aggiorna la strategia e lancia il backtest con i nuovi valori.
Vantaggi
- Flessibilità: Puoi testare
EMA 4,EMA 9,EMA 20in secondi senza aprire il codice. - Professionalità: L’interfaccia diventa user-friendly anche per chi non sa programmare.
- Mapping 1:1 con Pine: Ogni
input.*di Pine avrà un corrispettivo in FIRE.
Come procediamo?
Questo è un task strutturale importante.
Propongo di iniziare dal Backend (Fase 1): Modificare BaseStrategy per supportare la definizione dei parametri.
Se sei d’accordo, dammi l’ok e iniziamo modificando fire/strategies/base_strategy.py per aggiungere il sistema di gestione parametri (self.parameters).