altnara 자금흐름 데스크는 시장 데이터가 어느 창구에서 어떤 모양으로 나오는지를 점검합니다. 이번 노트의 주제는 거래소마다 하루를 어디서 끊어 캔들 하나를 만드는가입니다. 운영자 보유 가능성: 본 매체는 비트코인·주요 알트 및 스테이블코인 보유 가능성을 명시합니다.
먼저 이 노트가 재는 자리를 못박아 둡니다. 여기서 잰 것은 전부 인증 헤더를 한 번도 붙이지 않고 부른 공개 캔들 창구가 돌려준 시각 값입니다. 어느 거래소의 데이터가 옳다거나 낫다는 판단은 하지 않습니다.
범위를 하나 더 못박습니다. 이 노트가 보는 것은 캔들의 경계, 즉 봉 하나가 열리는 시각입니다. 서버 시계가 맞는지 틀리는지는 이 노트의 주제가 아닙니다. 다만 경계 차이를 시계 오차로 오해하지 않게 하려고 시계도 같은 날 따로 쟀고, 그 결과를 대조군으로만 씁니다. 시계 자체를 다룬 노트는 거래소 서버 시각과 타임스탬프 허용 폭에 따로 있습니다.
![]()
결론부터 — 시계는 맞는데 하루의 시작이 다릅니다
일봉을 여는 시각이 열 곳 중 여덟 곳은 한국시각 오전 9시, 두 곳은 오전 1시였습니다. 8시간 차이입니다. 오전 1시에 여는 두 곳은 OKX와 비트겟이고, 한국시각 오전 1시는 협정세계시로 전날 오후 4시, 곧 UTC+8 지역의 자정입니다.
그런데 같은 날 잰 서버 시계는 여덟 곳이 서로 53.8밀리초 안에 붙어 있었습니다. 시계는 밀리초 단위로 맞고, 하루를 끊는 자리는 8시간이 벌어져 있습니다. 이 둘은 전혀 다른 문제입니다.
어떤 창구를 어떻게 받았는지
| 항목 | 값 |
|---|---|
| 창구 | 각 거래소의 공개 캔들(kline) 조회 |
| 인증 | 없음 |
| 종목 | BTC 기준. 달러 마켓은 BTC/USDT(코인베이스는 BTC/USD), 원화 마켓은 BTC/KRW |
| 조회 일시 | 2026년 8월 25일 오전 11시 52분 51초에서 57초 사이 (한국 시각) |
| 스냅샷 폭 | 6.69초 |
| 본 것 | 각 주기별로 최근 캔들 3개의 여는 시각 |
| 안 본 것 | 시가·고가·저가·종가 값, 거래량, 각 사의 약관과 화면 표시 |
| 시각 표기 | 전부 한국 시각(KST) 으로 바꿔 적었습니다 |
거래소마다 응답 형식이 달라서 값을 맞추는 데 손이 갑니다. 바이낸스와 MEXC는 밀리초 정수, OKX와 바이비트와 비트겟은 문자열로 담긴 밀리초, 게이트와 쿠코인과 코인베이스는 초 단위 정수, 업비트는 문자열 날짜입니다. 초 단위를 밀리초로 착각하면 시각이 1970년대로 튑니다.
1시간봉과 4시간봉은 열 곳이 전부 같았습니다
먼저 짧은 주기입니다.
| 주기 | 바이낸스 | OKX | 바이비트 | 비트겟 | 업비트 |
|---|---|---|---|---|---|
| 1시간봉 | 09:00 · 10:00 · 11:00 | 09:00 · 10:00 · 11:00 | 09:00 · 10:00 · 11:00 | 09:00 · 10:00 · 11:00 | 09:00 · 10:00 · 11:00 |
| 4시간봉 | 01:00 · 05:00 · 09:00 | 01:00 · 05:00 · 09:00 | 01:00 · 05:00 · 09:00 | 01:00 · 05:00 · 09:00 | 01:00 · 05:00 · 09:00 |
다섯 곳이 초 단위까지 같습니다. 4시간봉이 한국시각 01시·05시·09시에 열린다는 것은 협정세계시 16시·20시·00시라는 뜻이고, 곧 UTC 자정을 기준으로 4시간씩 끊었다는 뜻입니다.
여기까지만 보면 문제가 없어 보입니다. 실제로 단타 구간에서 캔들을 맞대 보는 사람이 이상을 못 느끼는 이유가 이것입니다. 4시간봉까지는 8시간 차이가 4의 배수라 차이가 상쇄되어 보이지 않습니다.

