# -*- coding: utf-8 -*-
import struct, datetime, itertools, os

BASE = r'C:\Users\Jeebin\AppData\Roaming\MetaQuotes\Terminal\9985D9581557BB9EE387EE0E3FAA60C3\bases\Exness-MT5Trial5\history\XAUUSDm\cache\M30.hc'
d = open(BASE, 'rb').read()
n = struct.unpack_from('<I', d, 428)[0]
idx = [struct.unpack_from('<q', d, 432 + k*8)[0] for k in range(n)]
def fm(t): return datetime.datetime.fromtimestamp(t, datetime.timezone.utc).strftime('%Y-%m-%d %H:%M')

DATA = 803572
colbytes = n * 8
NC = (len(d) - DATA) // colbytes
print('columns available ~', NC)

cols = {}
for c in range(NC):
    base = DATA + c * colbytes
    cols[c] = [struct.unpack_from('<d', d, base + k*8)[0] for k in range(n)]

def valid(O,H,L,C):
    if not (H >= O-1e-9 and H >= C-1e-9 and H >= L-1e-9): return False
    if not (L <= O+1e-9 and L <= C+1e-9 and L <= H+1e-9): return False
    if not (1000 < O < 5000 and 1000 < H < 5000 and 1000 < L < 5000 and 1000 < C < 5000): return False
    return True

cands = list(range(NC))
print()
print('=== 枚举 O,H,L,C 列分配 (要求有效比例>0.99) ===')
best = []
for o,h,l,c in itertools.permutations(cands, 4):
    ok = 0
    for k in range(n):
        if valid(cols[o][k], cols[h][k], cols[l][k], cols[c][k]): ok += 1
    r = ok/n
    if r > 0.99:
        best.append((r,o,h,l,c))
best.sort(reverse=True)
for r,o,h,l,c in best[:12]:
    print('  O=col%d H=col%d L=col%d C=col%d  有效 %.4f' % (o,h,l,c,r))

if best:
    r,o,h,l,c = best[0]
    print()
    print('=== 胜出方案 O,H,L,C = col%d,%d,%d,%d 前4根 ===' % (o,h,l,c))
    for k in range(4):
        print('  ', fm(idx[k]), 'O=%.3f H=%.3f L=%.3f C=%.3f' % (cols[o][k],cols[h][k],cols[l][k],cols[c][k]))
    # 打印其余列范围
    used = {o,h,l,c}
    for cc in range(NC):
        if cc in used: continue
        vals = cols[cc]
        print('  列%d 范围 min=%.4g max=%.4g (首5: %s)' % (cc, min(vals), max(vals), ' '.join('%.3g'%v for v in vals[:5])))
