빗썸 자동매매 봇
Bithumb API 맞춤 제작
빗썸(Bithumb)의 KRW·BTC 마켓에서 24시간 동작하는 자동매매 봇을 맞춤 제작합니다. 국내 두 번째로 큰 원화 마켓을 보유한 거래소로, 업비트와 함께 운영하면 거래소 간 차익거래(김치프리미엄 포함) 전략도 가능합니다. 빗썸 고유의 호가 단위 규칙·nonce 시간 보정·자기매칭 자동 취소 등 함정을 모두 반영해 안정성 있게 제작합니다.
빗썸 API 2.0은 JWT 토큰을 Authorization: Bearer 헤더에 실어 호출합니다.
토큰 페이로드에 access_key·nonce·timestamp를 넣고
HS256으로 시크릿 키 서명하는데,
파라미터가 있는 요청은 여기에 query_hash(쿼리 문자열의 SHA512)와
query_hash_alg: "SHA512"를 반드시 추가해야 합니다.
이걸 빠뜨리면 401에 invalid_query_payload가 돌아옵니다.
⚠️ 업비트 코드를 그대로 옮기면 주문에서 막힙니다 —
빗썸 주문은 POST /v2/orders이고 파라미터명이
ord_type이 아니라 order_type입니다.
빗썸 자동매매 주요 유형
- KRW 마켓 RSI·MACD 기반 매매 — BTC·ETH·XRP 등 주요 코인 지표 추종
- 그리드 봇 — 횡보장 코인에 일정 간격 매수·매도 반복
- 거래소 간 차익거래(아비트라지) — 빗썸 ↔ 업비트 / 빗썸 ↔ 바이낸스 가격차 자동 실행
- 김치프리미엄 자동 트래킹 — 국내·해외 가격차 알림 + 임계치 초과 시 자동 진입
- 조건부 매수·매도 — 특정 가격 도달 시 시장가/지정가 분기 실행
- 실시간 알림 봇 — 매매 외 시세·거래량·신규 상장 텔레그램 알림
기술 구조
| 항목 | 사양 |
|---|---|
| API 문서 | apidocs.bithumb.com (한국어 + 영어) |
| 인증 | API Key + Secret Key + nonce(timestamp) HMAC-SHA512 서명 |
| 언어 | Python 3.10+ 64bit, requests / aiohttp |
| 마켓 | KRW (원화), BTC |
| 운영 시간 | 24시간 365일 (휴장 없음) |
| API 버전 | API 1.0 (HMAC) / API 2.0 (JWT) — 두 버전 모두 지원 |
| 수수료 | 등급별 0.04~0.25% (메이커 ~0.04~0.05%) |
빗썸 고유 함정 — 알고랩이 미리 처리합니다: nonce 시간이 ±5초 이상 어긋나면 5300 unauthorized 발생 → 서버 시간 자동 보정 로직 필수. 가격대별 호가 단위 규칙(공식 문서 일부 부정확)은 실측 검증 데이터 기반으로 적용. 자기매칭 자동 취소(5600) 회피를 위한 호가 충돌 사전 검증까지 기본 포함.
핵심 기능 구성 요소
- nonce 시간 보정: 빗썸 서버 시간과 PC 시간 오프셋 자동 측정·보정
- 호가 단위 자동 처리: 가격대별 8단계 호가 규칙 적용 (실측 검증)
- 자기매칭 회피: 본인 매수·매도 호가 충돌 사전 감지로 강제 취소 방지
- API 1.0 / 2.0 선택: 안정성 우선이면 1.0(HMAC), 신규 기능 활용이면 2.0(JWT)
- 잔고·미체결 조회 폴링: 주문 체결 상태 실시간 추적
- 리스크 관리: 일일 최대 손실 한도, 단일 코인 최대 비중, 동시 보유 코인 수 제한
- 알림: 텔레그램 진입·청산·오류 즉시 알림 + 일일 손익 리포트
빗썸 API는 실제로 어떻게 호출하나
아래는 2026년 8월 기준 빗썸 API 2.0(JWT) 기준입니다.
REST 기본 주소는 https://api.bithumb.com이고,
시세 같은 Public API는 인증 없이, 자산·주문 같은 Private API는 JWT 토큰이 필요합니다.
| 항목 | 값 |
|---|---|
| REST 주소 | https://api.bithumb.com |
| 인증 (API 2.0) | Authorization: Bearer <JWT> · 서명 알고리즘 HS256 |
| JWT 필수 필드 | access_key · nonce · timestamp |
| 파라미터 있을 때 추가 | query_hash(SHA512) · query_hash_alg: "SHA512" |
| 전체 자산 조회 | GET /v1/accounts |
| 주문 요청 | POST /v2/orders |
1. 인증 토큰 만들기 — 파라미터가 있으면 규칙이 달라진다
파라미터가 없는 요청(예: 전체 자산 조회)은 페이로드 세 필드로 끝납니다.
import jwt, uuid, time, requests
API_URL = "https://api.bithumb.com"
payload = {
"access_key": ACCESS_KEY,
"nonce": str(uuid.uuid4()), # 요청마다 새로 만든다
"timestamp": round(time.time() * 1000), # 밀리초
}
token = jwt.encode(payload, SECRET_KEY) # HS256
res = requests.get(API_URL + "/v1/accounts",
headers={"Authorization": f"Bearer {token}"}, timeout=5)
파라미터가 있는 요청은 여기에 두 필드가 더 붙습니다.
쿼리 문자열을 SHA512로 해시한 값이 query_hash입니다.
import hashlib
from urllib.parse import urlencode
param = {"market": "KRW-BTC"}
query = urlencode(param).encode()
query_hash = hashlib.sha512(query).hexdigest()
payload = {
"access_key": ACCESS_KEY,
"nonce": str(uuid.uuid4()),
"timestamp": round(time.time() * 1000),
"query_hash": query_hash,
"query_hash_alg": "SHA512", # 문자열 고정값
}
token = jwt.encode(payload, SECRET_KEY)
res = requests.get(API_URL + "/v1/orders/chance",
params=param,
headers={"Authorization": f"Bearer {token}"}, timeout=5)
서명은 HS256, query_hash는 SHA512 — 둘이 다릅니다.
토큰 서명 알고리즘과 쿼리 해시 알고리즘을 같은 것으로 맞추려다 실패하는 경우가 많습니다.
또 하나, 해시를 만든 쿼리 문자열과 실제로 보낸 쿼리가 한 글자라도 다르면
검증에 실패합니다. urlencode()를 두 번 부르지 말고
한 번 만든 값을 해시와 요청 양쪽에 그대로 쓰십시오.
배열 파라미터는 key[]=value 형태로 펼쳐야 합니다.
2. 주문 — 업비트 코드를 옮기면 여기서 막힌다
빗썸 주문은 POST /v2/orders입니다.
파라미터명이 order_type이라는 점이 가장 자주 걸립니다.
| 파라미터 | 값 | 비고 |
|---|---|---|
market | KRW-BTC 형식 | 필수 |
side | bid(매수) / ask(매도) | 필수 |
order_type | limit / price / market / best | 필수 |
price | 문자열 | 지정가, 시장가 매수 시 필수 |
volume | 문자열 | 지정가, 시장가 매도 시 필수 |
time_in_force | ioc / fok / post_only | 선택 |
client_order_id | 사용자 지정 ID | 선택 · 중복 주문 방지에 유용 |
시장가 주문의 방향별 차이를 놓치지 마십시오.
시장가 매수는 얼마어치 살지(price)를 넣고,
시장가 매도는 몇 개 팔지(volume)를 넣습니다.
둘을 반대로 넣으면 파라미터 오류가 납니다.
또한 price·volume은 문자열입니다 —
실수형으로 보내면 부동소수점 표기 때문에 값이 틀어질 수 있습니다.
3. 401이 떴을 때 확인 순서
빗썸은 오류를 error.name과 error.message로 돌려줍니다.
이름만 보면 원인이 거의 특정됩니다.
{
"error": {
"name": "invalid_query_payload",
"message": "Jwt의 query를 검증하는데 실패하였습니다."
}
}
| HTTP | name | 먼저 확인할 것 |
|---|---|---|
| 401 | invalid_query_payload | query_hash를 만든 문자열과 실제 전송 쿼리가 같은가 |
| 401 | jwt_verification | 시크릿 키가 맞는가, 서명이 HS256인가 |
| 401 | expired_jwt | timestamp가 밀리초인가, 서버 시계가 어긋나지 않았나 |
| 401 | NotAllowIP | IP 화이트리스트에 현재 서버 IP가 등록됐나 |
| 401 | out_of_scope | 해당 API Key에 주문·출금 권한이 있는가 |
| 400 | invalid_price | 가격이 호가 단위에 맞는가 |
| 400 | cross_trading | 내 기존 주문과 체결될 호가를 냈다 (자기매칭) |
| 404 | order_not_found | 취소·조회하려는 주문 ID가 유효한가 |
| 422 | order_not_ready | 접수 처리 중 — 즉시 재시도 대신 잠시 대기 |
cross_trading은 빗썸 봇에서 특히 자주 보는 항목입니다.
내 매수 호가와 내 매도 호가가 겹치면 주문이 취소되므로,
그리드 봇처럼 양방향 호가를 동시에 거는 전략은 주문 전에 자기 호가 충돌을 먼저 검사해야 합니다.
그리드 설계 자체는 그리드 매매 봇 가이드에 정리돼 있습니다.
확인 캐치. 위 엔드포인트·파라미터명·에러 코드는
2026년 8월 13일 기준 빗썸 공식 API 문서(apidocs.bithumb.com)를 근거로 정리했습니다.
아래 표의 수수료·호가 단위·호출 한도 수치는 거래소 정책에 따라 수시로 바뀌므로
코드에 상수로 박지 말고 설정으로 분리한 뒤 공식 고지에서 현재 값을 확인하십시오.
본 페이지는 자동매매 프로그램 제작 서비스 안내이며,
투자중개·투자자문이 아니고 수익률이나 시세 방향에 대한 예측을 담고 있지 않습니다.
제작 비용·기간 가이드
| 유형 | 예상 비용 | 제작 기간 |
|---|---|---|
| 단일 코인 지표 기반 봇 | 70~130만원 | 7~10일 |
| 다중 코인 + 리스크 관리 + 알림 | 130~220만원 | 10~14일 |
| 그리드 봇 | 180~300만원 | 14~20일 |
| 차익거래 (빗썸 + 업비트/바이낸스) | 250~450만원 | 14~21일 |
| 김치프리미엄 알림 + 자동 진입 | 150~300만원 | 10~16일 |
자주 묻는 질문
invalid_query_payload 오류는 왜 나나요?
JWT 안의 query_hash와 실제로 보낸 쿼리가 다를 때 납니다. 쿼리 문자열을 두 번 만들면 파라미터 순서·인코딩이 미세하게 달라져 검증에 실패합니다. 한 번 만든 문자열을 해시와 요청에 같이 쓰십시오. 배열은 key[]=value로 펼쳐야 합니다.
업비트 봇 코드를 빗썸에 그대로 쓸 수 있나요?
인증 구조는 비슷하지만 주문에서 갈립니다. 빗썸은 POST /v2/orders에 order_type을 쓰고, 시장가 매수는 price(금액)·시장가 매도는 volume(수량)을 넣습니다. 두 값 모두 문자열입니다. 거래소별 어댑터를 나누는 편이 안전합니다. 업비트 쪽 구현은 업비트 자동매매를 참고하십시오.
업비트와 비교하면 뭐가 나은가요?
업비트가 거래량·유동성 1위이지만, 빗썸은 일부 알트코인 거래량과 수수료 등급제에서 차별화됩니다. 차익거래 시에는 두 거래소를 동시에 운영하는 게 가장 흔한 구조입니다. 알고랩은 두 API 모두 익숙해 병행 봇 제작이 효율적입니다.
API 1.0(HMAC)과 2.0(JWT) 중 뭐 써야 하나요?
안정성·기존 코드 호환성이 우선이면 1.0, 신규 기능·OAuth 흐름이 필요하면 2.0입니다. 신규 제작 의뢰 시 알고랩이 요구사항 보고 결정해드립니다. 두 API를 모두 지원하는 봇으로 제작도 가능합니다.
빗썸이 거래정지·임시 점검할 때는 어떻게 처리되나요?
API 응답으로 거래정지 종목·점검 시간을 자동 감지해 신규 진입을 차단합니다. 보유 종목은 그대로 유지하고 점검 종료 후 재시작 시 보유·미체결 상태를 자동 인계합니다.
김치프리미엄 차익거래가 실제로 가능한가요?
API 차원에서는 충분히 구현 가능합니다. 다만 출금 한도·트래블룰·거래소별 입출금 시간 차이 등 운영 측면 제약이 있어, 매매 자동화는 알고랩이 맡고 자금 이동·출금은 의뢰자가 수동으로 운영하는 구조가 일반적입니다. 자세한 견적은 상담에서.
제작 사례
빗썸 자동매매 제작 사례는 포트폴리오에서 확인하실 수 있습니다. 업비트와 함께 운영하는 차익거래 사례도 다수 보유하고 있습니다.