OKX
OKEX(现货):OKX(欧易)现货,以及同一账户下的现货杠杆交易(逐仓、全仓)。使用OKX V5接口,需要配置API KEY的Access Key、Secret Key与Passphrase。
Futures_OKCoin(期货):OKX(欧易)永续合约(USDT、USDC保证金与币本位)、交割合约(币本位、USDT保证金、USD保证金)以及期权。使用OKX V5接口,需要配置API KEY的Access Key、Secret Key与Passphrase;下单数量为合约张数。
名称与配置
exchange.GetName() | 类型 | 别名 |
|---|---|---|
OKEX | 现货 | 欧易、OKX现货 |
Futures_OKCoin | 期货 | Futures_OKX、OKX期货、欧易期货 |
| 配置项 | 必填 | 默认值 |
| - | - | - |
| Access Key | 是 | — |
| Secret Key | 是 | — |
| Passphrase | 是 | — |
| V5协议 | 否 | 勾选 |
| 模拟盘 | 否 | 不勾选 |
交易对与合约代码
OKEX(现货)
交易对示例:BTC_USDT、ETH_BTC
交易对写作BTC_USDT(对应OKX的BTC-USDT),不带合约代码,带合约后缀的写法(如BTC_USDT.swap)报错;合约请使用Futures_OKCoin交易所对象。
Futures_OKCoin(期货)
交易对示例:BTC_USDT、BTC_USDC、BTC_USD、BTC_USD_UM
计价币决定合约类型:BTC_USDT、BTC_USDC为USDT、USDC保证金合约,BTC_USD为币本位合约。OKX的USD保证金交割合约(交易所合约族为BTC-USD_UM)交易对写作BTC_USD_UM,例如BTC_USD_UM.quarter。
| 合约代码 | 说明 |
|---|---|
swap | 永续合约(默认)。 |
this_week | 当周交割合约。 |
next_week | 次周交割合约。 |
month | 当月交割合约。 |
next_month | 次月交割合约。 |
quarter | 当季交割合约。 |
next_quarter | 次季交割合约。 |
third_quarter | 第三季度交割合约。 |
fourth_quarter | 第四季度交割合约。 |
交割合约按OKX合约列表中的档位查找,交易所没有挂牌该档位时报错(例如no quarter futures for BTC-USDT on okx)。
原生合约代码示例:BTC-USD-260925、HMSTR-USDT-250207
交割合约也可以直接写OKX的原生合约代码,包括没有固定周期的盘前交易合约:交易对设置为HMSTR_USDT,再exchange.SetContractType("HMSTR-USDT-250207");支持symbol参数的函数可以写成HMSTR_USDT.HMSTR-USDT-250207。OKX的长期交割合约(USD保证金,交易所合约族形如BTC-USD_UM_XPERP)没有固定档位,exchange.GetMarkets()中列为BTC_USD_UM_XPERP.BTC-USD_UM_XPERP-310404这样的原生代码形式,按同样方式使用。
专属IO指令
OKEX(现货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
simulate | bool | 模拟盘(true)/实盘(false)切换,模拟盘请求带x-simulated-trading: 1请求头,接口地址不变。 | 设置后的值。 |
trade_margin | — | 切换为杠杆账户、逐仓(tdMode=isolated)。 | 指令名本身。 |
trade_super_margin | — | 切换为杠杆账户、全仓(tdMode=cross)。 | 指令名本身。 |
trade_normal | — | 切换回普通现货(tdMode=cash,默认)。 | 指令名本身。 |
tdMode | string | 直接设置交易模式:cash(现货)、cross、isolated(杠杆全仓、逐仓)。 | 设置后的模式。 |
通用指令api、base、currency见exchange.IO。
Futures_OKCoin(期货)
| 指令 | 参数 | 说明 | 返回值 |
|---|---|---|---|
simulate | bool | 模拟盘(true)/实盘(false)切换,模拟盘请求带x-simulated-trading: 1请求头,接口地址不变。 | 设置后的值。 |
cross | bool | 全仓(true,默认)/逐仓(false)。只保存在本地,之后下单、条件单和exchange.SetMarginLevel()作为tdMode/mgnMode传入,不向交易所发请求,也不区分合约。 | 设置后的值。 |
tdMode | string | 直接设置下单的tdMode:cross、isolated、cash。 | 设置后的模式。 |
dual | bool | 双向(true,long_short_mode)/单向(false,net_mode)持仓。OKX的持仓模式是账户级设置,调用时向交易所发送切换请求。 | 设置后的值。 |
通用指令api、base、currency见exchange.IO。
常用用法
用tdMode在杠杆逐仓、全仓与普通现货之间切换(仅OKEX)
javascript
function main() {
// 杠杆逐仓,等同exchange.IO("trade_margin");全仓写cross
Log(exchange.IO("tdMode", "isolated")) // isolated
// 之后下单带tdMode=isolated,挂单与历史订单查询杠杆订单
Log(exchange.GetOrders("BTC_USDT"))
// 切回普通现货,等同exchange.IO("trade_normal")
Log(exchange.IO("tdMode", "cash")) // cash
}
逐仓模式下设置杠杆并下单(仅Futures_OKCoin)
javascript
function main() {
exchange.SetContractType("swap")
// 只保存在本地,之后的下单、条件单和设置杠杆都按逐仓,等同exchange.IO("cross", false)
Log(exchange.IO("tdMode", "isolated")) // isolated
exchange.SetMarginLevel(5)
var id = exchange.CreateOrder("BTC_USDT.swap", "buy", -1, 1)
Log("订单Id:", id)
}
函数支持差异
没有不支持的标准函数。
以回退方式支持:
exchange.GetRecords:原生周期为1分钟、3分钟、5分钟、15分钟、30分钟、1小时、2小时、4小时、6小时、12小时、1天、3天、1周、1月、3月;其它周期由托管者合成。
保证金、账户与模拟盘
全部交易所对象
模拟盘:勾选「模拟盘」或调用exchange.IO("simulate", true)使用OKX模拟盘,需要使用在OKX模拟盘页面创建的API KEY。
OKEX(现货)
账户:现货与杠杆共用OKX的同一套接口,区别在下单的tdMode和订单查询的品种类型。切换到杠杆后,连接器首次请求时查询账户模式(acctLv):现货模式的账户不能下杠杆单(报错acctLv is 1);单币种保证金模式下杠杆单带借币币种(买单借计价币、卖单借交易币);跨币种、组合保证金模式下全仓杠杆的订单登记在现货品种下,查询时自动按此处理。可以在下单附加参数中显式传tdMode、ccy覆盖。切换到杠杆后,exchange.GetMarkets()列出OKX的杠杆品种(instType为MARGIN),exchange.GetTickers()也按MARGIN查询而被OKX拒绝(报错),需要全市场行情时先切回trade_normal。
Futures_OKCoin(期货)
保证金模式:默认全仓,用exchange.IO("cross", false)或exchange.IO("tdMode", "isolated")切换为逐仓;也可以在下单附加参数中显式传tdMode。exchange.SetMarginLevel()按当前的全仓/逐仓设置杠杆(tdMode为cash时报错);双向持仓且逐仓时OKX按多、空两侧分别设置杠杆,按exchange.SetDirection()设置的方向选择一侧(buy为多、sell为空,未设置时为多)。
持仓模式:下单前自动查询账户的持仓模式,双向持仓时按开平方向带posSide;也可以用exchange.IO("dual", bool)切换。
期权
Futures_OKCoin(期货)
支持OKX期权,用法与期货合约相同。
exchange.GetMarkets()、exchange.GetTickers()不列出期权合约,可以通过OKX的/api/v5/public/instruments?instType=OPTION&uly=BTC-USD接口查询期权合约列表。- 当前合约为期权时,不传品种的
exchange.GetPositions()、exchange.GetOrders()等按USD.option范围查询,连接器按OKX的期权标的列表逐个标的查询。 - 从未成交的期权合约,
exchange.GetTicker()的Last取标记价格。 - 期权订单不带
posSide。
期权代码示例:BTC-USD-260925-60000-C
期权代码为OKX原生代码:标的-计价币-到期日(YYMMDD)-行权价-C/P。交易对设置为BTC_USD,完整品种代码形如BTC_USD.BTC-USD-260925-60000-C。
注意事项
OKEX(现货)
- 现货市价买单的下单量是计价币金额(连接器不设
tgtCcy,按OKX默认口径);要按交易币数量下市价买单,在下单附加参数中传{"tgtCcy": "base_ccy"}。 exchange.ModifyOrder()使用OKX的改单接口(amend-order)原地修改,订单ID不变。- 条件单支持止盈、止损和OCO;
exchange.ModifyConditionOrder()使用OKX的改算法单接口(amend-algos)原地修改,不撤单重下。 exchange.GetHistoryOrders()只能查单个交易对,传空串时报错;exchange.GetHistoryConditionOrders()不支持since参数,传入时报错。
Futures_OKCoin(期货)
exchange.GetFundings()不支持批量查询,需要传入具体的永续合约,例如exchange.GetFundings("ETH_USDT.swap");不传或传范围(如USDT.swap)时报错。- 条件单支持止盈、止损和OCO;
exchange.ModifyOrder()、exchange.ModifyConditionOrder()使用OKX的改单接口原地修改,订单ID不变。 exchange.GetHistoryConditionOrders()不支持since参数,传入时报错;exchange.GetHistoryOrders()支持。