New documentation files: - 16-MT5-Connector: Broker bridge with auto-reconnect & Polars native - 17-Configuration: 6 sub-configs with capital mode auto-adjustment - 18-Trade-Logger: Dual storage (PostgreSQL + CSV), thread-safe - 19-Position-Manager: 7 action conditions, trailing SL, market close handler - 20-Risk-Engine: Kelly Criterion sizing, circuit breaker, order validation - 21-Database: PostgreSQL integration with 6 repositories - 22-Train-Models: Initial training script (HMM + XGBoost) - 23-Main-Live-Orchestrator: Main loop coordinating 15+ components Updated README.md with complete index of all 23 components. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
4.4 KiB
4.4 KiB
Trade Logger — Pencatat Trade Otomatis
File:
src/trade_logger.pyClass:TradeLoggerStorage: PostgreSQL (primary) + CSV (fallback)
Apa Itu Trade Logger?
Trade Logger mencatat setiap trade, sinyal, dan kondisi pasar secara otomatis ke database dan file CSV. Data ini digunakan untuk analisis performa, retraining ML model, dan debugging.
Analogi: Trade Logger seperti black box di pesawat — merekam semua yang terjadi untuk analisis setelah penerbangan (trading).
3 Tipe Data yang Dicatat
1. Trade Record (Per Trade)
Setiap trade dibuka/ditutup dicatat lengkap:
| Kategori | Field |
|---|---|
| Identitas | ticket, symbol |
| Trade | direction, lot_size, entry_price, exit_price, SL, TP |
| Hasil | profit_usd, profit_pips, duration_seconds |
| Waktu | open_time, close_time |
| Market | regime, volatility, session, spread, ATR |
| SMC | signal, confidence, reason, FVG/OB/BOS/CHoCH flags |
| ML | signal, confidence |
| Dynamic | market_quality, market_score, threshold |
| Exit | exit_reason, exit_regime, exit_ml_signal |
| Balance | balance_before, balance_after, equity_at_entry |
| Features | JSON snapshot fitur saat entry & exit |
2. Signal Record (Per Sinyal)
Setiap sinyal yang dihasilkan (termasuk yang tidak dieksekusi):
timestamp, symbol, price
signal_type, signal_source, confidence
smc_*, ml_*
regime, session, volatility, market_score
trade_executed (bool)
execution_reason ("executed" / "below_threshold" / "max_positions" / ...)
3. Market Snapshot (Periodik)
Snapshot kondisi pasar secara berkala:
timestamp, symbol, price, OHLC
regime, volatility, session, ATR, spread
ml_signal, ml_confidence
smc_signal, smc_confidence
open_positions, floating_pnl
features (JSON)
Dual Storage
Event Terjadi (trade/signal/snapshot)
|
v
┌─────────────────────┐ ┌──────────────────┐
│ PostgreSQL (Primary) │ │ CSV (Fallback) │
│ │ │ │
│ ├── trades table │ │ data/trade_logs/│
│ ├── signals table │ │ ├── trades/ │
│ ├── market_snapshots │ │ │ └── trades_2025_02.csv
│ └── bot_status │ │ ├── signals/ │
│ │ │ │ └── signals_2025_02.csv
│ Cepat, queryable, │ │ └── snapshots/ │
│ thread-safe pooling │ │ └── snapshots_2025_02.csv
└─────────────────────┘ │ │
│ Selalu ditulis │
│ (backup) │
└──────────────────┘
- DB tidak tersedia? → CSV saja (graceful degradation)
- DB tersedia? → Tulis ke DB DAN CSV (double safety)
Proses Log Trade
Trade Dibuka:
|
v
log_trade_open(ticket, entry_price, regime, smc_*, ml_*, ...)
|
├── Simpan ke _pending_trades[ticket] (di memory)
└── INSERT ke database (trades table)
... trading berjalan ...
Trade Ditutup:
|
v
log_trade_close(ticket, exit_price, profit, exit_reason, ...)
|
├── Ambil data pending dari memory
├── Hitung durasi: close_time - open_time
├── UPDATE database (exit_price, profit, duration, ...)
└── APPEND ke CSV (trades_YYYY_MM.csv)
Analisis Helper
| Method | Fungsi |
|---|---|
get_recent_trades(10) |
10 trade terakhir |
get_win_rate(30) |
Win rate 30 hari |
get_smc_performance(30) |
Performa per pattern SMC |
get_trades_for_training(30) |
Data untuk ML retraining |
get_stats() |
Statistik logger |
Thread Safety
self._lock = threading.Lock()
# Setiap operasi CSV dilindungi lock
with self._lock:
# Write to CSV
File CSV (Terorganisir per Bulan)
data/trade_logs/
├── trades/
│ ├── trades_2025_01.csv
│ └── trades_2025_02.csv
├── signals/
│ ├── signals_2025_01.csv
│ └── signals_2025_02.csv
└── snapshots/
├── snapshots_2025_01.csv
└── snapshots_2025_02.csv