Files
XauBot/docs/FEATURES.md
T
GifariKemal e8355b3f62 feat: add 5 dashboard features — dark mode, trade history, backtests, model insights, alerts
- Dark mode: class-based theme toggle with localStorage persistence and flash prevention
- Trade History (/trades): paginated table, stats cards, equity curve chart with DB API endpoints
- Backtest Viewer (/backtests): log parser for 35 backtest results, sidebar + detail + comparison tabs
- Model Insights: dashboard card + dialog showing feature importance, regime distribution, training history
- Alert/Signal Log (/alerts): signal stats, filterable table with execution tracking
- API: 8 new endpoints with psycopg2 DB connection pool
- Dark mode sweep across books page, about dialog, and all dashboard components
- Architecture docs rewritten with Mermaid diagrams (23 docs)
- README and FEATURES.md rewritten bilingual (Indonesian + English)
- main_live.py: write model_metrics.json on startup and retrain

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-02-09 05:46:54 +07:00

14 KiB

XAUBot AI — Referensi Fitur

Gambaran Umum

XAUBot AI adalah bot trading XAUUSD (Emas) otomatis yang menggabungkan XGBoost Machine Learning, Smart Money Concepts (SMC), dan Hidden Markov Model (HMM) untuk deteksi regime. Bot ini beroperasi di MetaTrader 5 melalui loop Python asinkron, mengeksekusi trade pada timeframe M15 (15 menit).

Bot mengikuti pipeline yang ketat: data diambil, fitur direkayasa, struktur pasar dianalisis, regime diklasifikasikan, prediksi ML dihasilkan, dan serangkaian 14 filter berurutan menentukan apakah trade dieksekusi. Setelah posisi terbuka, 12 kondisi exit dipantau setiap 5-10 detik.


Pipeline 14 Entry Filter

Terdapat 14 filter yang berjalan secara berurutan selama _trading_iteration(). Sebuah sinyal harus melewati SEMUA filter untuk mengeksekusi trade.

1. Pengambilan Data

  • Mengambil 200 bar M15 dari MetaTrader 5.
  • Data dikonversi ke Polars DataFrame (bukan Pandas).

2. Rekayasa Fitur (Feature Engineering)

  • Menghitung 37 fitur teknikal dari data OHLCV.
  • Meliputi: RSI, ATR, MACD, Bollinger Bands, EMA (berbagai periode), Stochastic, indikator berbasis volume, dan lainnya.
  • Semua komputasi menggunakan Polars untuk performa.

3. Analisis SMC

  • Mendeteksi struktur institusional Smart Money Concepts:
    • Order Block (OB) — zona supply/demand dari aktivitas institusional.
    • Fair Value Gap (FVG) — ketidakseimbangan dalam price action.
    • Break of Structure (BOS) — sinyal kelanjutan tren.
    • Change of Character (CHoCH) — sinyal pembalikan arah.

4. Deteksi Regime

  • HMM (Hidden Markov Model) mengklasifikasikan kondisi pasar saat ini:
    • TRENDING — pergerakan searah, kondusif untuk entry.
    • RANGING — konsolidasi menyamping, ukuran posisi dikurangi.
    • HIGH_VOLATILITY — pergerakan tidak menentu, butuh kehati-hatian.
    • CRISIS — kondisi ekstrem, trading diblokir.

5. Pelindung Flash Crash

  • Proteksi darurat: jika pergerakan harga melebihi ambang persentase tertentu, semua posisi langsung ditutup.
  • Mencegah kerugian katastropik saat dislokasi pasar mendadak.

6. Filter Regime

  • Memblokir trading sepenuhnya jika rekomendasi regime adalah SLEEP.
  • Mencegah entry saat kondisi pasar tidak menguntungkan yang teridentifikasi oleh HMM.

7. Pemeriksaan Risiko

  • Memblokir trading jika:
    • Batas kerugian harian telah tercapai (5% dari kapital).
    • Equity terlalu rendah relatif terhadap margin yang dibutuhkan.
    • Batas kerugian total telah dilanggar (10% dari kapital).

8. Filter Sesi

  • Memfilter berdasarkan sesi trading WIB (Waktu Indonesia Barat).
  • Setiap sesi menerapkan lot size multiplier untuk mengontrol eksposur:
    • Sydney (06:00-13:00 WIB) — multiplier 0.5x (volatilitas rendah).
    • Tokyo (07:00-16:00 WIB) — multiplier 0.7x (volatilitas sedang).
    • London (15:00-24:00 WIB) — multiplier 1.0x (volatilitas tinggi).
    • New York (20:00-24:00 WIB) — multiplier 1.0x (volatilitas ekstrem).
    • Off-Hours (00:00-06:00 WIB) — diblokir sepenuhnya.

9. Filter Bias H1 (#31B)

  • Konfirmasi multi-timeframe menggunakan EMA20 pada chart H1.
  • Posisi harga relatif terhadap EMA20 H1 menentukan bias arah:
    • BULLISH (harga di atas EMA20) — hanya sinyal BUY yang diizinkan.
    • BEARISH (harga di bawah EMA20) — hanya sinyal SELL yang diizinkan.
    • NEUTRAL (harga dekat EMA20) — semua sinyal diblokir.
  • Hasil backtest: +$343 peningkatan, win rate 81.8%, Sharpe 3.97.

10. Generasi Sinyal SMC

  • Menghasilkan sinyal BUY atau SELL berdasarkan analisis struktur SMC.
  • Setiap sinyal memiliki confidence score yang berasal dari kualitas struktur yang terdeteksi (kedekatan OB, keselarasan FVG, konteks BOS/CHoCH).

11. Kombinasi Sinyal

  • Menggabungkan sinyal SMC + prediksi ML (XGBoost).
  • Menerapkan dynamic confidence threshold yang beradaptasi berdasarkan:
    • Sesi trading saat ini.
    • Regime pasar.
    • Volatilitas terkini.
  • Kedua sinyal harus sepakat arah; confidence gabungan harus melampaui threshold.

12. Filter Waktu (#34A)

  • Melewatkan jam WIB tertentu yang dikenal berkondisi buruk:
    • Jam 9 WIB — akhir sesi New York, likuiditas rendah.
    • Jam 21 WIB — transisi London-New York, rawan whipsaw.
  • Hasil backtest: +$356 peningkatan.

13. Cooldown Trade

  • Memberlakukan jeda minimum 150 detik (2.5 menit) antara trade berturut-turut.
  • Mencegah overtrading dan entry bertubi-tubi dari sinyal yang noisy.

14. Gerbang Risiko Cerdas (Smart Risk Gate)

  • Gerbang terakhir sebelum eksekusi. Memeriksa:
    • Mode trading: NORMAL, RECOVERY, PROTECTED, atau STOPPED.
    • Perhitungan lot size: Berdasarkan ATR, mode kapital, dan multiplier sesi.
    • Batas posisi: Maksimal 2 posisi bersamaan diizinkan.
  • Jika mode STOPPED, tidak ada trade yang dieksekusi terlepas dari kualitas sinyal.

12 Kondisi Exit

12 kondisi exit diperiksa setiap 5-10 detik selama posisi terbuka.

1. Take Profit (TP Level Broker)

  • TP dipasang di level broker saat entry.
  • Dihitung menggunakan rasio risk-reward berbasis ATR.

2. Trailing Stop (#24B)

  • Trailing stop adaptif berbasis ATR:
    • Jarak aktivasi: ATR x 4.0.
    • Ukuran langkah: ATR x 3.0.
  • Mengunci keuntungan seiring harga bergerak menguntungkan.

3. Perpindahan Breakeven (#24B)

  • Memindahkan stop loss ke harga entry (breakeven) saat keuntungan belum direalisasi melampaui ATR x 2.0.
  • Menghilangkan risiko pada trade setelah pergerakan menguntungkan.

4. Exit Pembalikan ML

  • Menutup posisi jika confidence model ML berbalik arah dengan confidence melebihi 75%.
  • Merespons perubahan kondisi pasar yang terdeteksi oleh XGBoost.

5. Kerugian Maksimal Per Trade

  • Stop loss level perangkat lunak sebesar 1% dari kapital.
  • Berfungsi sebagai jaring pengaman di samping SL broker.

6. Batas Kerugian Harian

  • Jika kerugian kumulatif harian mencapai 5% dari kapital, semua posisi ditutup dan trading dihentikan untuk hari itu.

7. Batas Kerugian Total

  • Jika kerugian kumulatif total mencapai 10% dari kapital, trading dihentikan sepenuhnya sampai intervensi manual.

8. Penanganan Penutupan Pasar

  • Sebelum penutupan harian atau penutupan akhir pekan:
    • Mengambil keuntungan pada posisi dengan unrealized profit > $5.
    • Mencegah risiko gap dari posisi yang terbawa semalam/akhir pekan.

9. Darurat Flash Crash

  • Dipicu oleh pergerakan harga ekstrem secara tiba-tiba.
  • Langsung menutup semua posisi terbuka tanpa penundaan.

10. Proteksi Drawdown

  • Memantau drawdown dari puncak equity.
  • Menutup semua posisi jika drawdown melebihi 50% dari puncak.

11. Impulse Trail (#33B)

  • Trailing stop yang ditingkatkan menggunakan deteksi impulse candle.
  • Mengidentifikasi candle momentum kuat dan men-trail stop di belakangnya.
  • Lebih responsif dibanding trailing ATR standar dalam kondisi tren.

12. Smart Breakeven (#28B)

  • Logika breakeven yang ditingkatkan dengan pemicu ATR multiplier:
    • Pemicu: keuntungan melampaui ATR x 2.0.
    • Memindahkan SL ke entry + buffer kecil.
  • Lebih adaptif dibanding breakeven berbasis pip tetap.

Riwayat Optimasi Backtest

Rangkuman optimasi utama yang diterapkan ke bot live, diuji dan divalidasi melalui backtest.

# Nama Perubahan Utama Hasil
#24B ATR-Adaptive Exit Trailing berbasis ATR (4.0x) dan breakeven (2.0x) multiplier Optimasi dasar untuk logika exit
#28B Smart Breakeven Breakeven yang ditingkatkan dengan pemicu ATR x 2.0 Peningkatan waktu exit pada trade yang menang
#31B Filter H1 EMA20 Filter multi-timeframe harga H1 vs EMA20 +$343, WR 81.8%, Sharpe 3.97
#33B Impulse Trail Trail menggunakan deteksi impulse candle Trailing lebih baik di pasar tren
#34A Lewati Jam Tertentu Lewati jam WIB 9 dan 21 +$356, pengurangan kerugian whipsaw

Manajemen Risiko

Mode Kapital

Mode kapital dikonfigurasi otomatis berdasarkan saldo akun. Setiap mode mengatur parameter risiko yang sesuai untuk ukuran akun.

Mode Rentang Kapital Risiko/Trade Lot Maks
MICRO < $500 2% 0.02
SMALL $500 - $10,000 1.5% 0.05
MEDIUM $10,000 - $100,000 0.5% 0.10
LARGE > $100,000 0.25% 0.50

Mode Trading

Smart Risk Manager secara dinamis menyesuaikan mode trading berdasarkan performa terkini.

Mode Pemicu Penyesuaian Lot
NORMAL Kondisi default Lot dasar (0.01-0.03)
RECOVERY Setelah trade rugi Lot pemulihan (0.01)
PROTECTED Mendekati batas kerugian harian Lot minimum (0.01)
STOPPED Batas kerugian harian atau total tercapai Trading tidak diizinkan

Batas Risiko

Batas Nilai Aksi
Kerugian harian maks 5% dari kapital Tutup semua posisi, hentikan trading untuk hari itu
Kerugian total maks 10% dari kapital Hentikan semua trading sampai reset manual
Kerugian maks per trade 1% dari kapital Stop loss perangkat lunak
SL darurat broker 2% dari kapital Hard stop level broker
Posisi bersamaan maks 2 Tolak entry baru jika sudah di batas

Filter Sesi (WIB)

Semua waktu sesi dalam WIB (Waktu Indonesia Barat, UTC+7).

Sesi Jam (WIB) Volatilitas Multiplier Lot
Sydney 06:00 - 13:00 Rendah 0.5x
Tokyo 07:00 - 16:00 Sedang 0.7x
London 15:00 - 24:00 Tinggi 1.0x
New York 20:00 - 24:00 Ekstrem 1.0x
Off-Hours 00:00 - 06:00 N/A Diblokir

Golden Hour

  • 19:00 - 23:00 WIB (London-New York Overlap).
  • Periode likuiditas dan volatilitas tertinggi untuk XAUUSD.
  • Kondisi trading terbaik; multiplier lot penuh diterapkan.

Jam yang Dilewati (#34A)

  • Jam 9 WIB — Akhir sesi New York; likuiditas rendah menyebabkan fill yang tidak menentu.
  • Jam 21 WIB — Transisi London-New York; rawan whipsaw dan false breakout.

Auto-Trainer

Bot menyertakan pipeline pelatihan ulang model otomatis untuk menjaga model ML tetap mutakhir dengan kondisi pasar.

Parameter Nilai
Interval pemeriksaan Setiap 20 candle (~5 jam pada M15)
Pelatihan ulang harian 05:00 WIB (saat pasar tutup)
Pelatihan akhir pekan Pelatihan mendalam dengan jendela data yang diperluas
Threshold AUC minimum 0.65
Kebijakan rollback Jika model baru berkinerja lebih buruk, kembali ke backup

Alur Pelatihan Ulang

  1. Setiap 20 candle, auto-trainer memeriksa metrik performa model.
  2. Jika AUC turun di bawah 0.65, pelatihan ulang dipicu.
  3. Pada 05:00 WIB setiap hari (pasar tutup), pelatihan ulang terjadwal berjalan.
  4. Pada akhir pekan, pelatihan mendalam menggunakan dataset historis yang lebih besar.
  5. Setelah pelatihan, model baru divalidasi terhadap model sebelumnya.
  6. Jika model baru berkinerja lebih buruk, sistem melakukan rollback ke model backup.

Model ML

Algoritma

  • XGBoost gradient-boosted decision trees.

Fitur

  • 37 indikator teknikal dihitung oleh src/feature_eng.py:
    • Tren: EMA (berbagai periode), MACD, ADX.
    • Momentum: RSI, Stochastic K/D.
    • Volatilitas: ATR, Bollinger Bands (width, %B).
    • Volume: Indikator berbasis volume.
    • Kustom: Fitur turunan SMC, fitur regime.

Keluaran

  • Sinyal: BUY, SELL, atau HOLD.
  • Confidence score: 0.0 hingga 1.0, digunakan dalam kombinasi dengan confidence SMC.

Threshold Dinamis

  • Threshold confidence untuk eksekusi trade tidak tetap.
  • Menyesuaikan berdasarkan:
    • Sesi: Threshold lebih tinggi saat sesi volatilitas rendah.
    • Regime: Threshold lebih tinggi saat regime ranging/volatile.
    • Performa terkini: Diperketat setelah kerugian, dilonggarkan setelah kemenangan.

Komponen Aktif

Komponen File Status Deskripsi
Penganalisis SMC src/smc_polars.py Aktif Deteksi Order Block, FVG, BOS, CHoCH
ML XGBoost src/ml_model.py Aktif Prediksi sinyal dengan confidence
Regime HMM src/regime_detector.py Aktif Klasifikasi regime pasar
Mesin Fitur src/feature_eng.py Aktif Komputasi 37 fitur teknikal
Mesin Risiko src/risk_engine.py Aktif SL/TP berbasis ATR, position sizing
Smart Risk Manager src/smart_risk_manager.py Aktif Manajemen mode dinamis
Manajer Posisi src/position_manager.py Aktif Pemantauan kondisi exit
Filter Sesi src/session_filter.py Aktif Filtering berbasis sesi WIB
Confidence Dinamis src/dynamic_confidence.py Aktif Penyesuaian threshold adaptif
Auto Trainer src/auto_trainer.py Aktif Pelatihan ulang model terjadwal
Notifikasi Telegram src/telegram_notifier.py Aktif Peringatan trade via Telegram
Pencatat Trade src/trade_logger.py Aktif Pencatatan trade ke PostgreSQL
Agen Berita src/news_agent.py NONAKTIF Filter berita ekonomi (mengurangi $178 profit di backtest)
Detektor Flash Crash src/regime_detector.py Aktif Penutupan posisi darurat

Diagram Arsitektur

flowchart TD
    MT5["MT5 Broker"] --> DF["Data Fetch"]
    DF --> FE["Feature Eng (37 fitur)"]
    FE --> SMC["SMC Analysis"]
    SMC --> HMM["Regime Detection (HMM)"]
    HMM --> FCG["Flash Crash Guard"]
    FCG --> RF["Regime Filter"]
    RF --> RC["Risk Check"]
    RC --> SF["Session Filter"]
    SF --> H1["H1 Bias Filter (#31B)"]
    H1 --> SG["SMC Signal Gen"]
    SG --> SC["Signal Combination (ML+SMC)"]
    SC --> TF["Time Filter (#34A)"]
    TF --> TC["Trade Cooldown"]
    TC --> SRG["Smart Risk Gate"]
    SRG --> TE["TRADE EXECUTION"]
    TE --> PM["Position Manager (12 exits)"]
    PM --> LOG["Telegram + PostgreSQL Logging"]