Files
XauBot/docs/arsitektur-ai/11-News-Agent.md
T
GifariKemalandClaude Opus 4.5 7af9183af3 feat: Smart AI Trading Bot for XAUUSD with ML and SMC
- XGBoost ML model with 37 features for market direction prediction
- Smart Money Concepts (SMC): Order Blocks, FVG, BOS, CHoCH
- HMM market regime detection (trending/ranging/volatile)
- ATR-based stop loss with 1.5 ATR minimum distance
- Broker-level SL protection with fallback
- Time-based exit (max 6 hours per trade)
- Session-aware trading optimized for London/NY overlap
- Auto-retraining based on market conditions
- Telegram notifications and web dashboard
- Backtest results: 63.9% win rate, 2.64 profit factor, 4.83 Sharpe

Backtest period: Jan 2025 - Feb 2026, 654 trades, $4,189 net P/L

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-02-06 09:01:35 +07:00

5.9 KiB

News Agent — Monitoring Berita Ekonomi

File: src/news_agent.py Class: NewsAgent Status: Aktif tapi TIDAK MEMBLOKIR trading (monitoring only)


Apa Itu News Agent?

News Agent memonitor berita ekonomi high-impact (NFP, FOMC, CPI) yang bisa menyebabkan volatilitas ekstrem di pasar gold. Awalnya dirancang untuk memblokir trading saat news, tapi setelah backtest menunjukkan bahwa blocking justru kehilangan $178 profit, sekarang hanya berfungsi sebagai monitor dan logger.

Analogi: News Agent seperti stasiun cuaca — melaporkan badai yang datang, tapi pilot (bot) tetap terbang karena pesawat (ML model) sudah cukup tangguh menangani turbulensi.


Kenapa Tidak Blocking?

Hasil Backtest (29 trades):
  - Win rate tanpa filter: 64.9%
  - Win rate saat news:    62.1%  (selisih hanya 2.8%)
  - Profit yang hilang jika filter aktif: $178.15

Kesimpulan:
  -> ML model sudah cukup menangani volatilitas news
  -> Blocking justru kehilangan peluang profit
  -> Monitoring cukup, tidak perlu blocking

Event yang Dipantau

3 Event High-Impact

Event Waktu (WIB) Hari Dampak ke Gold
NFP (Non-Farm Payroll) 20:30 Jumat pertama bulan Sangat tinggi
FOMC (Fed Decision) 02:00 ~8x per tahun Sangat tinggi
CPI (Inflation) 20:30 Tgl 10-15 (Sel/Rab/Kam) Tinggi

Deteksi Event

# NFP: Jumat pertama bulan
if weekday == 4 and day <= 7:          # Friday, day 1-7
    if 19 <= hour <= 21:               # 19:00-21:00 WIB
        return "NFP (Non-Farm Payroll) - HIGH IMPACT"

# FOMC: Tanggal spesifik (hardcoded schedule)
fomc_dates = [
    (1,29), (3,19), (5,7), (6,18), (7,30),  # 2025
    (9,17), (11,5), (12,17),
    (1,29), (3,18), (5,6), (6,17), (7,29),  # 2026
]
if (month, day) in fomc_dates:
    if 1 <= hour <= 3:                 # 01:00-03:00 WIB
        return "FOMC Decision - HIGH IMPACT"

# CPI: Sekitar tanggal 10-15, hari kerja
if 10 <= day <= 15 and 19 <= hour <= 21:
    if weekday in [1, 2, 3]:           # Selasa-Kamis
        return "CPI (Inflation) - HIGH IMPACT"

Buffer Times

Parameter Default Aktif di Production
news_buffer_minutes 30 menit 0 (disabled)
high_impact_buffer_minutes 60 menit 0 (disabled)
# Inisialisasi di main_live.py
self.news_agent = create_news_agent(
    news_buffer_minutes=0,          # No blocking
    high_impact_buffer_minutes=0,   # No blocking
)

Market Condition States

Kondisi Bisa Trade? Lot Multiplier Trigger
SAFE Ya 1.0x Tidak ada news
CAUTION Ya 0.5x News medium-impact
DANGER_NEWS Tidak* 0.0x High-impact news
DANGER_SENTIMENT Tidak* 0.5x Sentimen sangat bearish

*Di production, DANGER tetap diizinkan trading (monitoring only)


Analisis Sentimen

News Agent juga bisa menganalisis headline berita berdasarkan keyword:

Keyword Bullish (untuk Gold)

Geopolitical: war, conflict, invasion, crisis, escalation
Economic:     rate cut, dovish, easing, recession, stimulus
Market:       safe haven, gold surge, gold rally, buy gold

Keyword Bearish (untuk Gold)

Geopolitical: peace deal, ceasefire, de-escalation
Economic:     rate hike, hawkish, tightening, strong dollar
Market:       risk on, stocks rally, sell gold, gold crash

Keyword Volatile

breaking, urgent, flash, sudden, unexpected, shock, crash, spike

Scoring

Setiap keyword match:
  Bullish:  +0.3
  Bearish:  -0.3
  Volatile: -0.1 (penalty)

Score range: -1.0 (sangat bearish) sampai +1.0 (sangat bullish)
Confidence berdasarkan jumlah keyword yang match

Method should_trade()

def should_trade(headlines=None) -> (bool, str, float):
    """
    Returns:
      can_trade: bool      <- Apakah aman trading
      reason: str          <- Alasan
      lot_multiplier: float <- Pengali lot (0.0-1.0)
    """
    # 1. Cek economic calendar (MT5 + hardcoded events)
    # 2. Analisis sentimen (jika ada headlines)
    # 3. Tentukan kondisi pasar
    # 4. Return rekomendasi

Integrasi di Main Loop

# main_live.py Lines 485-496
# NEWS AGENT MONITORING (NO BLOCKING)

can_trade_news, news_reason, news_lot_mult = self.news_agent.should_trade()

# Hanya LOG, TIDAK block
if not can_trade_news and loop_count % 300 == 0:  # Setiap 5 menit
    logger.info(f"News Agent: HIGH IMPACT NEWS - {news_reason} (trading allowed)")

# Catatan:
# - news_lot_mult dihitung tapi TIDAK diterapkan
# - Trading tetap berjalan normal
# - Informasi digunakan untuk logging dan analisis

Sumber Data

Sumber Status Keterangan
MT5 Calendar Aktif Cek economic calendar dari terminal
Hardcoded Events Aktif (Fallback) NFP, FOMC, CPI schedule
NewsAPI Tersedia, tidak digunakan External API (butuh API key)
ForexFactory Tersedia, tidak diimplementasi Placeholder untuk scraping

Konfigurasi

NewsAgent(
    news_buffer_minutes=30,           # Buffer news biasa (disabled: 0)
    high_impact_buffer_minutes=60,    # Buffer high-impact (disabled: 0)
    enable_mt5_calendar=True,         # Cek MT5 calendar
    enable_sentiment=True,            # Analisis sentimen
)

# Cache
_cache_duration = 15 menit            # Cache hasil calendar check

Contoh Output Log

[14:30] News Agent: HIGH IMPACT NEWS - NFP (Non-Farm Payroll) (trading allowed)
[14:35] News Agent: Market condition SAFE - no upcoming events
[20:25] News Agent: HIGH IMPACT NEWS - CPI (Inflation) (trading allowed)

Catatan: Meskipun terdeteksi "HIGH IMPACT NEWS", bot tetap trading. Log ini berguna untuk analisis post-trade — apakah trade yang terjadi saat news perform baik atau buruk.