import json
from datetime import datetime, timezone

def read_json(path):
    with open(path, 'r') as f:
        return json.load(f)

def get_bars(data):
    if isinstance(data, dict):
        if 'data' in data: return data['data']
        if 'bars' in data: return data['bars']
        for v in data.values():
            if isinstance(v, list): return v
    return data

ohlcv_m5 = get_bars(read_json("/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026/hybrid/data/ohlcv_M5.json"))

def find_context(bars, target_time_str):
    context_bars = []
    
    target_dt = datetime.strptime(target_time_str, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=timezone.utc)
    target_ts = target_dt.timestamp()
    
    for bar in bars:
        time_val = bar.get('time') or bar.get('timestamp') or bar.get('datetime')
        if not time_val: continue
        
        if isinstance(time_val, (int, float)):
             if time_val <= target_ts:
                context_bars.append(bar)
        else:
            if time_val <= target_time_str:
                context_bars.append(bar)
                
    return context_bars[-12:] if context_bars else []

timestamps = ["2026-04-15T03:45:00Z", "2026-04-15T04:15:00Z", "2026-04-15T04:45:00Z"]

print("--- M5 Context (around timestamps) ---")
for ts in timestamps:
    print(f"Target: {ts}")
    ctx = find_context(ohlcv_m5, ts)
    for b in ctx:
        t = b.get('time') or b.get('timestamp')
        if isinstance(t, (int, float)):
            dt = datetime.fromtimestamp(t, tz=timezone.utc).strftime("%Y-%m-%dT%H:%M:%SZ")
        else:
            dt = t
        print(f"  {dt}: O={b['open']} H={b['high']} L={b['low']} C={b['close']}")
