火币
Huobi(现货):HTX(火币)现货,以及逐仓、全仓杠杆账户,默认连接api.huobi.pro。使用HTX的API Key(Access Key、Secret Key)接入,下单、查询余额使用该Key下的现货账户(或切换后的杠杆账户)。
Futures_HuobiDM(期货):HTX(火币)U本位(USDT)永续与交割合约、币本位永续与交割合约,默认连接api.hbdm.com(三类合约分属HTX的U本位、币本位永续、币本位交割三套接口)。使用HTX的API Key(Access Key、Secret Key)接入,经典账户、统一账户与多资产保证金模式都支持。
名称与配置
exchange.GetName() | 类型 | 别名 |
|---|---|---|
Huobi | 现货 | 火币现货 |
Futures_HuobiDM | 期货 | Futures_HTX、HuobiDM、HTX期货、火币期货 |
✓ 表示该交易所对象有这个配置项。
| 配置项 | Huobi | Futures_HuobiDM | 必填 | 说明 |
|---|---|---|---|---|
| Access Key | ✓ | ✓ | 是 | — |
| Secret Key | ✓ | 是 | 与API Key配对的Secret Key。HTX要求附加ECDSA签名的Key可以写成Secret Key,PEM私钥(逗号后为secp256k1私钥的PEM),请求在HMAC签名之外再附带PrivateSignature。 | |
| Secret Key | ✓ | 是 | — |
交易对与合约代码
Huobi(现货)
交易对示例:BTC_USDT、ETH_BTC
交易对写作BTC_USDT,不带合约代码;带.swap等合约后缀的品种代码会报错(合约请使用Futures_HuobiDM交易所对象)。支持火币的中文交易对,例如币安人生_USDT。
Futures_HuobiDM(期货)
交易对示例:BTC_USDT、BTC_USD
计价币决定合约类型:BTC_USDT为U本位合约,BTC_USD为币本位合约;不支持其它计价币。
| 合约代码 | 说明 |
|---|---|
swap | 永续合约(默认)。 |
this_week | 当周交割合约。 |
next_week | 次周交割合约。 |
quarter | 当季交割合约。 |
next_quarter | 次季交割合约。 |
交割合约按HTX合约列表中的合约类型查找,交易所没有挂牌对应档位时报错。
原生合约代码示例:BTC-USDT-260925、BTC260925
交割合约也可以直接写HTX的原生合约代码:U本位形如BTC_USDT.BTC-USDT-260925,币本位形如BTC_USD.BTC260925。
专属IO指令
Huobi(现货)
| 指令 | 说明 | 返回值 |
|---|---|---|
trade_margin | 切换为逐仓杠杆账户,之后下单使用该交易对的逐仓杠杆账户(source=margin-api)。 | 指令名本身。 |
trade_super_margin | 切换为全仓杠杆账户,之后下单与查询余额使用全仓杠杆账户(source=super-margin-api)。 | 指令名本身。 |
trade_normal | 切换回普通现货账户(默认)。 | 指令名本身。 |
通用指令api、base、currency见exchange.IO。
Futures_HuobiDM(期货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
cross | bool | 全仓(true,默认)/逐仓(false),只对经典账户、统一账户的U本位合约有效。(详见表下) | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
dual | bool[, symbol] | 双向(true,dual_side)/单向(false,single_side)持仓,向交易所发送切换请求,只支持U本位合约。经典账户、统一账户按当前cross设置切换全仓或逐仓账户(逐仓按该合约的交易对)的持仓模式。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
unified | bool | 向交易所发送请求,把账户切换为统一账户(true)/经典账户(false),成功后重新探测账户形态。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
signHost | string | 设置私有(签名)请求使用的地址,只写域名(如api.hbdm.vn)时沿用接口基地址的协议。HTX把域名算进签名:设置后签名中的域名和私有请求(账户、持仓、下单等)实际发往的地址都换成它,公开行情仍使用接口基地址;不设置时都使用接口基地址。 | 成功也返回空值。 |
表中长说明的其余部分:
cross:只保存在本地,不向交易所发请求,也不区分合约:之后U本位合约的下单、撤单、条件单以及持仓、订单查询都使用该模式的接口(经典账户的exchange.GetAccount()、exchange.GetAssets()汇总全仓与逐仓)。多资产保证金模式固定为全仓,不受它影响。
通用指令api、base、currency见exchange.IO。
常用用法
私有请求改走备用域名(行情仍使用接口基地址)(仅Futures_HuobiDM)
javascript
function main() {
// 账户、持仓、下单等私有请求改发到api.hbdm.vn,签名也按这个域名计算
exchange.IO("signHost", "https://api.hbdm.vn")
Log(exchange.GetAccount())
// 行情等公开请求仍发往接口基地址
Log(exchange.IO("base"), exchange.GetTicker("BTC_USDT.swap"))
}
函数支持差异
全部交易所对象
不支持(调用时报错并返回空值):exchange.ModifyOrder、exchange.ModifyConditionOrder。
Huobi(现货)
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、5分钟、15分钟、30分钟、1小时、4小时、1天、1周、1月、1年;其它周期由托管者合成。
Futures_HuobiDM(期货)
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、5分钟、15分钟、30分钟、1小时、4小时、1天、1周、1月;其它周期由托管者合成。
保证金、账户与模拟盘
Huobi(现货)
账户:钱包模式只保存在本地,切换后下单与查询余额使用对应的杠杆账户。逐仓杠杆账户按交易对区分,exchange.GetAccount()、exchange.GetAssets()不能确定是哪个交易对的逐仓账户,在逐仓模式下调用会报错;同理,逐仓模式下exchange.GetOrders()、exchange.GetConditionOrders()必须指定交易对。
Futures_HuobiDM(期货)
保证金模式:U本位合约默认全仓,用exchange.IO("cross", false)切换为逐仓(影响之后的交易与查询,见该指令);币本位合约为逐仓,多资产保证金模式为全仓。经典账户、统一账户没有单独设置杠杆的接口:exchange.SetMarginLevel()只记在本地,随之后该合约的下单(lever_rate)生效;没有设置时取账户中该合约当前的杠杆,账户里查不到(例如从未交易过该合约)时下单报错,需要先调用exchange.SetMarginLevel()。多资产保证金模式下exchange.SetMarginLevel()直接向交易所设置杠杆。
持仓模式:U本位合约用exchange.IO("dual", bool)切换双向/单向持仓。
账户:连接器自动探测U本位账户的形态(经典、统一账户、多资产保证金),按形态使用对应的接口;用exchange.IO("unified", bool)切换账户类型后重新探测。
注意事项
Huobi(现货)
- 市价买单的下单量是要花费的计价币金额,市价卖单是交易币数量;触发后以市价成交的条件买单同样按计价币金额(
orderValue)下单。 - 限价单支持
tif的ioc、fok与只做Maker(postOnly,对应HTX的limit-maker)。 exchange.GetHistoryOrders()、exchange.GetHistoryConditionOrders()必须有交易对(不传时使用当前交易对),传空串报错。- 条件单使用HTX的策略委托(
/v2/algo-orders),只支持普通现货账户,只支持止盈、止损单,不支持OCO。条件单的订单ID是下单时的clientOrderId(不传时自动生成UUID),不是数字订单号。
Futures_HuobiDM(期货)
- 下单量、持仓量是合约张数(整数),每张对应的数量见
exchange.GetMarkets()的CtVal:U本位为若干交易币,币本位为若干美元。 - 市价单在经典账户、统一账户下以对手价(
opponent)下单,多资产保证金模式下为市价单;限价单支持tif的ioc、fok与只做Maker(postOnly)。 - 条件单只支持止盈、止损单,不支持OCO;多资产保证金模式下同样可以使用条件单。不给委托价时触发后以最优20档(
optimal_20)成交。 exchange.GetConditionOrders()按范围查询只支持USDT(如USDT.swap),币本位合约需要指定具体合约;经典账户、统一账户下exchange.GetHistoryConditionOrders()不支持since参数(传入时报错),只能查到最近90天。