Files
XauBot/docs/arsitektur-ai/17-Configuration.md
T
GifariKemalandClaude Opus 4.6 a240d974f6 docs: add architecture documentation for remaining 8 components (16-23)
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>
2026-02-06 09:17:20 +07:00

165 lines
4.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Configuration — Pusat Pengaturan Bot
> **File:** `src/config.py`
> **Class:** `TradingConfig`, `RiskConfig`, `SMCConfig`, `MLConfig`, `ThresholdsConfig`, `RegimeConfig`
> **Sumber:** 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 |
```python
# Otomatis berdasarkan capital
if capital <= 10000:
mode = SMALL # Growth mode
else:
mode = MEDIUM # Preservation mode
```
---
## 6 Sub-Konfigurasi
### 1. RiskConfig
```python
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
```python
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
```python
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
```python
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
```python
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)
```python
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()
```