- C++ 92.8%
- Shell 5.5%
- Makefile 1.7%
| .vscode | ||
| scripts | ||
| src | ||
| third_party/backtrader | ||
| .gitignore | ||
| esempiorun | ||
| Makefile | ||
| README.md | ||
TSoN - Trading Strategy Optimizer & Backtester
TSoN è un simulatore per il backtesting sistematico di strategie di trading su coppie di valute. Fornisce un'analisi esaustiva di combinazioni Take Profit / Stop Loss su dati storici, con l'obiettivo di identificare parametri ottimali per il profitto.
🚀 Funzionalità principali
- Lettura di dati storici da file CSV
- Simulazione di trade con TP/SL variabili
- Griglia automatica di combinazioni TP/SL
- Calcolo dei risultati economici per ogni combinazione
- Supporto per:
- Capitale iniziale e capitale per trade
- Fee di transazione
- Periodicità dei trade
- Uscita dal trade (a fine finestra o su chiusura)
- Modalità hedge (long/short multipli)
📦 Compilazione
make
Richiede un compilatore C++11 o superiore.
🧪 Esecuzione
./simulatore_trading data/DAT_ASCII_GBPJPY_M1_2021.csv -W 6000 -PER 10 -TPmin 10 -TPmax 30 -SLmin 0.3 -SLmax 0.4 -P 5 -C 10000 -CPT 70 -FEE 0.1 -exit_mode close -OH
Parametri
| Parametro | Descrizione |
|---|---|
dati.csv |
File CSV con i dati (timestamp, open, high, low, close) |
-W |
Finestra temporale in minuti per ogni trade |
-TPmin/-TPmax |
Range minimo/massimo di Take Profit |
-SLmin/-SLmax |
Range minimo/massimo di Stop Loss |
-P |
Numero di punti nella griglia TP/SL |
-C |
Capitale iniziale |
-CPT |
Capitale per singolo trade |
-FEE |
Fee percentuale per ogni trade |
-PER |
Intervallo tra un trade e il successivo (in minuti) |
-exit_mode |
Modalità di uscita: close (chiude la posizione così com'è alla fine della finestra) o leave (la posizione rimane aperta alla fine della finestra) |
-OH |
Only Hedge, non stampa le righe relative ai LONG e agli SHORT |
-debug |
Mostra dettagli interni di simulazione |
📁 Struttura del progetto
TSoN/
├── src/
│ ├── main.cpp # Entry point del programma, parsing CLI e orchestrazione
│ ├── dataloader.hpp # API caricamento CSV (OHLC); vedi anche dataloader.cpp
│ ├── simulator.hpp # API simulazione TP/SL; vedi anche simulator.cpp
│ ├── printer.hpp # API stampa; vedi anche printer.cpp
│
├── data/ # (opzionale) dati/CSV locali — ignorati da Git
├── scripts/
│ └── validate_backtrader.sh # Script per validare TSoN contro third_party/backtrader
├── third_party/
│ └── backtrader/ # Progetto terzo usato solo per validazione/comparazione
├── Makefile # Build del binario `simulatore_trading`
├── .gitignore # Esclusioni (build, dati, artefatti)
├── esempiorun # Esempio di comando per avviare una simulazione
ℹ️ Nota su third_party/backtrader
La cartella third_party/backtrader/ contiene un progetto esterno (C++/Python) usato esclusivamente per la validazione dei risultati di TSoN (confronto trade-by-trade e metriche). Non è necessaria per compilare o eseguire TSoN. Puoi eseguire una validazione rapida con:
make validate # richiede dipendenze Python/C++ del progetto third_party/backtrader
📌 Versioni
🏷️ v0.3.0 - Debug interno e strategie hedge (9 aprile 2025)
- Aggiunta la modalità hedge: è ora possibile mantenere più posizioni contemporaneamente
- Inserite variabili e stampe di debug per tracciare il comportamento del simulatore
- Corretto il calcolo delle operazioni in modalità hedge
- Fix di bug minori legati alla logica di uscita dal trade
🏷️ v0.2.0 - Riorganizzazione del codice
- Strutturazione modulare in più file (
dataloader,simulator,printer, ecc.) - Separazione della logica in
src/edata/ - Introduzione di un
Makefileper la compilazione - Aggiunta
.gitignoreper evitare file di build nel repo
🏷️ v0.1.0 - Prima versione stabile
- Simulazione di strategie di trading su dati OHLC da CSV
- Generazione griglia TP/SL parametrica
- Capitale iniziale, fee, finestra temporale e capitale per trade configurabili
- Output dei risultati su stdout in formato tabellare
- Aggiunto esempio di comando in
esempiorun - Colori nella stampa dei risultati
🧪 Versioni instabili precedenti
- Commit iniziali con versioni di test e sviluppo
📌 TODO futuri
- Esportazione risultati in CSV
- Multithreading
- Supporto a trailing stop
- Integrazione con dati live
- Web UI con dashboard interattiva
📜 Licenza
MIT License
Copyright (c) 2025 Alberto Stabile
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction...