H4가 같은 H4가 아니었다: TradingView와 MT5 캔들 경계를 다시 만든 과정
상위 시간봉 전략을 MT5로 옮길 때 가장 당연하게 믿었던 것이 'H4는 어디서 보나 H4'라는 생각이었습니다. 골드에서 패턴 수가 계속 안 맞아 봉 자체를 비교해보니 이 전제가 틀렸습니다. 문제는 네 시간이라는 길이가 아니라 어디서 네 시간을 끊느냐였습니다.

2026-08-25 TV1305 H4/H2 parity audit에서 XAUUSD 세션 앵커를 추적한 기록을 바탕으로 작성했습니다.
서버 시간을 7시간 옮기는 것만으로는 부족했다
처음에는 MT5 서버 시간과 TradingView 화면 시간을 맞추면 해결될 거라고 봤습니다. H2 일부는 맞았지만 H4 패턴은 계속 어긋났습니다. 같은 가격 데이터를 보는데도 상위봉 OHLC가 달랐습니다.
TradingView의 intraday bar가 단순 자정 기준이 아니라 해당 심볼의 세션 시작점을 기준으로 끊길 수 있다는 점을 다시 확인했습니다.
골드는 NY 18시 앵커 때문에 H4 phase가 +2시간이었다
감사에 사용한 골드 소스는 뉴욕 wall clock 18:00을 세션 앵커로 잡았습니다. H2와 H3는 18이 각각 2와 3으로 나누어떨어져 큰 문제가 없었지만 H4는 18 mod 4 = 2라 봉 경계가 두 시간 이동했습니다.
즉 18→22→02→06→10→14 순서로 끊기는 H4를 자정 기준 H4와 같은 것으로 보면 고가·저가·종가와 패턴 판단이 달라집니다.
결국 native H4를 버리고 H1에서 다시 묶었다
수정 버전에서는 MT5 native H2/H3/H4 OHLC를 신호 계산에 직접 쓰지 않고, 더 작은 기준 봉을 TradingView clock에 맞춰 다시 묶어 synthetic candle을 만들었습니다.
이 방식은 코드가 복잡해지지만 어떤 브로커의 서버 시간이 바뀌더라도 '원본 플랫폼이 본 봉'을 명시적으로 재구성할 수 있다는 장점이 있었습니다.
타임프레임은 숫자가 아니라 시간축 정의다
4시간봉이라는 이름만 같으면 된다고 생각하면 상위봉 전략에서 묘한 불일치가 계속 남습니다. 특히 CFD와 FX, 크립토는 세션 시작점이 서로 다르고 DST까지 끼어듭니다.
이후에는 백테스트 파일을 받을 때 심볼, 타임프레임뿐 아니라 소스 거래소/브로커와 세션 앵커를 같이 기록하고 있습니다.
백테스트와 연구 수치는 과거 데이터의 관찰 결과이며 미래 수익을 보장하지 않습니다. 실제 거래 결과는 체결 비용, 슬리피지, 포지션 크기, 시장 환경에 따라 달라질 수 있습니다.
