Platform · 암호화폐 (해외)

HTX 자동매매 봇 제작

HTX(구 Huobi)는 2023년 리브랜딩한 글로벌 메이저 거래소로, 아시아 시장에서 강력한 입지를 가지고 있습니다. 현물·USDT 선물·Coin 마진 선물·옵션을 모두 지원하며 REST + WebSocket 구조로 알고랩 표준 봇 제작이 가능합니다.

한 줄 요약 HTX API는 현물이 api.huobi.pro, 선물·스왑이 api.hbdm.com으로 도메인부터 갈라집니다. 인증은 API Key + HMAC-SHA256 서명이며, Timestamp가 밀리초가 아니라 UTC 날짜·시간 문자열이라는 점이 바이낸스·바이비트와 가장 크게 다른 지점입니다. 아래에서 실제 요청 코드와 응답·오류 예시를 그대로 보여 드립니다.

HTX (구 Huobi) 자동매매 주요 유형

기술 구조

항목사양
API 문서huobiapi.github.io (Spot + Futures 분리)
인증API Key + Secret + HMAC-SHA256 서명, 타임스탬프 검증
언어Python 3.10+ 64bit, requests / websockets
상품Spot, USDT-M 선물, Coin-M 선물, Options
Rate Limit엔드포인트별 (Spot 초당 10회, Futures 초당 20회 안팎)
WebSocketPublic/Private 분리, gzip 압축 메시지
테스트넷Coin-M Futures 테스트넷 일부 제공

HTX 특이점 — gzip 메시지 + 분리된 Spot/Futures: WebSocket 메시지가 gzip으로 압축되어 와서 자동 압축 해제 처리 필요. Spot과 Futures가 별도 엔드포인트·API 문서를 사용해 통합 봇 구조가 OKX·바이비트와 다릅니다.

직접 붙여 보시려면 — HTX는 서명 규칙이 바이낸스와 달라 첫 인증에서 오래 막힙니다. 4줄 서명 문자열·Base64·UTC 타임스탬프와 api-signature-not-valid 원인 5가지를 코드로 정리한 HTX(후오비) API 서명 오류 5가지 — 첫 주문까지를 참고하세요.

핵심 기능 구성 요소

HTX (Huobi) API는 실제로 어떻게 호출하나

표만 봐서는 감이 안 오실 수 있어, 실제로 첫 인증까지 무엇을 하는지 그대로 적습니다. HTX API에서 가장 먼저 확인해야 할 것은 내가 쓸 상품군의 도메인입니다.

상품도메인경로 예
현물 (Spot)api.huobi.pro/v1/account/accounts, /v1/order/orders/place
USDT 마진 선물api.hbdm.com/linear-swap-api/…, /linear-swap-ex/market/depth
코인 마진 스왑api.hbdm.com별도 문서·별도 경로

현물 코드를 그대로 복사해 선물에 쓰면 동작하지 않습니다. 도메인이 다르고, 공식 문서(huobiapi.github.io)도 Spot과 Futures가 분리돼 있으며, 호출 한도(Rate Limit)도 상품군별로 따로 계산됩니다. 통합 봇을 만들 때 어댑터를 상품별로 나누는 이유가 이것입니다.

인증 — 요청마다 붙는 4개 파라미터

HTX는 요청할 때마다 아래 네 개를 쿼리에 넣고, 이 값들로 만든 서명을 Signature로 함께 보냅니다.

AccessKeyId      = 발급받은 Access Key
SignatureMethod  = HmacSHA256          (문자열 고정)
SignatureVersion = 2                   (문자열 고정)
Timestamp        = 2026-08-03T03:14:05  ← UTC, 초 단위 문자열

여기서 대부분 막힙니다. 바이낸스(Binance)·바이비트(Bybit)는 timestamp가 밀리초 정수인데 HTX는 UTC 날짜·시간 문자열입니다. 밀리초를 넣으면 서명은 만들어지지만 서버 검증에서 그대로 떨어집니다. 또 서명 대상은 HTTP 메서드 · 호스트 · 경로 · ASCII 오름차순 정렬된 쿼리스트링을 줄바꿈으로 이은 4줄이고, HMAC-SHA256 결과는 hex가 아니라 Base64로 인코딩해야 합니다.

