我想请你帮忙。我正在尝试将 python 代码从发送限价/市场订单更改为通过 api 到币安的 OCO 订单。我可以做限价单,市价单,止损限价单。我不知道如何下 OCO 订单...
当我使用限价单时,我发送的是 order_type=ORDER_TYPE_LIMIT 然后我使用了 order = client.create_order() 并且它正在工作。当我想发送市价单时,我使用了 order_type=ORDER_TYPE_MARKET 但是当我想让 OCO 订单时,我发现应该可行的唯一选项是: order = client.create_oco_order() 没有 order_type 但在这里我收到错误 1013 此交易品种不支持止损...
我检查了https://api.binance.com/api/v1/exchangeInfo
还有这个 "orderTypes":["LIMIT","LIMIT_MAKER","MARKET","STOP_LOSS_LIMIT","TAKE_PROFIT_LIMIT"],"icebergAllowed":true,"ocoAllowed":true,
所以我不能使用 order_type。没有 ORDER_TYPE_OCO 并且 ocoAllowed 为真,所以我应该能够发送 oco 订单。但我收到“错误 1013:此交易品种不支持止损订单。订单失败”。
我想要的是将“价格”设置为限价卖单,以便在价格到达那里时获得更高的利润,并在价格下跌时将止损“stopPrice”设置得更低......立即。这就是 OCO 的工作方式。
有人可以给我一个建议吗?我不是 python 大师,我只是改变了我发现的一个代码,我的理解是如果 oco 被允许,也应该允许止损。谢谢
答案 0 :(得分:3)
为了让所有感兴趣的人都对这个问题的解决方案有一个准确的答案,我在注释中包含了代码。
我将以 BTCUSDT 中的 OCO 卖单为例。
想象一下我有 1 个比特币。当前价格为 30157.85,我想在 32000.07 卖出 1 BTC
但价格没有上涨并开始下跌,所以我将止损价格设置在 29283.03,此时限价卖单将以 29000.00 的价格开仓
这意味着我将以 32000.07 或 29000.00 USDT 卖出。顺序写成如下:
order= client.order_oco_sell(
symbol= 'BTCUSDT',
quantity= 1.00000,
price= '32000.07',
stopPrice= '29283.03',
stopLimitPrice= '29000.00',
stopLimitTimeInForce= 'FOK')
请注意,OCO 订单需要 stopLimitTimeInForce 参数。我使用了值“FOK”,但我在此处留下了您可以使用的不同值的描述:https://help.bybit.com/hc/en-us/articles/360039749233-What-are-time-in-force-TIF-GTC-IOC-FOK-
请注意,price、stopPrice、stopLimitPrice 和 stopLimitTimeInForce 参数是字符串,而不是浮点数或十进制数。