a240d974f6
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.5 KiB
4.5 KiB
Configuration — Pusat Pengaturan Bot
File:
src/config.pyClass:TradingConfig,RiskConfig,SMCConfig,MLConfig,ThresholdsConfig,RegimeConfigSumber: Environment variables (.env)
Apa Itu Configuration?
Configuration adalah pusat pengaturan seluruh parameter bot — dari kredensial MT5 hingga threshold AI. Semua pengaturan otomatis menyesuaikan berdasarkan ukuran modal (small/medium).
Analogi: Configuration seperti kokpit pesawat — semua tombol dan dial pengaturan ada di satu tempat, dan bisa diubah sebelum "terbang" (trading).
Capital Mode (Otomatis)
| Mode | Modal | Risk/Trade | Max Daily Loss | Leverage | Max Lot | Max Posisi | Timeframe |
|---|---|---|---|---|---|---|---|
| SMALL | ≤ $10K | 1% | 3% | 1:100 | 0.05 | 3 | M15 |
| MEDIUM | > $10K | 0.5% | 2% | 1:30 | 2.0 | 5 | H1 |
# Otomatis berdasarkan capital
if capital <= 10000:
mode = SMALL # Growth mode
else:
mode = MEDIUM # Preservation mode
6 Sub-Konfigurasi
1. RiskConfig
RiskConfig(
risk_per_trade=1.0, # 1% per trade ($50 dari $5K)
max_daily_loss=3.0, # 3% max daily loss ($150)
max_leverage=100, # 1:100
max_positions=3, # Max 3 posisi bersamaan
max_lot_size=0.05, # Max 0.05 lot
min_lot_size=0.01, # Min 0.01 lot
lot_step=0.01, # Increment 0.01
)
2. SMCConfig
SMCConfig(
swing_length=5, # 5 bar untuk swing detection
fvg_min_gap_pips=2.0, # Min gap FVG: 2 pips
ob_lookback=10, # Order block lookback: 10 bar
bos_close_break=True, # Butuh close break untuk BOS
)
3. MLConfig
MLConfig(
model_path="models/xgboost_model.json",
confidence_threshold=0.65, # Min confidence untuk entry
retrain_frequency_days=7, # Retrain setiap 7 hari
lookback_periods=1000, # Data lookback
)
4. ThresholdsConfig
ThresholdsConfig(
# ML Confidence
ml_min_confidence=0.65, # Minimum confidence
ml_entry_confidence=0.70, # Default entry
ml_high_confidence=0.75, # High confidence
ml_very_high_confidence=0.80, # Lot multiplier trigger
# Risk
trend_reversal_confidence=0.75, # Trigger reversal close
protected_mode_threshold=0.80, # Enter protected mode
# Profit/Loss (USD)
min_profit_to_secure=15.0, # Min profit to consider secure
good_profit_level=25.0, # Good profit
great_profit_level=40.0, # Take it!
# Timing
trade_cooldown_seconds=300, # 5 menit antar trade
loop_interval_seconds=30.0, # Main loop interval
# Session
sydney_lot_multiplier=0.5, # Sydney lot reduction
)
5. RegimeConfig
RegimeConfig(
n_regimes=3, # 3 HMM states
lookback_periods=500, # HMM training lookback
retrain_frequency=20, # Retrain setiap 20 bar
)
Environment Variables (.env)
| Variable | Contoh | Wajib | Keterangan |
|---|---|---|---|
MT5_LOGIN |
12345678 |
Ya | Akun MT5 |
MT5_PASSWORD |
p@ssw0rd |
Ya | Password MT5 |
MT5_SERVER |
BrokerName-Live |
Ya | Server broker |
MT5_PATH |
C:\...\terminal64.exe |
Tidak | Path MT5 |
CAPITAL |
5000 |
Tidak | Modal ($5000 default) |
SYMBOL |
XAUUSD |
Tidak | Simbol trading |
RISK_PER_TRADE |
1.0 |
Tidak | Override risk % |
MAX_DAILY_LOSS_PERCENT |
3.0 |
Tidak | Override daily loss |
AI_CONFIDENCE_THRESHOLD |
0.65 |
Tidak | Override ML threshold |
TELEGRAM_BOT_TOKEN |
123:ABC... |
Tidak | Token Telegram |
TELEGRAM_CHAT_ID |
-1001234... |
Tidak | Chat ID Telegram |
DB_HOST |
localhost |
Tidak | PostgreSQL host |
DB_NAME |
trading_db |
Tidak | Database name |
Position Sizing (Kelly Criterion)
def calculate_position_size(entry_price, stop_loss_price, balance):
"""
Risk-Constrained Kelly Criterion:
risk_amount = balance × risk% ($5000 × 1% = $50)
sl_pips = |entry - SL| / 0.1
lot = risk_amount / (sl_pips × pip_value)
lot × 0.5 (Half-Kelly untuk safety)
Clamp: min_lot ≤ lot ≤ max_lot
"""
Validasi Otomatis
Saat TradingConfig dibuat:
|
v
_validate_required_settings():
├── MT5_LOGIN != 0?
├── MT5_PASSWORD tidak kosong?
├── MT5_SERVER tidak kosong?
└── Capital > 0?
|
├── Ada yang gagal → ValueError
└── Semua OK → _configure_by_capital()