계좌 조회 성공 응답 — account-id가 있어야 주문이 나간다

서명이 통과하면 현물 계좌 목록이 이렇게 돌아옵니다. 여기서 받은 id가 주문 요청의 account-id가 되므로, 첫 주문 전에 반드시 한 번 호출해 두어야 합니다.

{
  "status": "ok",
  "data": [
    { "id": 1234567, "type": "spot",   "subtype": "",        "state": "working" },
    { "id": 1234568, "type": "margin", "subtype": "btcusdt", "state": "working" }
  ]
}

실패하면 이렇게 옵니다

{
  "status": "error",
  "err-code": "api-signature-not-valid",
  "err-msg": "Signature not valid: Verification failure [_]",
  "data": null
}

api-signature-not-valid는 서명 대상 문자열이 서버 계산값과 다르다는 뜻 하나입니다. 원인은 Timestamp를 밀리초로 넣음 ② 파라미터를 ASCII 정렬하지 않음 ③ URL 인코딩을 서명 전후로 다르게 적용 ④ 서버·로컬 시간 차이 ⑤ HMAC 결과를 Base64가 아닌 hex로 인코딩 다섯 가지에 거의 다 들어갑니다. 파이썬 서명 구현 전체와 오류별 해결은 HTX(후오비) API 서명 오류 5가지 — 첫 주문까지에 코드로 정리해 두었습니다.

WebSocket — gzip 해제와 ping/pong

HTX의 WebSocket은 메시지를 gzip으로 압축해 보냅니다. 바이너리 프레임을 받아 압축을 풀고 JSON으로 파싱해야 하며, 서버가 보내는 ping에 pong으로 답하지 않으면 연결이 끊깁니다.

import gzip, json

def on_message(ws, message):
    data = json.loads(gzip.decompress(message).decode("utf-8"))
    if "ping" in data:                       # 응답하지 않으면 연결이 끊긴다
        ws.send(json.dumps({"pong": data["ping"]}))
        return
    handle(data)

ccxt로 우회할 수도 있습니다. ccxt는 HTX를 지원하므로 서명을 직접 구현하지 않고 시작할 수 있습니다. 다만 라이브러리가 감싸 주는 범위를 벗어나면(코인 마진 특수 주문, 상품별 한도 관리 등) 결국 원본 스펙으로 내려와야 합니다. 오픈소스 도구가 어디까지 해 주는지는 오픈소스 자동매매 봇 5종 비교에 정리했습니다.

도메인·경로·호출 한도 등 API 스펙은 거래소 사정으로 변경될 수 있습니다. 실제 구현 전에 HTX 공식 API 문서에서 최신 상태를 확인하시기 바랍니다.

2026-09-02 업데이트 — USDT 마진 선물(linear-swap)에서 실제로 걸리는 것

위 표는 도메인이 갈린다는 것까지만 말해 줍니다. 실제로 선물 봇을 붙이면 그 뒤에 네 가지가 더 기다립니다. 아래는 2026-09-02 기준으로 api.hbdm.com의 계약 정보 엔드포인트를 직접 호출해 받은 실제 응답과 HTX 공식 USDT 마진 계약 문서(huobiapi.github.io/docs/usdt_swap/v1/en/)를 대조한 것입니다.

GET https://api.hbdm.com/linear-swap-api/v1/swap_contract_info?contract_code=BTC-USDT

{
  "status": "ok",
  "data": [{
    "symbol": "BTC",
    "contract_code": "BTC-USDT",
    "contract_size": 0.001,        ← 1장 = 0.001 BTC
    "price_tick": 0.1,             ← 호가 단위
    "contract_status": 1,
    "support_margin_mode": "all",
    "business_type": "swap",
    "contract_type": "swap",
    "pair": "BTC-USDT",
    "trade_partition": "USDT"
  }]
}