6시간봉부터 갈라집니다
| 주기 6시간봉 | 여는 시각 (KST) |
|---|---|
| 바이낸스 | 21:00 · 03:00 · 09:00 |
| 바이비트 | 21:00 · 03:00 · 09:00 |
OKX 6Hutc | 21:00 · 03:00 · 09:00 |
OKX 6H (기본값) | 19:00 · 01:00 · 07:00 |
2시간 어긋납니다. 8시간 차이를 6으로 나눈 나머지가 2이기 때문입니다. 여기서부터 어긋남이 눈에 보이기 시작합니다.
일봉에서 8시간이 그대로 벌어집니다
가장 많이 쓰는 주기입니다. 이번에는 열 곳을 다 받았습니다.
| 거래소 | 일봉 여는 시각 (KST) | UTC 자정 기준 |
|---|---|---|
| 바이낸스 | 09:00 | 같음 |
| 바이비트 | 09:00 | 같음 |
| 업비트 | 09:00 | 같음 |
| 게이트 | 09:00 | 같음 |
| 쿠코인 | 09:00 | 같음 |
| MEXC | 09:00 | 같음 |
| 코인베이스 | 09:00 | 같음 |
OKX 1Dutc | 09:00 | 같음 |
OKX 1D (기본값) | 01:00 | 8시간 이름 |
비트겟 1day (기본값) | 01:00 | 8시간 이름 |
같은 8월 25일 일봉인데 OKX와 비트겟의 8월 25일봉은 나머지 여덟 곳의 8월 24일봉 후반부와 겹칩니다. 정확히는 8월 24일 16시부터 8월 25일 16시까지(협정세계시)를 하루로 묶습니다.
주봉과 월봉도 같은 폭으로 밀립니다.
| 주기 | 나머지 거래소 | OKX 기본값 | 비트겟 기본값 |
|---|---|---|---|
| 주봉 | 월요일 09:00 | 월요일 01:00 | 월요일 01:00 |
| 월봉 | 1일 09:00 | 1일 01:00 | (확인 안 함) |
OKX 월봉은 8월 1일 오전 1시에 열리고 1Mutc 는 8월 1일 오전 9시에 열립니다. 월봉 하나에서 8시간이면 8월 1일 새벽 장이 7월봉에 들어가느냐 8월봉에 들어가느냐가 갈립니다.
UTC 변형은 있습니다 — 다만 달라고 해야 줍니다
두 거래소 모두 UTC 기준 캔들을 제공합니다. 기본값이 아닐 뿐입니다.
| 거래소 | 기본 파라미터 | UTC 파라미터 | 결과 |
|---|---|---|---|
| OKX | 1D 1W 1M 3D 6H 12H | 1Dutc 1Wutc 1Mutc 3Dutc 6Hutc 12Hutc | 09:00 KST 로 맞음 |
| 비트겟 | 1day 1week | 1Dutc 1Wutc | 09:00 KST 로 맞음 |
여기 함정이 하나 더 있습니다. 비트겟의 UTC 파라미터는 대소문자를 가립니다.
| 요청한 값 | 응답 |
|---|---|
1day | 정상 (UTC+8 기준) |
1Dutc | 정상 (UTC 기준) |
1dutc | HTTP 400 |
1day_utc | HTTP 400 |
1wutc | HTTP 400 |
소문자로 적으면 조용히 UTC+8 로 돌아가는 것이 아니라 요청 자체가 거부됩니다. 이건 오히려 다행입니다. 조용히 다른 값을 주는 것보다 400을 받는 편이 낫습니다. 다만 재시도 로직이 400을 삼키고 기본값으로 되돌아가게 짜여 있다면 그 다행이 사라집니다.
대조군 — 서버 시계는 맞습니다
경계 차이를 시계 오차로 오해하지 않으려고 같은 날 시계를 따로 쟀습니다. 서버 시각 창구가 따로 있는 여덟 곳을 아홉 번씩 왕복해, 응답에 실린 서버 시각과 요청을 보낸 순간과 받은 순간의 중간값을 견줬습니다. 참값은 서로 다른 표준시각 서버 세 곳에서 받았습니다.
| 거래소 | 참값 대비 |
|---|---|
| 바이비트 | +8.6밀리초 |
| OKX | +11.0밀리초 |
| 비트겟 | +11.0밀리초 |
| MEXC | +11.2밀리초 |
| 쿠코인 | +11.8밀리초 |
| 바이낸스 | +13.5밀리초 |
| 코인베이스 | +14.2밀리초 |
| 게이트 | +62.4밀리초 |
여덟 곳의 최대 격차가 53.8밀리초입니다. 그리고 이 측정법의 오차는 왕복 시간의 절반까지 벌어질 수 있는데, 게이트는 왕복이 156밀리초라 오차만 78밀리초입니다. 그러니 게이트가 정말로 앞서 있다고 말할 수는 없습니다. 말할 수 있는 것은 여덟 곳 모두가 측정 불확실도 안에서 참값에 붙어 있다는 것까지입니다.
정작 어긋나 있던 것은 측정에 쓴 PC의 시계로, 참값보다 2.115초 뒤처져 있었습니다. 거래소 여덟 곳을 합친 격차의 40배쯤 됩니다. 타임스탬프 오류를 만나면 거래소를 의심하기 전에 자기 시계를 먼저 보는 편이 빠릅니다.
정리하면 이렇습니다.
| 항목 | 벌어진 폭 |
|---|---|
| 거래소 여덟 곳의 서버 시계 격차 | 53.8밀리초 |
| 일봉 경계 격차 | 28,800,000밀리초 (8시간) |
같은 「시간」 문제로 보이지만 스케일이 50만 배 다릅니다. 시계는 프로토콜로 맞추는 것이고 캔들 경계는 거래소가 정하는 규칙이라 그렇습니다.

