Bybit
Bybit(现货):Bybit现货,以及现货杠杆(下单时借贷)。统一交易账户(UTA)与经典账户都支持,使用Bybit V5接口,需要Bybit的API KEY(Access Key、Secret Key)。
Futures_Bybit(期货):Bybit USDT、USDC永续与交割合约(linear),币本位永续与交割合约(inverse),以及USDT结算期权。统一交易账户(UTA)与经典账户都支持,使用Bybit V5接口,需要Bybit的API KEY(Access Key、Secret Key)。
名称与配置
exchange.GetName() | 类型 | 别名 |
|---|---|---|
Bybit | 现货 | Bybit现货 |
Futures_Bybit | 期货 | Bybit期货 |
| 配置项 | 必填 | 默认值 |
| - | - | - |
| Access Key | 是 | — |
| Secret Key | 是 | — |
| Version | 是 | v5 |
| 模拟盘 | 否 | 不勾选 |
交易对与合约代码
Bybit(现货)
交易对示例:BTC_USDT、ETH_BTC
交易对写作BTC_USDT,不带合约代码;合约请使用Futures_Bybit交易所对象。
Futures_Bybit(期货)
交易对示例:BTC_USDT、BTC_USDC、BTC_USD
计价币决定合约类型:BTC_USDT、BTC_USDC为U本位(linear)合约,BTC_USD为币本位(inverse)合约。USDC永续对应Bybit的BTCPERP。
| 合约代码 | 说明 |
|---|---|
swap | 永续合约(默认)。 |
delivery | 最近到期的交割合约。 |
this_week | 当周交割合约。 |
next_week | 次周交割合约。 |
third_week | 第三周交割合约。 |
month | 月度交割合约。 |
next_month | 次月交割合约。 |
quarter | 季度交割合约。 |
next_quarter | 次季度交割合约。 |
third_quarter | 第三季度交割合约。 |
交割合约按Bybit合约列表中实际挂牌的到期时间选取:周档依次对应未来三个七天窗口内到期的合约,月档取月末到期的合约,季档取3、6、9、12月月末到期的合约。交易所没有挂牌对应档位时报错。
同一张合约常同时属于几个档位(例如月末合约也是第三周合约,币本位季度合约也是月度合约),exchange.GetMarkets以及行情、订单、持仓的品种代码只用其中一个,按季度档、月度档、周档的顺序取;不属于任何档位的交割合约以原生代码为合约代码,例如BTC_USDT.BTCUSDT-24SEP27。每张合约在exchange.GetMarkets中只出现一次,delivery总与其它档位重合,因此不出现。没有出现的档位代码与原生代码照样可以用,exchange.SetContractType("delivery")、exchange.GetTicker("BTC_USDT.delivery")都可以。
原生合约代码示例:BTCUSDU26、ETHUSDT-04APR25
交割合约也可以直接写Bybit的原生合约代码。Bybit有些交割合约没有明确的周期,这类合约直接使用原生代码,例如交易对ETH_USDT、合约代码ETHUSDT-04APR25。
专属IO指令
Bybit(现货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
trade_margin | — | 现货杠杆:之后的订单(含条件单)带isLeverage=1,下单时自动借贷。只保存在本地,不发请求。 | 指令名本身。 |
trade_normal | — | 切换回普通现货(默认)。 | 指令名本身。 |
accountType | string | 指定账户类型(决定查询资产时读哪个钱包):UNIFIED(统一交易账户)或SPOT(经典账户的现货钱包)。不调用时在首次查询资产时自动探测。 | 设置后的账户类型。 |
通用指令api、base、currency见exchange.IO。
Futures_Bybit(期货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
cross | bool[, symbol] | 全仓(true)/逐仓(false),按合约向交易所发送切换请求,请求同时设置买卖杠杆(沿用该合约最近一次exchange.SetMarginLevel()的值,没有设置过为10倍)。已经用本指令切换到同一模式时不再发请求。期权不支持。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
dual | bool[, symbol] | 双向(true)/单向(false)持仓,向交易所发送切换请求(请求带该合约的symbol)。已经用本指令切换到同一模式时不再发请求。期权不支持。 | 成功也返回空值,需要确认时调用后读取GetLastError()。 |
accountType | string | 指定查询资产时读取的钱包:UNIFIED(统一交易账户)、CONTRACT(经典账户的合约钱包),auto恢复自动探测(默认)。 | 设置后的账户类型(自动探测时为auto)。 |
通用指令api、base、currency见exchange.IO。
常用用法
指定查询资产时读取的钱包(仅Bybit)
javascript
function main() {
// 统一交易账户;经典账户的现货钱包写SPOT。设置后不再自动探测
Log(exchange.IO("accountType", "UNIFIED")) // UNIFIED
Log(exchange.GetAssets())
}
指定查询资产时读取的钱包,再恢复自动探测(仅Futures_Bybit)
javascript
function main() {
// 统一交易账户;经典账户的合约钱包写CONTRACT
Log(exchange.IO("accountType", "UNIFIED")) // UNIFIED
Log(exchange.GetAssets())
// 恢复自动探测(默认)
Log(exchange.IO("accountType", "auto")) // auto
}
函数支持差异
全部交易所对象
没有不支持的标准函数。
Bybit(现货)
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、3分钟、5分钟、15分钟、30分钟、1小时、2小时、4小时、6小时、12小时、1天、1周、1月;其它周期由托管者合成。
Futures_Bybit(期货)
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、3分钟、5分钟、15分钟、30分钟、1小时、2小时、4小时、6小时、12小时、1天、1周、1月;其它周期由托管者合成。期权没有K线接口,由托管者用成交记录合成。
保证金、账户与模拟盘
全部交易所对象
模拟盘:勾选「模拟盘」使用Bybit模拟交易(Demo Trading,api-demo.bybit.com),API KEY需要在Bybit主站切换到模拟交易模式后创建;与测试网(testnet)不是同一个环境。
Bybit(现货)
账户:统一交易账户与经典账户的现货资产在不同的钱包,连接器首次查询资产时查询账户类型(也可以用exchange.IO("accountType", ...)指定)。现货杠杆用exchange.IO("trade_margin")开启,之后的订单在下单时借贷。
Futures_Bybit(期货)
保证金模式:用exchange.IO("cross", bool)按合约切换全仓/逐仓;exchange.SetMarginLevel()设置杠杆(买卖同一杠杆)。
持仓模式:下单前自动查询该合约的持仓模式,双向持仓时自动带positionIdx;也可以在下单附加参数中显式传positionIdx,或用exchange.IO("dual", bool)切换。
账户:账户类型在首次查询资产时自动探测。统一交易账户1.0的U本位资产在统一钱包、币本位资产在合约钱包,exchange.GetAssets()会同时查询两个钱包。
期权
Futures_Bybit(期货)
支持Bybit的USDT结算期权(Bybit目前只挂牌USDT结算的期权)。
exchange.GetMarkets()的结果包含期权合约。- 不支持条件单,不支持
exchange.SetMarginLevel(),不能用cross、dual切换保证金模式与持仓模式。
期权代码示例:ETH-25JUN27-2800-C-USDT
期权代码为Bybit原生代码:标的-到期日-行权价-C/P-结算币。Bybit期权以USDT结算,交易对设置为ETH_USDT,完整品种代码形如ETH_USDT.ETH-25JUN27-2800-C-USDT;交易对的计价币必须与结算币一致。
注意事项
全部交易所对象
- 条件单只支持止盈、止损单,不支持OCO,需要时分别创建止盈单和止损单。
exchange.ModifyOrder()、exchange.ModifyConditionOrder()原地改单,订单ID不变。
Bybit(现货)
- 市价单的下单量按Bybit接口默认处理(市价买单为计价币金额);可以在下单附加参数中传
marketUnit(baseCoin或quoteCoin)指定数量单位,附加参数原样传给交易所。
Futures_Bybit(期货)
exchange.GetMarkets()的结果包含盘前交易(PreLaunch)合约。- 下单量单位:U本位(linear)合约与期权为基础币数量,币本位(inverse)合约为合约张数,1张为1美元;见
exchange.GetMarkets()的CtVal、CtValCcy。