火币API文档更新
概述
火币全球站始终坚持为全球用户提供稳定、高效、安全的数字资产交易服务。为持续优化用户体验,特别是满足日益增长的开发者和量化交易者的特定需求,我们近期对API文档进行了重大更新。本次更新的重点在于简化开发流程,显著提升接口性能,并引入更多实用功能,旨在帮助开发者更便捷地构建应用程序,并实现更高效的量化交易策略。本次更新内容全面,涵盖现货交易、合约交易、期权交易等多个核心业务线,并针对开发者在使用API过程中遇到的常见问题,进行了深入的说明和示例代码的补充,力求提供全方位、清晰易懂的API文档,降低开发门槛,提升开发效率。
现货API更新
现货API作为火币交易平台的核心组件,提供了访问市场数据、管理账户和执行交易的关键接口。本次更新旨在提升API的性能、易用性和安全性,从而为开发者提供更流畅高效的交易体验。更新重点围绕账户余额查询、订单管理和数据推送展开。
- 账户余额查询优化: 优化了账户余额查询接口,显著降低延迟并提高了响应速度。此前,获取完整的账户信息可能需要多次调用API,增加了网络开销和处理时间。现在,只需一次请求,即可获取所有币种的详细余额信息,包括可用余额、冻结余额和待处理订单余额等。还新增了对子账户余额查询的支持,方便机构用户和量化交易者管理其下属账户的资金。
- 请求参数:
-
account-id
(可选, 字符串): 指定要查询的账户ID。如果未提供此参数,则默认查询主账户的余额。对于拥有多个子账户的用户,必须指定account-id
才能查询特定子账户的余额。 -
currency
(可选, 字符串): 指定要查询的币种。如果未提供此参数,则返回所有币种的余额信息。如果只想查询特定币种的余额,例如BTC或ETH,则可以使用此参数。 - 返回参数:
-
currency
(字符串): 币种名称,例如"BTC"、"ETH"等。 -
type
(字符串): 账户类型。常见的账户类型包括trade
(交易账户,用于现货交易)、frozen
(冻结账户,用于存放冻结的资金)等。 -
balance
(字符串): 余额,以字符串形式表示,避免精度问题。 - 示例代码 (Python):
本示例演示了如何使用Python调用现货API查询账户余额。请确保已安装
requests
库。需要配置API密钥和账户ID才能成功运行此代码。
import requests
import time
import
import hashlib
ACCESS_KEY = "YOUR_ACCESS_KEY" # 替换为您的Access Key
SECRET_KEY = "YOUR_SECRET_KEY" # 替换为您的Secret Key
ACCOUNT_ID = "YOUR_ACCOUNT_ID" # 替换为您的账户ID
BASE_URL = "https://api.huobi.pro"
def generate_signature(method, url, params):
"""
生成API请求签名。
"""
timestamp = str(int(time.time()))
params_to_sign = sorted(params.items())
payload = f"{method}\napi.huobi.pro\n{url}\n" + "&".join([f"{k}={v}" for k, v in params_to_sign])
digest = hashlib.sha256(payload.encode('utf8')).digest()
signature = hmac.new(SECRET_KEY.encode('utf8'), digest, hashlib.sha256).hexdigest()
return signature
def get_account_balance(account_id=ACCOUNT_ID, currency=None):
"""
获取账户余额。
"""
url_path = f"/v1/account/accounts/{account_id}/balance"
url = f"{BASE_URL}{url_path}"
params = {
"AccessKeyId": ACCESS_KEY,
"SignatureMethod": "HmacSHA256",
"SignatureVersion": "2",
"Timestamp": datetime.datetime.utcnow().strftime('%Y-%m-%dT%H:%M:%S'),
}
if currency:
params["currency"] = currency
params["Signature"] = generate_signature("GET", url_path, params)
headers = {
"Content-Type": "application/",
}
response = requests.get(url, headers=headers, params=params)
if response.status_code == 200:
return .loads(response.text)
else:
return f"Error: {response.status_code}, {response.text}"
# 示例用法:
# 获取所有币种的余额
# balance = get_account_balance()
# print(balance)
# 获取BTC的余额
# btc_balance = get_account_balance(currency="btc")
# print(btc_balance)
#获取子账户的余额(需要指定account_id)
#sub_account_balance = get_account_balance(account_id="YOUR_SUB_ACCOUNT_ID",currency="usdt")
#print(sub_account_balance)
示例调用
账户余额信息获取:
balance_info = get_account_balance()
print(balance_info)
此示例展示了如何调用
get_account_balance()
函数来获取用户的账户余额信息。该函数返回一个包含各种加密货币余额信息的字典,包括可用余额、冻结余额和总余额。通过解析返回的字典,用户可以了解其账户中各种资产的详细情况,例如BTC、ETH等,方便用户进行资产管理和交易决策。账户余额信息对于风险评估和交易策略制定至关重要,确保及时更新和准确展示。
-
请求参数:
-
account-id
:账户ID,用于标识用户的唯一账户。 -
symbol
:交易对,例如BTC/USDT
,指定要交易的加密货币对。 -
type
:订单类型,包括buy-market
(市价买入)、sell-market
(市价卖出)。 -
amount
:买入金额或卖出数量,具体取决于订单类型。 -
price
:止盈止损价格,可选参数,用于设置止盈或止损的价格。 -
client-order-id
:客户端自定义订单ID,可选参数,方便用户跟踪订单。
-
-
返回参数:
-
order-id
:订单ID,由交易所生成的唯一订单标识符。 -
status
:订单状态,例如pending
(待成交)、filled
(已成交)、canceled
(已取消)。 -
created-at
:订单创建时间,记录订单提交的时间戳。 -
filled-amount
:已成交数量,显示订单实际成交的加密货币数量。 -
filled-cash-amount
:已成交金额,显示订单实际成交的法币金额。 -
fee
:手续费,显示交易产生的手续费金额。
-
-
请求参数:
-
symbol
:交易对,指定需要查询的交易对,例如ETH/BTC
。 -
types
:订单类型列表,用逗号分隔,例如limit,market
。支持查询特定类型的订单。 -
states
:订单状态列表,用逗号分隔,例如filled,canceled
。用于筛选特定状态的订单。 -
start-date
:起始日期,查询订单的起始日期,格式为YYYY-MM-DD
。 -
end-date
:结束日期,查询订单的结束日期,格式为YYYY-MM-DD
。 -
from
:订单ID,从该订单ID开始查询,用于分页查询。 -
size
:返回订单数量,默认值和最大值为100。 -
direct
:查询方向,值为prev
或next
,基于from
参数向前或向后查询。
-
-
返回参数:
-
order-id
:订单ID,交易所分配的唯一订单标识。 -
symbol
:交易对,订单所属的交易对,例如LTC/USDT
。 -
type
:订单类型,例如buy-limit
(限价买入)、sell-market
(市价卖出)。 -
amount
:委托数量,订单最初设定的交易数量。 -
price
:委托价格,订单设定的委托价格。 -
created-at
:创建时间,订单创建的时间戳。 -
status
:订单状态,订单当前的状态,例如submitted
(已提交)、partial-filled
(部分成交)、filled
(已成交)、canceled
(已取消)。 -
filled-amount
:已成交数量,订单实际成交的加密货币数量。 -
filled-cash-amount
:已成交金额,订单实际成交的法币金额。 -
filled-fees
:手续费,订单交易产生的手续费金额。 -
source
:订单来源,例如api
(API下单)、web
(网页下单)。
-
-
请求参数:
-
symbol
:交易对,需要获取K线数据的交易对,例如XRP/USDT
。 -
period
:K线周期,包括1min
(1分钟)、5min
(5分钟)、15min
(15分钟)、30min
(30分钟)、1hour
(1小时)、4hour
(4小时)、1day
(1天)、1week
(1周)、1mon
(1月)。 -
size
:K线数量,一次请求返回的K线数据量,最大值为2000,默认为150。 -
from
(可选): 起始时间戳,以秒为单位。如果指定了此参数,则只返回从起始时间戳开始的K线数据。 -
to
(可选): 结束时间戳,以秒为单位。如果指定了此参数,则只返回到结束时间戳为止的K线数据。
-
-
返回参数:
-
id
:时间戳,K线数据的Unix时间戳,以秒为单位。 -
open
:开盘价,K线周期的开盘价格。 -
close
:收盘价,K线周期的收盘价格。 -
low
:最低价,K线周期内的最低价格。 -
high
:最高价,K线周期内的最高价格。 -
amount
:成交量,K线周期内的成交量(以基础货币计)。 -
vol
:成交额,K线周期内的成交额(以报价货币计)。 -
count
:成交笔数,K线周期内的成交笔数。
-
合约API更新
合约API的更新旨在提升交易执行效率,并提供更丰富的高级交易工具,满足不同交易策略的需求。本次更新主要围绕速度、灵活性和信息透明度展开:
-
闪电平仓功能:
引入高效的闪电平仓功能,允许用户在市场剧烈波动时以尽可能最优的价格快速平仓所有可平仓位。该功能的设计目标是最小化滑点,尤其在快速下跌或上涨的市场环境中,能够迅速止损或锁定利润。它通过整合市场深度信息,一次性执行所有订单,避免了传统分批平仓带来的时间延迟和价格偏差。
-
请求参数:
symbol
(必填,合约代码,例如BTCUSDT
)、direction
(必填,平仓方向,只能是buy
或sell
。buy
代表卖出平多,sell
代表买入平空)、offset
(必填,平仓类型,只能是open
或close
,但闪电平仓只能使用close
)、volume
(必填,平仓数量,单位为合约张数,必须小于等于当前可平仓数量) -
返回参数:
order_id
(订单ID,唯一标识本次平仓订单)、status
(订单状态,包括pending
、filled
、partial_filled
、cancelled
、rejected
等,可通过该状态跟踪平仓执行情况)、filled_volume
(实际成交数量)、avg_price
(平均成交价格, 仅在订单完全成交后返回)
-
请求参数:
-
计划委托增强:
显著增强了计划委托功能,增加了更广泛的触发条件选项,包括但不限于价格突破特定水平、移动平均线交叉、相对强弱指标(RSI)超买超卖、MACD指标金叉死叉等。用户可以根据自身交易策略,设定更精细的触发规则,实现复杂的自动化交易。支持在不同交易所和合约之间设置不同的触发条件,实现更灵活的跨市场交易策略。
-
请求参数:
symbol
(必填,合约代码,例如ETHUSDT
)、trigger_price
(必填,触发价格,当市场价格满足触发条件时,委托单将被激活)、order_price
(必填,委托价格,激活后提交的委托单的价格。可以设为市价单,如market
)、order_volume
(必填,委托数量,单位为合约张数)、direction
(必填,委托方向,buy
或sell
,与实际开仓平仓方向对应)、offset
(必填,开仓/平仓类型,open
或close
)、trigger_type
(必填,触发类型,例如ge
(大于等于)、le
(小于等于)、cross
(价格向上突破)、cross_down
(价格向下突破)、ma_cross_up
(均线上穿)、ma_cross_down
(均线下穿)等,具体支持的类型请参考API文档。)、ma_period
(均线周期,当 trigger_type 为 ma_cross_up 或 ma_cross_down 时必须指定。)、callback_url
(可选,回调URL,当委托单被触发时,系统会向该URL发送POST请求,通知用户。可以用于实现更复杂的自动化交易逻辑)
-
请求参数:
-
资金费率预测API:
新增资金费率预测API,旨在帮助用户更好地掌握资金费率的变动趋势,从而更有效地管理仓位风险和成本。此API通过分析历史资金费率数据、市场交易量、多空持仓比例等因素,预测未来一段时间内的资金费率。用户可据此调整仓位,例如,在预测资金费率即将升高时,减少持仓或反向操作,以降低资金费率带来的负面影响。该API还提供资金费率历史数据查询功能,方便用户进行更深入的分析。
-
请求参数:
symbol
(必填,合约代码,例如LINKUSDT
)、period
(可选,预测时间段,例如1h
表示预测未来1小时的资金费率,默认为当前时间段的下一个结算周期) -
返回参数:
funding_rate
(当前资金费率,为方便用户对比,API同时返回当前资金费率)、estimated_rate
(预测资金费率,基于模型预测的未来资金费率)、funding_time
(下次资金费率结算时间,时间戳格式)、confidence
(预测置信度,取值范围0-1,表示预测的准确程度,数值越高表示预测越准确)
-
请求参数:
- 持仓信息优化: 优化了持仓信息的返回格式和内容,现在可以更清晰地查看多仓和空仓的平均开仓价格,以及未实现盈亏(PNL)。还增加了保证金率、强平价格等重要指标,帮助用户更全面地评估账户风险。持仓信息按照合约代码、多空方向分别展示,方便用户快速定位和分析特定仓位。
期权API更新
期权API是火币交易平台推出的一个相对较新的API服务,旨在为用户提供高效便捷的期权交易接口。本次更新重点在于增强基础功能,并提供更广泛、更深入的数据支持,提升用户在期权市场的交易体验。
-
期权合约信息查询:
增加了期权合约信息查询接口,用户现在可以通过API直接获取期权合约的各项关键参数,无需再通过其他途径收集。这些信息对于策略制定和风险评估至关重要。
-
请求参数:
symbol
(期权代码):指定需要查询的期权合约代码,例如BTC-USD-231229-80000-C
。 -
返回参数:
-
expiry_date
(到期日):期权合约的到期日期,例如20231229
,格式为YYYYMMDD。 -
strike_price
(行权价):期权合约的行权价格,例如80000
,表示以80000美元的价格买入(看涨期权)或卖出(看跌期权)标的资产。 -
underlying
(标的资产):期权合约所代表的标的资产,例如BTC-USD
。 -
option_type
(期权类型):期权的类型,包括call
(看涨期权)或put
(看跌期权)。 -
contract_size
(合约乘数): 每个合约代表的标的资产数量,例如1 BTC。 -
settlement_currency
(结算货币): 期权合约结算时使用的货币,例如USD。
-
-
请求参数:
- 期权行情数据: 提供了更全面的期权行情数据,包括更精确的买一价、卖一价,以及实时的隐含波动率(Implied Volatility, IV)。IV是期权定价的重要参考指标,反映了市场对标的资产未来波动程度的预期。API还将提供不同时间维度的行情数据,如分钟级、小时级、日级数据。
- 组合保证金支持: 增加了对组合保证金的支持,允许用户通过构建不同的期权组合头寸(例如垂直价差、蝶式套利等)来有效降低保证金要求,提高资金利用率。组合保证金的计算方式将更加灵活,能够更好地反映期权组合的实际风险情况。
通用更新
本次API文档更新,除针对特定业务线的功能增强外,还包含一系列旨在提升开发者体验和安全性的通用改进。
- 错误码更新: 错误码体系经过重新梳理,每个错误码均配备了详细的描述信息,包括错误类型、可能原因及推荐的解决方案。此举旨在帮助开发者更快速、准确地定位并解决集成过程中遇到的问题,缩短调试时间。
- 示例代码完善: 为方便不同技术栈的开发者使用,新增了多种常用编程语言的示例代码,例如Python、Java、C++、JavaScript (Node.js)等。这些示例代码覆盖了API的常见使用场景,可以直接复制并运行,极大地降低了开发者的学习成本和集成难度。我们还提供了Postman Collection供用户导入测试。
- 身份验证机制优化: 对身份验证机制进行了深度优化,采用更安全的加密算法和密钥管理方案,有效防止API密钥泄露和未经授权的访问。同时,优化了身份验证的流程,减少了验证时间,提高了API的响应速度。具体包括支持更灵活的token刷新策略和多因素认证(MFA)的可选配置。
- 频率限制调整: 根据实际业务需求和系统负载情况,对部分接口的频率限制进行了合理调整。调整后的频率限制既能保证API的可用性,防止恶意攻击,又能满足大部分正常用户的需求。 具体接口调整细则请参考各个接口的详细文档。增加了基于IP地址、用户ID等维度的更精细化频率控制选项。
后续计划
火币全球站致力于成为领先的加密货币交易平台,并将持续关注并积极响应不断变化的市场需求和前沿技术发展趋势,以此驱动创新。为赋能开发者社群,我们将不断完善API文档,提供更详尽、更易于理解的技术指南,并辅以示例代码和常见问题解答,力求为开发者提供更优质、更全面的服务。我们计划在未来迭代中推出一系列高级交易功能,例如复杂的套利交易策略、自动化网格交易系统,以及止损止盈订单的增强型管理,从而满足专业交易者的多元化需求。考虑到开发者使用的编程语言的多样性,我们将逐步增加对更多编程语言的支持,例如Go、Rust等,以降低开发门槛,吸引更广泛的开发者参与。同时,我们高度重视开发者社区的声音,并将积极听取开发者的反馈意见,并将其纳入产品改进的考量之中。基于此,我们将持续优化API接口的设计,包括但不限于提高API的响应速度、降低延迟、增强稳定性,并优化错误代码提示,提升开发者整体的使用体验,确保开发者能够高效、便捷地利用火币全球站的API进行开发和集成。