HTX API:5步掌握交易下单技巧,助你躺赚?
HTX API 接口详解
概述
HTX (原火币全球站) 提供了一套全面的应用程序编程接口 (API),旨在赋能开发者通过代码化的方式无缝访问并高效操控 HTX 加密货币交易所的各项核心功能。这些功能涵盖了广泛的操作,不仅包括执行买卖订单、实时查询账户余额,还包括获取深度市场数据、精细化地管理订单状态等。 本文将深入剖析 HTX API 的各个组成部分,提供详细的指导,从而帮助开发者更全面地理解、更有效地使用该API,以便构建强大的交易应用程序和自动化策略。 开发者可以通过API实现自动化交易策略、构建量化交易模型、集成市场数据到自己的应用中,或者创建自定义的交易界面。
API 接口类型
HTX (或Huobi Global) API 主要分为两种类型,分别服务于不同的数据访问和交易需求:
-
REST API:
REST (Representational State Transfer) API 基于标准的 HTTP 协议,遵循请求-响应的交互模式。客户端发起请求,服务器接收并处理请求后返回响应数据。REST API 的优势在于其简单易用、通用性强,适用于需要同步交互的场景,例如:
- 提交限价单、市价单等各种类型的交易订单。
- 查询账户余额、交易历史、订单状态等账户信息。
- 获取历史交易数据、K 线数据等市场信息。
- 进行资金划转、充值提现等操作。
REST API 的请求通常采用 JSON (JavaScript Object Notation) 格式,响应也以 JSON 格式返回,方便客户端解析和处理。
-
WebSocket API:
WebSocket API 基于 WebSocket 协议,与传统的 HTTP 请求-响应模式不同,它提供了一种全双工的通信能力。一旦客户端与服务器建立连接,双方就可以实时地互相发送数据,而无需频繁地发起请求。WebSocket API 非常适合于需要实时更新的场景,例如:
- 接收实时的市场数据推送,包括最新的价格、成交量、深度等信息。
- 接收订单状态的实时更新,包括订单创建、成交、撤销等状态变化。
- 订阅特定的交易对或事件,以便在发生相关变化时立即收到通知。
WebSocket 连接保持长连接,可以显著降低延迟,提高数据更新的效率。对于需要高速、低延迟数据流的应用场景,WebSocket API 是更优的选择。
认证与授权
访问 HTX API 需要进行严格的认证和授权流程,这是确保用户数据和平台资产安全性的关键措施。 HTX 采用基于 API Key 和 Secret Key 的双重身份验证机制,强化了访问控制。API Key 类似于用户的公开身份标识,用于向 HTX 服务器表明请求的来源。它允许服务器识别发出请求的具体用户或应用程序。Secret Key 则类似于用户的私钥或密码,必须妥善保管,绝不能泄露给任何第三方。它用于对 API 请求进行数字签名,证明请求的真实性和完整性,防止篡改和伪造。在使用 API 之前,用户需要在 HTX 平台创建并获取 API Key 和 Secret Key。请务必将 Secret Key 安全地存储在本地,并采取必要的安全措施,例如加密存储和访问控制,防止未经授权的访问。
获取 HTX API Key 和 Secret Key
要使用 HTX (原火币全球站) 的 API 进行交易或其他操作,您需要首先生成并获取 API Key 和 Secret Key。 这两个密钥是您访问 HTX API 的凭证,务必谨慎保管,避免安全风险。
-
登录 HTX 账户。
访问 HTX 官方网站 (www.htx.com),使用您的账户名和密码登录。 如果您还没有账户,需要先注册一个。
-
进入 API 管理页面。
登录后,将鼠标悬停在用户头像上,在下拉菜单中找到 "API 管理" 或类似的选项。 点击进入 API 管理页面。 不同时期,HTX 的界面可能会略有变化,但通常都能在账户设置或安全设置中找到 API 管理入口。
-
创建新的 API Key。
在 API 管理页面,点击 "创建 API Key" 或类似的按钮。 您需要为新的 API Key 命名,并设置相应的权限。权限设置至关重要,请务必根据您的实际需求进行配置。 常见的权限包括:
- 读取权限 (Read): 允许 API 访问您的账户信息,例如余额、交易历史等。
- 交易权限 (Trade): 允许 API 进行交易操作,例如下单、取消订单等。
- 提币权限 (Withdraw): 允许 API 从您的账户提币。 强烈建议不要开启此权限,除非您明确知道自己在做什么,并采取了严格的安全措施。
在设置权限时,请遵循最小权限原则,即只授予 API 必要的权限。 例如,如果您只需要获取市场数据,则只需要授予读取权限,而不需要授予交易权限。
您还可以设置 API Key 的 IP 地址限制。 只有来自指定 IP 地址的请求才能使用该 API Key。 这可以进一步提高 API Key 的安全性。 如果您不确定自己的 IP 地址,可以使用在线工具查询。
-
保存 API Key 和 Secret Key。
创建 API Key 后,HTX 会显示您的 API Key 和 Secret Key。 Secret Key 只会显示一次,请务必将其复制并妥善保存。 建议您将其存储在安全的地方,例如密码管理器或加密文件中。 如果您丢失了 Secret Key,您需要重新生成一个新的 API Key。
API Key 和 Secret Key 是您访问 HTX API 的唯一凭证,一旦泄露,可能会导致您的账户资金损失。 因此,请务必妥善保管,避免泄露给他人。
重要安全提示:
- 不要将 API Key 和 Secret Key 存储在公共代码仓库中,例如 GitHub。
- 不要通过电子邮件或即时通讯工具发送 API Key 和 Secret Key。
- 定期更换 API Key 和 Secret Key。
- 监控您的 API 使用情况,及时发现异常情况。
- 开启 HTX 账户的双重验证 (2FA)。
请求签名
所有需要认证的 REST API 请求都需要进行签名,以确保请求的完整性和真实性。 未经正确签名的请求将被服务器拒绝。 签名过程遵循特定的步骤,以确保安全性和兼容性。
-
构建请求字符串。 请求字符串是签名过程的核心,它包含了请求的所有关键信息。 构建请求字符串时需要注意以下几点:
- HTTP 方法 (GET/POST/PUT/DELETE): 指明请求的类型,例如获取数据 (GET)、创建数据 (POST)、更新数据 (PUT) 或删除数据 (DELETE)。 需要使用大写形式。
- 请求路径 (例如:/v1/account/accounts): 指明请求的具体资源地址。 以正斜杠 "/" 开头, 并且需要与 API 文档中的路径完全匹配。
- 请求参数 (按字母顺序排序,并进行 URL 编码): 请求参数以键值对的形式存在, 并且需要按照参数名称的字母顺序进行排列。 如果参数值包含特殊字符, 需要进行 URL 编码, 以确保其能够正确传输。
-
SignatureVersion
(固定值为 "2"): 声明签名版本, 当前版本固定为 "2"。 -
SignatureMethod
(固定值为 "HmacSHA256"): 声明签名算法, 当前算法固定为 "HmacSHA256", 是一种安全的哈希算法。 -
AccessKeyId
(API Key): 您的 API 密钥, 用于标识您的身份。 需要从您的账户管理页面获取。 -
Timestamp
(UTC 时间戳,格式为 "YYYY-MM-DDThh:mm:ss"): 请求发送时的 UTC 时间戳。 必须与服务器时间保持同步, 并且格式必须严格按照 "YYYY-MM-DDThh:mm:ss" 的格式, 例如: "2023-10-27T10:30:00"。
-
使用 Secret Key 对请求字符串进行 HMAC-SHA256 加密。 Secret Key 是您的私钥,用于对请求字符串进行加密。 请务必妥善保管您的 Secret Key,不要泄露给任何人。
-
对加密后的结果进行 Base64 编码,得到签名字符串。 Base64 编码将二进制数据转换为可打印的 ASCII 字符,以便于在 HTTP 请求头中传输。
-
将签名字符串添加到请求头中,Key 为
Signature
。 服务器将使用该签名字符串验证请求的真实性。
示例 (Python):
import hashlib
import hmac
import base64
import urllib.parse
import time
import datetime
api_key = "your_api_key"
secret_key = "your_secret_key"
method = "GET"
url = "/v1/account/accounts"
params = {} # 请求参数
def generate_signature(api_key, secret_key, method, url, params):
timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S')
params['AccessKeyId'] = api_key
params['SignatureMethod'] = 'HmacSHA256'
params['SignatureVersion'] = '2'
params['Timestamp'] = timestamp
sorted_params = sorted(params.items(), key=lambda x: x[0])
query_string = urllib.parse.urlencode(sorted_params)
payload = f"{method}\napi.huobi.pro\n{url}\n{query_string}"
digester = hmac.new(secret_key.encode('utf-8'), payload.encode('utf-8'), hashlib.sha256)
signature = base64.b64encode(digester.digest()).decode()
return signature
signature = generate_signature(api_key, secret_key, method, url, params)
print(signature)
REST API 接口
HTX REST API 提供了一系列功能强大的接口,旨在满足各种复杂的交易需求和数据访问场景。这些接口涵盖了账户管理、现货交易、合约交易、杠杆交易、以及市场数据查询等多个方面,为开发者提供了全面的工具集,以便构建高效、可靠的加密货币交易应用程序。
通过 REST API,用户可以便捷地进行以下操作:
- 账户管理: 查询账户余额、获取交易历史记录、进行资金划转等。API 允许用户全面管理其交易账户,实时掌握资金动态,并进行灵活的资产配置。
- 现货交易: 下达买单或卖单、撤销订单、查询订单状态。开发者可以利用这些接口构建自动化交易策略,实现程序化交易,从而提高交易效率和盈利能力。
- 合约交易: 进行永续合约和交割合约的开仓、平仓、设置止盈止损等操作。合约交易 API 提供了强大的风险管理工具,帮助用户有效控制风险,提高收益潜力。
- 杠杆交易: 借入或偿还杠杆资金、进行杠杆交易。杠杆交易 API 为用户提供了放大利润的机会,但也伴随着较高的风险,需要谨慎使用。
- 市场数据查询: 获取实时行情数据、历史K线数据、交易深度信息等。这些数据对于量化分析、策略回测以及风险评估至关重要,是构建成功交易策略的基础。
为了确保交易的安全性和稳定性,HTX REST API 采用了多重安全措施,包括 API 密钥认证、IP 地址白名单、数据加密传输等。同时,API 文档详细描述了每个接口的参数、返回值和错误代码,方便开发者快速上手。HTX 团队也提供技术支持,解答开发者在使用过程中遇到的问题。
账户相关接口
-
/v1/account/accounts
: 获取用户所有账户信息。该接口允许用户查询其在平台上的所有账户,包括不同币种的账户以及可能存在的子账户。返回的信息通常包含账户ID、账户类型(如现货账户、合约账户)、以及每个账户的简要余额概览。更详细的余额信息需要通过账户ID单独查询。 -
/v1/account/accounts/{account-id}/balance
: 获取指定账户的余额信息。该接口接受一个账户ID作为参数,并返回该账户的详细余额信息。返回数据通常包含可用余额、冻结余额、以及账户中所有币种的余额明细。对于多币种账户,会列出每种币的余额。该接口是获取账户资产状况最详细的方式。
交易相关接口
-
/v1/order/orders
: 下单接口。此接口允许用户提交新的交易订单,包括限价单、市价单等多种类型。提交订单时,需要提供交易对、数量、价格(限价单)、交易方向(买入或卖出)等关键参数。服务器将验证这些参数的有效性,并在满足交易条件时执行订单。 -
/v1/order/orders/{order-id}
: 获取指定订单的详细信息。通过提供订单ID,用户可以查询特定订单的完整信息,包括订单状态(已成交、未成交、部分成交、已撤销等)、订单创建时间、成交均价、手续费等。此接口对于跟踪订单状态和分析交易执行情况至关重要。 -
/v1/order/orders/{order-id}/submitcancel
: 撤销指定订单。用户可以使用此接口取消尚未完全成交的订单。提交撤销请求后,系统将尝试取消订单。撤销请求是否成功取决于市场情况和订单状态。如果订单已经完全成交,则无法撤销。 -
/v1/order/openOrders
: 获取当前未成交的订单列表。此接口返回用户所有未成交的订单,包括挂单中和部分成交的订单。通过此接口,用户可以全面了解其当前的市场仓位和挂单情况,便于调整交易策略。 -
/v1/order/history
: 获取历史成交记录。此接口提供用户历史成交记录的查询功能。用户可以根据时间范围、交易对等条件筛选历史成交记录,用于交易分析、盈亏计算和税务申报等目的。返回的数据通常包括成交时间、成交价格、成交数量、手续费等详细信息。
市场数据相关接口
-
/market/tickers
: 提供全面的市场概览,获取所有交易对的最新行情数据。该接口返回的信息包括但不限于:最高价(high)、最低价(low)、最新成交价(close)、交易量(volume)、以及24小时价格变动百分比(change percentage)。通过此接口,用户可以快速了解整体市场表现和各个交易对的即时动态。 -
/market/detail/merged
: 获取指定交易对的聚合行情数据,适用于需要综合性市场信息的场景。返回的数据通常包括:当前最佳买一价和卖一价(bid and ask price)、成交量加权平均价(VWAP)、以及更详细的行情汇总。此接口提供的信息比/market/tickers
更为详细,适合进行深度分析。 -
/market/depth
: 获取指定交易对的深度数据,也称为订单簿数据。深度数据按照买单和卖单的价格进行组织,并显示每个价格级别的订单量。用户可以指定返回的深度范围(例如,返回前N个买单和卖单),从而了解市场买卖力量的分布情况。此接口对于高频交易和算法交易至关重要。 -
/market/history/kline
: 获取指定交易对的历史 K 线数据。K 线(也称为烛台图)是一种常用的技术分析工具,它以图形方式显示指定时间段内的开盘价(open)、收盘价(close)、最高价(high)和最低价(low)。用户可以指定 K 线的时间周期(例如,1 分钟、5 分钟、1 小时、1 天等),从而分析历史价格趋势。此接口是技术分析师和交易员进行图表分析和策略回测的关键数据来源。
WebSocket API 接口
HTX WebSocket API 提供了低延迟的实时数据推送服务,专为需要高速数据更新的应用设计,例如高频交易机器人、实时监控面板以及自动化交易系统。通过WebSocket连接,用户可以订阅市场数据流,包括但不限于实时交易价格、成交量、深度行情数据(Order Book),以及个人账户的订单状态更新。
相较于传统的REST API轮询方式,WebSocket API显著降低了数据延迟,避免了频繁请求带来的服务器压力,并提供更加流畅和实时的用户体验。市场数据推送涵盖多个交易对,并支持不同粒度的数据聚合,例如:最新的交易价格、最佳买卖价(Top of Book)以及更深层次的订单簿快照。
订单状态更新则允许用户实时追踪其交易订单的执行情况,包括订单创建、挂单、成交、撤销等状态变化。这些信息对于及时调整交易策略、控制风险至关重要。 WebSocket连接采用持久连接,减少了连接建立的开销,并利用高效的二进制数据传输格式(如Protobuf或MessagePack),进一步提升数据传输效率。
连接
连接到 WebSocket API 是通过建立一个标准的 WebSocket 连接来实现的。该连接必须指向服务器提供的特定 WebSocket 端点(endpoint)。在建立连接之前,务必确认目标端点的 URL 地址是正确的,并且客户端与服务器之间的网络连接稳定可靠。不正确的端点或不稳定的连接会导致连接失败。
一旦 WebSocket 连接成功建立,客户端和服务器之间便可以开始双向通信,进行实时数据交换。在连接建立过程中,客户端可能需要提供身份验证信息,以确保连接的安全性和授权。身份验证方法可能包括 API 密钥、令牌或其他安全凭证。服务器会对客户端提供的身份验证信息进行验证,只有通过验证的客户端才能成功建立连接并访问 WebSocket API 的功能。
订阅
通过发送符合 JSON 格式的订阅消息,可以实时接收感兴趣的数据频道更新。 订阅机制允许用户选择性地接收数据,从而优化带宽使用并降低处理负载。 正确构造订阅消息是接收目标数据的关键。
-
市场数据频道:
市场数据频道提供实时的交易信息,包括深度数据、K线数据和成交明细,是量化交易和市场分析的基础数据源。
-
market.{symbol}.depth.{type}
: 订阅指定交易对的深度数据。{symbol}
为交易对名称,代表具体的交易市场,例如BTCUSDT
。{type}
为深度类型,指示深度数据的精度和聚合程度,例如:step0
(最高精度,原始订单簿数据),step1
,step2
(精度依次降低,数据量减少)。 深度数据反映了买卖双方的挂单情况,是判断市场微观结构和流动性的重要依据。 不同step
级别影响数据的详细程度和更新频率,需要根据具体应用场景选择合适的级别。 -
market.{symbol}.kline.{period}
: 订阅指定交易对的 K 线数据。{symbol}
为交易对名称,例如ETHUSDT
。{period}
为 K 线周期,定义了每根 K 线的时长,例如:1min
,5min
,15min
,30min
,60min
(小时线),1day
(日线),1mon
(月线),1week
(周线),1year
(年线)。 K 线图是技术分析的核心工具,用于识别趋势和预测价格变动。 不同的时间周期提供不同时间尺度的市场视角,交易者可以根据自己的交易策略选择合适的 K 线周期。 -
market.{symbol}.trade.detail
: 订阅指定交易对的成交明细数据。 该频道提供每一笔交易的详细信息,包括成交价格、成交数量和成交时间。 成交明细数据可以用于高频交易策略、市场微观结构分析和订单流分析。 通过分析成交明细,可以洞察市场的实时动态和交易行为。
-
-
订单状态更新频道:
订单状态更新频道允许用户实时跟踪其交易订单的状态变化,及时了解订单的执行情况。
-
orders.{symbol}
: 订阅指定交易对的订单状态更新。 订阅后,当用户的订单状态发生变化时,例如订单被提交、部分成交、完全成交或被取消,用户将收到相应的通知。{symbol}
为交易对名称,例如LTCUSDT
。 订单状态更新对于自动化交易和风险管理至关重要。
-
数据格式
WebSocket API 推送的数据采用 JSON (JavaScript Object Notation) 格式。JSON 是一种轻量级的数据交换格式,易于阅读和编写,同时也易于机器解析和生成,使其成为实时数据传输的理想选择。服务器推送的每一个数据更新都将以 JSON 对象的形式呈现。
以下是一个深度数据 (Market Depth) 的示例,展示了通过 WebSocket 接口接收到的典型数据结构。深度数据反映了市场上买单 (Bids) 和卖单 (Asks) 的实时价格和数量分布,对于交易者分析市场深度和流动性至关重要。
{
"ch": "market.btcusdt.depth.step0",
"ts": 1678886400000,
"tick": {
"bids": [
[
25000.0,
1.0
],
[
24999.0,
0.5
]
],
"asks": [
[
25001.0,
0.8
],
[
25002.0,
1.2
]
],
"ts": 1678886400000,
"version": 12345
}
}
字段说明:
-
ch
: (Channel) 频道名称,指示数据的类型和交易对。例如,market.btcusdt.depth.step0
表示比特币 (BTC) 兑 USDT 交易对的深度数据,step0
指示深度数据的聚合级别。不同的step
值代表不同的聚合程度,数值越小,深度数据越精细。 -
ts
: (Timestamp) 时间戳,表示数据生成的时间,采用 Unix 时间戳格式,单位为毫秒。时间戳可用于确定数据的实时性,并与其他数据源进行同步。 -
tick
: 包含实际市场数据的对象。其内部的字段包括:-
bids
: 买单数组,包含多个买单价格和数量。每个买单以[price, amount]
的形式表示,其中price
是买入价格,amount
是买入数量。bids
数组通常按价格降序排列,即最佳买价位于数组的顶部。 -
asks
: 卖单数组,包含多个卖单价格和数量。每个卖单以[price, amount]
的形式表示,其中price
是卖出价格,amount
是卖出数量。asks
数组通常按价格升序排列,即最佳卖价位于数组的顶部。 -
ts
: (Timestamp)tick
对象内部的时间戳,与外层ts
字段相同,冗余设计以方便数据处理。 -
version
: 数据版本号,用于跟踪数据的更新迭代。每次市场数据发生变化时,version
字段的值都会增加,客户端可以使用此字段来检测数据是否已经更新。
-
注意事项:
- 深度数据是动态变化的,会随着市场交易的进行而不断更新。客户端需要持续订阅 WebSocket 频道,才能接收到最新的市场数据。
- 不同的交易所或平台可能采用略有不同的数据格式。请参考具体的 API 文档,以确保正确解析数据。
- 在实际应用中,需要根据具体的业务需求,对深度数据进行处理和分析,例如计算市场深度指标、构建订单簿等。
常见问题
-
API Key 权限不足:
当您在使用API Key访问HTX(火币)交易所的API接口时,可能会遇到权限不足的问题。这通常表示您的API Key没有被赋予访问您尝试调用的特定接口的权限。务必仔细检查您在HTX交易所创建API Key时所选择的权限设置。例如,如果您尝试进行交易操作,您的API Key需要具备交易权限;如果您尝试获取账户信息,则需要具备读取账户信息的权限。如果权限设置不正确,您需要重新创建API Key并正确配置所需的权限。
-
请求频率限制:
为了保证API服务的稳定性和公平性,HTX交易所对API请求频率实施了限制。这意味着在一定时间内,每个API Key可以发送的请求数量是有限的。如果您的请求频率超过了限制,API服务器将会拒绝您的请求,并返回错误信息。您可以参考HTX官方API文档,详细了解不同API接口的请求频率限制规则。建议您合理控制请求频率,例如使用缓存机制、批量处理请求或采用异步处理方式,以避免触发频率限制。
-
签名错误:
为了确保API请求的安全性,HTX交易所要求对每个API请求进行签名。签名过程涉及使用您的Secret Key对请求参数进行加密,并将签名添加到请求头中。如果签名不正确,API服务器将拒绝您的请求。请务必仔细检查签名过程中的每一个步骤,包括:
- 确保您使用了正确的Secret Key。
- 确保您按照HTX官方文档规定的顺序对请求参数进行排序。
- 确保您使用了正确的加密算法(例如HMAC-SHA256)。
- 确保您正确地对签名进行了编码(例如Base64编码)。
一个小的错误都可能导致签名无效,因此请仔细核对您的代码和签名算法。
-
时间戳错误:
HTX API 使用时间戳来防止重放攻击。您的API请求中必须包含一个时间戳参数,该时间戳表示请求发送的时间。为了保证时间戳的有效性,您需要确保您使用的时间戳是准确的,并且与HTX服务器的时间同步。建议您使用网络时间协议(NTP)客户端来同步您的系统时间。HTX API通常会设置时间戳的有效期限,如果时间戳与服务器时间相差太远(例如超过几分钟),API服务器将会拒绝您的请求。务必使用 UTC 时间(协调世界时)作为时间戳,以避免时区差异带来的问题。
-
网络连接问题:
API请求需要通过网络发送到HTX服务器。如果您的网络连接不稳定或存在问题,API请求可能会失败。请检查以下事项:
- 确保您的设备已连接到互联网。
- 检查您的网络连接是否稳定。
- 如果您使用了代理服务器,请确保代理服务器配置正确。
- 检查防火墙设置是否阻止了API请求。
如果网络连接存在问题,请尝试修复网络连接或联系您的网络服务提供商。
代码示例 (Python)
以下是一个使用 Python 通过火币 (Huobi) API 获取账户余额的示例。此示例演示了如何构造经过身份验证的 API 请求。
你需要安装 `requests` 库,用于发送 HTTP 请求。可以使用以下命令安装:
pip install requests
以下是代码:
import requests
import datetime
import urllib.parse
import hmac
import hashlib
import base64
import
api_key = "your_api_key"
secret_key = "your_secret_key"
account_id = "your_account_id"
def get_account_balance(api_key, secret_key, account_id):
"""
从火币获取账户余额。
Args:
api_key (str): 你的 API 密钥。
secret_key (str): 你的密钥。
account_id (str): 你的账户 ID。
Returns:
dict: 包含账户余额信息的字典,如果请求成功。 如果出现错误,则为 None。
"""
url = f"https://api.huobi.pro/v1/account/accounts/{account_id}/balance"
method = "GET"
params = {}
timestamp = datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S')
params['AccessKeyId'] = api_key
params['SignatureMethod'] = 'HmacSHA256'
params['SignatureVersion'] = '2'
params['Timestamp'] = timestamp
# 对参数进行排序,并构造查询字符串。
sorted_params = sorted(params.items(), key=lambda x: x[0])
query_string = urllib.parse.urlencode(sorted_params)
# 构造用于签名的有效负载。
payload = f"{method}\napi.huobi.pro\n/v1/account/accounts/{account_id}/balance\n{query_string}"
# 使用 HMAC-SHA256 对有效负载进行签名。
digester = hmac.new(secret_key.encode('utf-8'), payload.encode('utf-8'), hashlib.sha256)
signature = base64.b64encode(digester.digest()).decode()
# 创建包含签名的 HTTP 头部。
headers = {
"Content-Type": "application/",
"Signature": signature
}
# 发送 HTTP GET 请求。
response = requests.get(url, params=params, headers=headers)
# 处理响应。
if response.status_code == 200:
data = response.()
if data['status'] == 'ok':
return data['data']
else:
print(f"Error: {data['err-msg']}")
return None
else:
print(f"Request failed with status code: {response.status_code}")
return None
# 使用你的 API 密钥、密钥和账户 ID 调用该函数。
balance = get_account_balance(api_key, secret_key, account_id)
# 打印账户余额。
if balance:
print(.dumps(balance, indent=4))
注意:
- 替换 `your_api_key`、`your_secret_key` 和 `your_account_id` 为你的实际值。
- 此示例使用火币的公共 API 端点 `api.huobi.pro`。
- 签名过程对于确保请求的完整性和真实性至关重要。
- `Content-Type` 头部设置为 `application/`。虽然在这里不是必须的,但是通常是最佳实践,尤其是在发送 POST 请求时。
此代码片段提供了从火币交易所获取账户余额的基本框架。根据您的具体需求,可能需要进行调整,例如错误处理和数据验证。始终参考官方火币 API 文档以获取最准确的信息和最佳实践。
官方文档
更详细的 API 文档,包括完整的接口说明、参数定义、请求示例以及错误代码解释,请参考 HTX 官方网站提供的最新版本: https://huobiapi.github.io/docs/v1/en/ 。 在该文档中,您可以找到关于现货交易、合约交易、杠杆交易等各种交易类型的详细 API 接口信息。 还包括 WebSocket 行情订阅、账户信息查询、订单管理等功能的详细说明。 建议开发者在使用 API 之前,仔细阅读官方文档,以便更好地理解和使用 HTX 平台提供的各种服务。