① 주문 수량은 코인 개수가 아니라 ‘장(계약)’ 수입니다. 위 응답의 contract_size0.001이라는 것은 1장이 0.001 BTC라는 뜻입니다. 즉 0.5 BTC 상당을 잡으려면 volume500을 넣어야 합니다. 현물 코드에서 쓰던 “수량 = 코인 개수” 감각을 그대로 옮기면 주문 크기가 1,000배 어긋납니다. 게다가 contract_size는 종목마다 다르므로 하드코딩하지 말고 봇 시작 시 swap_contract_info로 받아 캐싱해야 합니다. price_tick(위 응답에서 0.1)보다 잘게 가격을 넣으면 주문 자체가 거부됩니다.

contract_code 표기 체계가 상품마다 다릅니다. 공식 문서 기준으로 무기한 스왑은 BTC-USDT이고, 만기가 있는 인도 계약은 접미사가 붙습니다.

표기의미
BTC-USDT무기한 스왑 (contract_typeswap)
BTC-USDT-CW / -NW당주 / 차주 인도 계약
BTC-USDT-CQ / -NQ당분기 / 차분기 인도 계약
BTC-USDT-201101인도일을 직접 지정하는 형식

스왑용으로 짠 심볼 조립 로직에 인도 계약 코드를 넣으면 조회는 성공했는데 엉뚱한 만기의 계약에 주문이 나갑니다. 응답의 business_type·contract_type·pair를 함께 저장해 두고 주문 직전에 검증하는 편이 안전합니다.

③ 격리(Isolated)와 전체(Cross)는 인터페이스가 아예 나뉩니다. HTX 공식 USDT 마진 문서는 같은 기능이라도 격리용과 전체용 인터페이스를 별도 항목으로 두고 있습니다. 계좌 조회만 해도 격리는 swap_account_info, 전체 마진은 swap_cross_account_info 계열입니다. 한쪽만 붙여 두면 사용자가 반대 모드로 쓰는 순간 잔고가 0으로 보입니다. 위 응답의 support_margin_modeall이면 두 모드를 모두 지원한다는 뜻이므로, 봇은 두 경로를 모두 구현하고 설정으로 고르게 만들어야 합니다.

④ v1과 v3가 공존하고, 계정 유형이 먼저입니다. USDT 마진 계약 API의 경로는 한 갈래가 아닙니다. 주문·계좌는 /linear-swap-api/v1, 계정 유형처럼 나중에 생긴 기능은 /linear-swap-api/v3, 시세는 /linear-swap-ex, 배치 시세는 /v2/linear-swap-ex, 지수·베이시스는 /index/market으로 갈립니다.

경로 계열용도
/linear-swap-api/v1계좌·주문·포지션 등 주 기능
/linear-swap-api/v3/swap_unified_account_type계정 유형 조회
/linear-swap-api/v3/swap_switch_account_type계정 유형 변경
/linear-swap-ex · /v2/linear-swap-ex시세 · 배치 시세
/index/market지수 · 베이시스

그래서 실무 순서는 “계정 유형 조회 → 계약 정보 조회 → 그다음 주문”입니다. 계정 유형을 확인하지 않고 v1 계좌 조회부터 때리면, 통합 계정으로 전환된 사용자에게서 기대와 다른 값이 나와도 원인을 못 찾습니다.

덧붙여 — ‘Huobi Pro’라는 이름은 아직 코드 안에 살아 있습니다. 2023년 리브랜딩 이후에도 현물 API 호스트는 여전히 api.huobi.pro이고, 선물 호스트는 Huobi DM 시절 이름 그대로 api.hbdm.com입니다. 검색으로 나오는 오래된 예제 코드가 지금도 대체로 도는 이유이자, 반대로 “HTX로 바뀌었으니 도메인도 바뀌었겠지”라고 짐작해 엉뚱한 호스트를 넣는 사고가 나는 이유이기도 합니다. 위 두 호스트는 2026-09-02 기준으로 실제 호출해 응답을 확인했습니다.

