币安
Binance(现货):币安现货,以及币安杠杆账户(逐仓、全仓)和统一账户(组合保证金)下的全仓杠杆交易。使用币安API Key接入,Secret Key可以是HMAC密钥或RSA私钥;勾选「模拟盘」时连接币安demo环境。
Futures_Binance(期货):币安U本位(USDT、USDC保证金)、币本位永续与交割合约,以及币安欧式期权(USDT结算)。使用币安API Key接入,Secret Key可以是HMAC密钥或RSA私钥;统一账户(组合保证金)自动识别;勾选「模拟盘」时连接币安demo环境。
名称与配置
exchange.GetName() | 类型 |
|---|---|
Binance | 现货 |
Futures_Binance | 期货 |
| 配置项 | 必填 |
| - | - |
| Access Key | 是 |
| Secret Key | 是 |
| 模拟盘 | 否 |
交易对与合约代码
Binance(现货)
交易对示例:BTC_USDT、ETH_BTC
交易对写作BTC_USDT,不带合约代码;带.swap等合约后缀的品种代码会报错(合约请使用Futures_Binance交易所对象)。
Futures_Binance(期货)
交易对示例:BTC_USDT、BTC_USDC、BTC_USD
计价币决定合约类型:BTC_USDT、BTC_USDC为U本位合约,BTC_USD为币本位合约。支持币安的中文交易对,例如币安人生_USDT.swap。
| 合约代码 | 说明 |
|---|---|
swap | 永续合约(默认)。U本位、币本位都有。 |
quarter | 当季交割合约。币本位都有;U本位只有部分币种挂牌。 |
next_quarter | 次季交割合约,挂牌范围同quarter。 |
不可用的通用合约代码:this_week、next_week。
币安没有周合约,this_week、next_week会报错。
原生合约代码示例:BTCUSDT_260925、BTCUSD_260925
交割合约也可以直接写币安的原生合约代码(交易对去掉下划线、加_和交割日期)。
专属IO指令
Binance(现货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
trade_margin | — | 切换为逐仓杠杆账户,之后账户、下单、订单查询都使用逐仓杠杆接口。模拟盘没有杠杆接口,会报错。 | 指令名本身。 |
trade_super_margin | — | 切换为全仓杠杆账户(模拟盘不支持)。账户为统一账户时使用统一账户(papi.binance.com)的全仓杠杆接口。 | 指令名本身。 |
trade_normal | — | 切换回普通现货账户(默认)。 | 指令名本身。 |
unified | bool | 统一账户(组合保证金),只在全仓杠杆(trade_super_margin)下生效。不调用时,切换到全仓杠杆后首次请求自动探测。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
selfTradePreventionMode | string | 自成交预防,可选EXPIRE_TAKER、EXPIRE_MAKER、EXPIRE_BOTH、NONE,之后的订单随单带上。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
通用指令api、base、currency见exchange.IO。
Futures_Binance(期货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
cross | bool[, symbol] | 全仓(true)/逐仓(false),按合约设置;不传symbol时使用当前合约。期权合约不支持。 | 成功也返回空值,需要确认时调用后读取GetLastError()。合约已处于目标模式时交易所报错(-4046)。 |
dual | bool[, symbol] | 双向(true)/单向(false)持仓,U本位、币本位分别设置,按symbol(不传时为当前合约)决定设置哪一个。期权合约不支持。 | 成功也返回空值,需要确认时调用后读取GetLastError()。已处于目标模式时交易所报错(-4059)。 |
unified | bool[, symbol] | 统一账户(组合保证金),切换后使用papi.binance.com;不调用时首次私有请求自动探测。当前合约为期权时报错。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
selfTradePreventionMode | string | 自成交预防,可选EXPIRE_TAKER、EXPIRE_MAKER、EXPIRE_BOTH、NONE,之后的订单随单带上。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
base | [string] | 查询或切换接口基地址。(详见表下) | 修改前的U本位地址;不传参数时返回当前U本位地址。 |
coinmBase | [string] | 查询或切换币本位合约接口基地址,只影响币本位。 | 修改前的地址;不传参数时返回当前地址。 |
eapiBase | [string] | 查询或切换期权接口基地址。模拟盘下默认没有期权地址,需要用它显式指定。 | 修改前的地址;不传参数时返回当前地址。 |
表中长说明的其余部分:
base:设为币安官方主网地址(https://fapi.binance.com、https://dapi.binance.com、https://papi.binance.com、https://eapi.binance.com、https://api.binance.com)时,U本位用该地址,币本位、统一账户、期权各自回到官方主网地址;设为其它地址(代理、网关等)时,U本位、币本位、统一账户、期权的请求都发往该地址。之后可以用coinmBase、eapiBase单独修改。
通用指令api、currency见exchange.IO。
常用用法
查询与切换各接口的基地址(经代理访问)(仅Futures_Binance)
javascript
function main() {
// 不传参数时查询当前地址
Log("U本位:", exchange.IO("base"), "币本位:", exchange.IO("coinmBase"))
Log("期权:", exchange.IO("eapiBase"))
// 设为代理地址:U本位、币本位、统一账户、期权的请求都发往它,返回修改前的U本位地址
var old = exchange.IO("base", "https://binance-proxy.example.com")
Log("修改前:", old, "币本位:", exchange.IO("coinmBase")) // 币本位也是代理地址
// 只让币本位改回官方地址
exchange.IO("coinmBase", "https://dapi.binance.com")
// 设回官方地址时,币本位、统一账户、期权各自回到官方主网地址
exchange.IO("base", "https://fapi.binance.com")
}
函数支持差异
Binance(现货)
没有不支持的标准函数。
以回退方式支持:
exchange.GetRecords:原生周期为1秒、1分钟、3分钟、5分钟、15分钟、30分钟、1小时、2小时、4小时、6小时、8小时、12小时、1天、3天、1周、1月;其它周期由托管者合成。
Futures_Binance(期货)
不支持(调用时报错并返回空值):exchange.ModifyConditionOrder。
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、3分钟、5分钟、15分钟、30分钟、1小时、2小时、4小时、6小时、8小时、12小时、1天、3天、1周、1月;其它周期由托管者合成。
保证金、账户与模拟盘
Binance(现货)
账户:默认为普通现货账户,用exchange.IO("trade_margin")、exchange.IO("trade_super_margin")切换到逐仓、全仓杠杆账户,切换后所有账户与订单调用都换到对应的杠杆接口,直到exchange.IO("trade_normal")切回。逐仓杠杆下exchange.GetAssets()把各逐仓交易对中同一币种的余额相加。
模拟盘:勾选「模拟盘」使用币安demo环境(demo-api.binance.com)。demo环境没有杠杆接口,只能交易普通现货。
Futures_Binance(期货)
保证金模式:用exchange.IO("cross", bool)按合约切换全仓/逐仓;exchange.SetMarginLevel()设置杠杆。统一账户恒为全仓,切换逐仓会报错。账户开启联合保证金(Multi-Assets)模式时,交易所拒绝切换为逐仓(-4168)。
持仓模式:用exchange.IO("dual", bool)切换双向/单向持仓,U本位与币本位各自独立。下单时按账户实际的持仓模式带仓位参数,也可以在下单附加参数中显式传positionSide。
账户:统一账户(组合保证金)在首次私有请求时自动探测,也可以用exchange.IO("unified", bool)指定。统一账户下exchange.GetAccount()的Balance是所有资产折算成USD的金额;其它资产的折算金额可用USD金额除以该资产的指数价格再除以质押率得到。
模拟盘:勾选「模拟盘」使用币安demo环境(demo-fapi、demo-dapi)。demo环境没有期权接口,模拟盘下期权相关调用报错(可以用exchange.IO("eapiBase", url)显式指定期权接口地址)。
期权
Futures_Binance(期货)
支持币安欧式期权(USDT结算),需要账户已开通期权交易;交易所可能要求单独申请期权卖方资格。限制:
- 只支持限价单,不支持市价单、条件单和改单(
exchange.ModifyOrder())。 - 不支持
exchange.SetMarginLevel()、exchange.GetFundings(),期权合约不能切换保证金模式。 - 当前合约为期权时
exchange.IO("unified", true)报错;账户本身是统一账户时,期权照常通过期权接口交易。 exchange.GetMarkets()不列出期权合约,期权代码需要从币安接口或网页获取。- 期权账户是独立账户,
exchange.GetAccount()、exchange.GetAssets()不包含期权账户的资产。
期权代码示例:BTC-260925-145000-C、XRP-240112-0.5-C
期权代码为币安原生代码:标的-到期日(YYMMDD)-行权价-C/P,C为看涨、P为看跌。币安期权以USDT结算,交易对设置为BTC_USDT,完整品种代码形如BTC_USDT.BTC-260925-145000-C。
注意事项
Binance(现货)
- 市价买单的下单量是计价币金额(按币安的
quoteOrderQty下单),市价卖单是交易币数量。条件单不论买卖,数量一律是交易币数量。 exchange.ModifyOrder()、exchange.ModifyConditionOrder()使用币安的撤单再下单接口(cancelReplace,撤单失败则不下新单),返回新订单的ID,之后按新ID操作;只支持普通现货账户,杠杆账户下报错。- 条件单只支持止盈、止损单,不支持OCO,需要时分别创建止盈单和止损单。
exchange.GetHistoryOrders()、exchange.GetHistoryConditionOrders()必须指定交易对。
Futures_Binance(期货)
- 下单量:U本位是交易币数量,币本位是合约张数(每张面值见
exchange.GetMarkets()的CtVal,单位USD);市价买单同样按数量下单。 exchange.ModifyOrder()原地修改价格和数量,订单ID不变;没有传入的价格或数量沿用原订单(数量取原始下单量)。- 条件单只支持止盈、止损单,不支持OCO(币安合约没有OCO接口);不支持修改条件单,需要先撤销再重新创建。
exchange.GetHistoryOrders()、exchange.GetHistoryConditionOrders()必须指定合约。