Piano d’Azione Riveduto: Sistema di Tracciamento dei Motivi di Ingresso/Uscita
Obiettivo: Implementare un sistema flessibile per tracciare i motivi di ingresso (entry_reason) e uscita (exit_reason) dei trade, basato su stringhe libere fornite dalla strategia. L’informazione sarà propagata fino all’interfaccia utente per l’analisi.
Fase 1: Modifiche all’Architettura del Backend (Core Logic)
-
BacktestEngine:
-
Priorità 1: Estendere il metodo open_position() per accettare un nuovo parametro opzionale: comment: Optional[str] = None. All’interno del metodo, il valore di questo parametro verrà salvato nel dizionario del trade corrente con la chiave entry_reason.
-
Priorità 2: Estendere i metodi sell() e close_position() per accettare un nuovo parametro opzionale: comment: Optional[str] = None. Il valore verrà salvato nel dizionario dell’ultimo trade con la chiave exit_reason.
-
-
BaseStrategy (API per lo Sviluppatore):
-
Priorità 3: Aggiornare la firma del metodo buy() per accettare comment: Optional[str] = None e propagarlo alla chiamata corrispondente del BacktestEngine.
-
Priorità 4: Aggiornare le firme dei metodi sell() e close() per accettare comment: Optional[str] = None e propagarli alle chiamate corrispondenti del BacktestEngine.
-
Fase 2: Integrazione con l’Interfaccia Utente (UI)
-
BacktestWorker (Data Propagation):
- Priorità 5: Assicurarsi che il DataFrame dei risultati del backtest, generato dal worker, includa le nuove colonne entry_reason e exit_reason. (Questo dovrebbe avvenire quasi automaticamente se il BacktestEngine le aggiunge correttamente ai trade log).
-
TradeLogModel (Modello Dati UI):
- Priorità 6: Modificare fire/ui_components/models/trade_log_model.py per aggiungere il supporto alle due nuove colonne (“Entry Reason”, “Exit Reason”). Questo implica l’aggiornamento dei metodi data() e headerData() per gestire e visualizzare correttamente le nuove informazioni.
-
TradeLogWidget (Vista UI):
- Priorità 7: Verificare che il fire/ui_components/trade_log_widget.py visualizzi correttamente le nuove colonne aggiunte al modello. Solitamente non sono necessarie modifiche dirette al widget se il modello è stato aggiornato correttamente.
Fase 3: Implementazione di Riferimento e Documentazione
-
Strategia di Esempio:
- Priorità 8: Scegliere una strategia esistente (es. una basata su forecast) e modificarla per utilizzare i nuovi parametri comment, fornendo esempi chiari di come documentare gli ingressi e le uscite. Esempio: self.buy(comment=“Forecast > Upper Band”), self.sell(comment=“Stop Loss”).
-
Documentazione:
- Priorità 9 (Post-implementazione): Creare o aggiornare un documento di “Deep Dive” (DD-STRATEGY-API.md) per includere una sezione “Best Practices” che spieghi l’importanza di usare commenti di ingresso/uscita coerenti e fornisca una lista di reason consigliate per promuovere la standardizzazione.