실제로 걸리는 자리
첫째, 백테스트의 일봉 지표가 통째로 달라집니다. 일봉 종가로 계산하는 이동평균, RSI, 볼린저밴드는 경계가 8시간 밀리면 다른 값이 됩니다. 같은 전략을 OKX 기본 일봉으로 돌렸을 때와 바이낸스 일봉으로 돌렸을 때 결과가 갈리는데, 원인이 전략이 아니라 데이터 경계에 있습니다.
과거 캔들을 어디까지 거슬러 받을 수 있는지, 한 번에 몇 개까지 주는지는 창구마다 또 다릅니다. 그 건은 거래소별 과거 시세 조회 깊이와 요청 한도에 따로 적어 두었습니다. 경계가 다른 데이터를 깊이까지 다르게 받아 오면 어긋남이 두 겹이 됩니다.
둘째, 두 거래소의 일봉을 한 표에 섞으면 안 됩니다. 여러 거래소에서 캔들을 모아 하나의 데이터셋을 만드는 경우, 파라미터를 통일하지 않으면 어떤 행은 UTC 하루이고 어떤 행은 UTC+8 하루가 됩니다. 눈으로는 구분이 안 됩니다. 날짜 문자열은 똑같이 「2026-08-25」로 찍히기 때문입니다.
셋째, 「오늘의 등락률」이 갈립니다. 하루의 시작이 다르면 기준가가 다르고, 기준가가 다르면 등락률이 다릅니다. 국내 거래소끼리도 이 문제가 있어서 같은 순간에 같은 코인의 등락률이 서로 다르게 찍힙니다.
넷째, 4시간봉까지만 보면 못 찾습니다. 이 노트에서 확인한 대로 1시간봉과 4시간봉은 열 곳이 전부 같습니다. 검증을 짧은 주기로만 하면 통과하고, 일봉으로 넘어가는 순간 어긋납니다.
확인하지 못한 것
- 캔들의 값을 대조하지 않았습니다. 이 노트는 여는 시각만 봤습니다. 같은 구간의 시가·종가가 거래소끼리 얼마나 다른지는 재지 않았습니다.
- 선물·무기한 계약은 보지 않았습니다. 전부 현물 캔들입니다. 선물 쪽 경계가 같은지는 따로 확인해야 합니다.
- BTC 한 종목만 봤습니다. 종목마다 다를 이유는 없어 보이지만 확인한 것은 아닙니다.
- 비트겟 월봉은 받지 않았습니다. 표에 「확인 안 함」으로 적어 두었습니다.
- 각 사의 문서에 이 기준이 어떻게 적혀 있는지는 이 노트의 근거가 아닙니다. 응답으로 온 시각 값만 근거입니다.
- 한 순간의 스냅샷입니다. 6.69초짜리 조회 하나입니다.
정리
- 일봉을 여는 시각이 열 곳 중 여덟 곳은 한국시각 09시, OKX와 비트겟 두 곳은 01시입니다. 8시간 차이입니다.
- 1시간봉과 4시간봉은 열 곳이 전부 일치합니다. 6시간봉에서 2시간 어긋나고, 일봉에서 8시간이 그대로 드러납니다.
- 두 거래소 모두 UTC 변형을 제공하지만 기본값이 아닙니다. 비트겟은
1Dutc는 되고1dutc는 HTTP 400입니다. - 같은 날 잰 서버 시계는 여덟 곳이 53.8밀리초 안이었습니다. 시계 문제가 아니라 규칙 문제입니다.
- 여러 거래소의 캔들을 한곳에 모으고 있다면 파라미터부터 통일하는 편이 낫습니다.
이 노트는 정보 제공 목적이며 매매 권유가 아닙니다. 숫자는 전부 2026년 8월 25일 오전 11시 52분 전후의 조회값입니다.