CCXT okex5 掉期合约 - 参数 posSide 错误

问题描述 投票:0回答:3

我正在尝试在 okex 交易所版本 5 上使用 ccxt 创建永久限价订单。 API 已成功在现货交易所下订单(限价订单和市价订单),但在永续交易所上失败。 这就是我正在尝试的-

exchange_swap = ccxt.okex5({
'apiKey': credentials['okex']['apikey'],
'secret': credentials['okex']['secretkey'],
'password': credentials['okex']['password'],
'options': {
    'defaultType': 'swap', 
      }
})
params =  {
   "test":True
}
order = exchange_swap.createLimitBuyOrder('XRP-USDT-SWAP',100,0.7)

错误信息-

ccxt.base.errors.BadRequest: okex5 {"code":"1","data":[{"clOrdId":"","ordId":"","sCode":"51000","sMsg":"Parameter posSide  error ","tag":""}],"msg":""}

搜索此错误后,我在他们的文档中发现了这一点 -

Error message           Http status code     Error code
Parameter {0} error.    400                  51000

文档链接 - Okex v5

P.S - 我可以通过 okex 上的交易仪表板放置此内容,但不能通过 API。我有足够的余额来创建此订单。

整个错误信息是这样的-

Traceback (most recent call last):
File "C:\Users\ishaa\Desktop\trading\Crypto Vibhor\Testing Files\ccxt_test.py", line 70, in 
 <module>
  order = exchange_swap.createLimitBuyOrder('XRP-USDT-SWAP',100,0.7)
  File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\base\exchange.py", line 1983, in create_limit_buy_order
return self.create_order(symbol, 'limit', 'buy', amount, price, params)
 File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\okex5.py", line 1287, in create_order
response = self.privatePostTradeOrder(self.extend(request, params))
File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\base\exchange.py", line 461, in inner
return entry(_self, **inner_kwargs)
File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\base\exchange.py", line 
 486, in request
  return self.fetch2(path, api, method, params, headers, body)
  File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\base\exchange.py", line 482, in fetch2
  return self.fetch(request['url'], request['method'], request['headers'], request['body'])
  File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\base\exchange.py", line 634, in fetch
  self.handle_errors(http_status_code, http_status_text, url, method, headers, http_response, json_response, request_headers, request_body)
  File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\okex5.py", line 2230, in handle_errors
  self.throw_exactly_matched_exception(self.exceptions['exact'], errorCode, feedback)
  File "C:\Users\ishaa\Desktop\trading\tradingenv\lib\site-packages\ccxt\base\exchange.py", line 500, in throw_exactly_matched_exception
   raise exact[string](message)
   ccxt.base.errors.BadRequest: okex5 {"code":"1","data": 
   [{"clOrdId":"","ordId":"","sCode":"51000","sMsg":"Parameter posSide  error 
    ","tag":""}],"msg":""}
python rest trading cryptoapi ccxt
3个回答
4
投票

如果您的 OKX 账户设置中的

Order Placement Mode
错误,则可能会发生这种情况。 进入您的 OKX 账户 > 交易 > 永续合约 > 设置 > 下单模式,将其设置为
Long/Short mode


2
投票

错误消息显示

Parameter posSide error
,这意味着您在请求中发送的
posSide
参数有错误。

据我从您的代码中看到,您只提供了股票代码、尺寸和价格,但缺少

posSide
参数。

与其他交易所相反,在Okex上您可以对

buy
sell
产品进行
long
short
a
FUTURES
SWAP
,因此您需要添加
posSide
参数。

这是违反直觉的,我也花了一些时间才弄清楚。实际上,您可以同时

buy
a
long
buy
a
short
。您可以在 Okex gui 中尝试一下,看看它到底是如何工作的。

文档告诉我们

posSide
参数是:

另一个选项是禁用

long/short
模式(默认设置)并使用
net
模式。使用
net
模式意味着您不需要将
posSide
参数添加到请求字符串中。

这里是文档的链接,解释如何设置位置模式

这是一个工作示例,其中包括限价订单的两个必需参数,即设置

tdMode
posSide
:

import ccxt

exchange = ccxt.okex5({
    'apiKey': '...',
    'secret': '...',
    'password': '...',
})

exchange.createLimitBuyOrder('XRP-USDT-SWAP', 100, 0.4,
                             {"tdMode": "cross", "posSide": "long"})

您可以在 ccxt 文档此处中阅读有关设置自定义订单参数的更多信息。


0
投票

对于 2024 年面临类似问题的任何人,它被称为

Position Mode
,其值应该是 Perp 设置中的
One-way mode
,如 @x-6-2-5 的 答案中指出的那样。

使用 OKX Crypto 的 ATAS 平台时也会出现同样的错误。

© www.soinside.com 2019 - 2024. All rights reserved.