"""
export_recent_bars.py
=====================
Exports recent EURUSD 1H bars from MT5 to CSV.
Run on VPS where MT5 is running.

Usage:
  python src/research/export_recent_bars.py
"""
from pathlib import Path
from datetime import datetime, timezone
import pandas as pd

BASE      = Path(__file__).resolve().parents[2]
OUT_FILE  = BASE / 'data' / 'raw' / 'prices' / 'EURUSD' / 'EURUSD_1H_recent.csv'
OUT_FILE.parent.mkdir(parents=True, exist_ok=True)

try:
    import MetaTrader5 as mt5

    if not mt5.initialize():
        print(f"MT5 init failed: {mt5.last_error()}")
        exit(1)

    print("MT5 connected ✅")

    # Pull last 5000 1H bars (~7 months)
    rates = mt5.copy_rates_from_pos("EURUSD", mt5.TIMEFRAME_H1, 0, 5000)
    if rates is None or len(rates) == 0:
        print("No bars returned from MT5")
        exit(1)

    df = pd.DataFrame(rates)
    df['datetime'] = pd.to_datetime(df['time'], unit='s', utc=True)
    df['datetime'] = df['datetime'].dt.tz_localize(None)
    df = df.rename(columns={'open':'open','high':'high','low':'low',
                             'close':'close','tick_volume':'volume'})
    df = df[['datetime','open','high','low','close','volume']].sort_values('datetime')

    df.to_csv(OUT_FILE, index=False)
    print(f"Saved {len(df):,} bars → {OUT_FILE.name}")
    print(f"Range: {df['datetime'].iloc[0].date()} → {df['datetime'].iloc[-1].date()}")

    mt5.shutdown()

except ImportError:
    print("MetaTrader5 not installed — run on VPS")
except Exception as e:
    print(f"Error: {e}")
    import traceback; traceback.print_exc()
