import json
import sys
import datetime

def load_json(path):
    with open(path) as f:
        return json.load(f)

def get_bars_around(ohlcv_data, timestamp_str, timeframe_name, context_bars_before=10, context_bars_after=5):
    # parse target ts
    target_dt = datetime.datetime.strptime(timestamp_str, "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=datetime.timezone.utc)
    target_ts = int(target_dt.timestamp())
    
    # find index
    bars = ohlcv_data['bars']
    best_idx = -1
    for i, bar in enumerate(bars):
        if isinstance(bar['time'], str):
            bar_dt = datetime.datetime.strptime(bar['time'], "%Y-%m-%dT%H:%M:%SZ").replace(tzinfo=datetime.timezone.utc)
            bar_ts = int(bar_dt.timestamp())
        else:
            bar_ts = bar['time']
            
        if bar_ts <= target_ts:
            best_idx = i
        else:
            break
            
    if best_idx == -1:
        return []
        
    start_idx = max(0, best_idx - context_bars_before)
    end_idx = min(len(bars), best_idx + context_bars_after + 1)
    
    return bars[start_idx:end_idx]

def print_bar_summary(bars, label):
    print(f"--- {label} ---")
    for b in bars:
        time_str = b['time']
        if isinstance(time_str, int):
            time_str = datetime.datetime.fromtimestamp(time_str, tz=datetime.timezone.utc).strftime('%Y-%m-%dT%H:%M:%SZ')
        print(f"{time_str} O:{b['open']} H:{b['high']} L:{b['low']} C:{b['close']}")

base_dir = "/home/aryy/.hermes/profiles/finance/backtests/xauusd_2026"
h4 = load_json(f"{base_dir}/hybrid/data/ohlcv_H4.json")
m30 = load_json(f"{base_dir}/hybrid/data/ohlcv_M30.json")
m15 = load_json(f"{base_dir}/hybrid/data/ohlcv_M15.json")
m5 = load_json(f"{base_dir}/hybrid/data/ohlcv_M5.json")

print("========== ITEM 427: 2026-03-30 10:15:00 LONG ==========")
print_bar_summary(get_bars_around(h4, "2026-03-30T10:15:00Z", "H4", 2, 2), "H4 Context")
print_bar_summary(get_bars_around(m30, "2026-03-30T10:15:00Z", "M30", 3, 3), "M30 Context")
print_bar_summary(get_bars_around(m15, "2026-03-30T10:15:00Z", "M15", 4, 4), "M15 Context")
print_bar_summary(get_bars_around(m5, "2026-03-30T10:15:00Z", "M5", 10, 10), "M5 Context")

print("\n========== ITEM 428: 2026-03-30 13:00:00 SHORT ==========")
print_bar_summary(get_bars_around(h4, "2026-03-30T13:00:00Z", "H4", 2, 2), "H4 Context")
print_bar_summary(get_bars_around(m30, "2026-03-30T13:00:00Z", "M30", 3, 3), "M30 Context")
print_bar_summary(get_bars_around(m15, "2026-03-30T13:00:00Z", "M15", 4, 4), "M15 Context")
print_bar_summary(get_bars_around(m5, "2026-03-30T13:00:00Z", "M5", 10, 10), "M5 Context")

print("\n========== ITEM 429: 2026-03-30 17:45:00 SHORT ==========")
print_bar_summary(get_bars_around(h4, "2026-03-30T17:45:00Z", "H4", 2, 2), "H4 Context")
print_bar_summary(get_bars_around(m30, "2026-03-30T17:45:00Z", "M30", 3, 3), "M30 Context")
print_bar_summary(get_bars_around(m15, "2026-03-30T17:45:00Z", "M15", 4, 4), "M15 Context")
print_bar_summary(get_bars_around(m5, "2026-03-30T17:45:00Z", "M5", 10, 10), "M5 Context")