계약 사양(contract_size·price_tick), 경로, 계정 유형 정책은 거래소 공지로 변경됩니다. 위 수치는 2026-09-02 조회 시점의 BTC-USDT 값이며 종목마다 다릅니다. 구현 전 HTX 공식 API 문서와 swap_contract_info 실응답으로 반드시 재확인하십시오. 선물은 손실이 원금을 넘어설 수 있는 상품이며, 이 페이지는 특정 코인이나 매매 전략을 추천하지 않습니다.

거래소를 아직 확정하지 못했다면 코인 자동매매 프로그램 제작 — 업비트 vs 바이낸스 7기준에서 원화 경로·키 발급·요청 제한 기준으로 먼저 갈라 보시는 편이 빠릅니다.

제작 비용·기간 가이드

유형예상 비용제작 기간
단일 심볼 지표 기반 봇100~170만원10~14일
다중 상품 + 리스크 관리180~300만원14~21일
그리드 봇 (선물·현물)230~380만원16~24일
코인 마진 선물 봇200~350만원14~21일
거래소 간 차익거래350~600만원21~30일

자주 묻는 질문

HTX(후오비) API의 도메인은 무엇인가요?

상품군에 따라 다릅니다. 현물은 api.huobi.pro, 선물·스왑은 api.hbdm.com이며 USDT 마진 계약은 /linear-swap-api 경로를 씁니다. 코인 마진 스왑은 또 별도 문서·경로입니다. 도메인·경로는 변경될 수 있으니 공식 문서 확인이 필요합니다.

HTX API 인증은 어떻게 하나요?

API Key·Secret으로 HMAC-SHA256 서명을 만들어 붙입니다. 요청마다 AccessKeyId·SignatureMethod·SignatureVersion·Timestamp 네 개가 필요하고, Timestamp는 밀리초가 아니라 UTC 날짜·시간 문자열입니다. 서명 결과는 Base64로 인코딩합니다.

api-signature-not-valid 오류는 왜 나나요?

서명 대상 문자열이 서버 계산값과 다르기 때문입니다. Timestamp 형식, 파라미터 ASCII 정렬, URL 인코딩 시점, 서버 시간 차이, Base64 대신 hex 인코딩 — 이 다섯 가지가 원인의 대부분입니다.

HTX와 Huobi가 같은 거래소인가요?

네, 2023년 10월 Huobi가 HTX로 리브랜딩했습니다. 도메인·API 엔드포인트 일부가 변경되었지만 기존 Huobi API 코드는 대부분 호환됩니다.

바이낸스·바이비트 대비 HTX의 강점은?

아시아 시장 유동성이 풍부하고 일부 알트코인 가격이 다른 거래소와 미세하게 차이 나서 차익거래 기회가 있습니다. 코인 마진 선물 상품 다양성도 강점.

WebSocket gzip 처리가 까다로운가요?

Python 표준 라이브러리로 처리 가능합니다. 알고랩 봇은 자동 해제 + 누락 메시지 재전송 요청까지 표준 포함.

HTX 선물 주문 수량은 코인 개수인가요?

아닙니다. USDT 마진 계약의 volume장(계약) 수입니다. swap_contract_info 응답의 contract_size가 1장에 해당하는 코인 수량이며, 2026-09-02 조회 기준 BTC-USDT는 0.001입니다. 즉 0.5 BTC 상당이면 volume은 500입니다. 값은 종목마다 다르고 변경될 수 있으니 하드코딩하지 말고 봇 시작 시 조회해 캐싱하십시오.

한국 사용자도 이용 가능한가요?

현재까지 가능. 가입·KYC는 의뢰자가 직접 진행하며 알고랩은 API 연동만 담당.

제작 사례

HTX (구 Huobi) 자동매매 제작 사례는 포트폴리오에서 확인하실 수 있습니다.

HTX 단독·차익거래 모두 상담 가능

WebSocket gzip·Spot/Futures 통합 어댑터 모두 표준 포함.
알고랩이 24시간 빠르게 답변드립니다.

무료 상담 시작하기 요금제 보기