如何使用rest api在币安期货平仓时取消止损和获利订单

Bar*_*ris 3 rest binance binance-api-client

我正在使用币安期货 REST API 进行算法交易。创建买入或卖出订单后,当我查看币安应用程序时,我还会创建“止盈”和“止损”订单。它看起来像常规的止损/止盈订单,但当我手动平仓时,或者当执行任何止损/止盈订单时,止损/止盈订单仍在我的未平仓订单中等待。

但是,当我使用币安应用程序创建止损/止盈订单并平仓(出于任何原因)时,同一交易品种的未平仓订单也会关闭。

这里是创建止损/止盈订单的端点和参数;

https://fapi.binance.com/fapi/v1/order?symbol=ETHUSDT&side=BUY&type=TAKE_PROFIT_MARKET&timestamp=12123123&closePosition=true&stopPrice=4100&workingType=MARK_PRICE&priceProtect=true
Run Code Online (Sandbox Code Playgroud)

这个为 ETHUSDT 代码创建了一个 TP 订单,但我不知道为什么该订单在平仓时没有取消。

创建止损/止盈订单时是否缺少任何参数?

max*_*00d 6

我有一个相关问题。对于您的具体问题,我注意到,例如,当您提交市场多头头寸时。您可以通过将止盈订单和止损订单分别设置为 TAKE_PROFIT_MARKET 和 STOP_MARKET 来跟进。

为此,您必须采用“单向”模式(而不是“对冲”模式)。

然后将“timeInForce”的值设置为“GTE_GTC” - 我在文档中看不到这个值,但我确实看到当您通过带有 TP/SL 的 UI 设置订单时,会显示以下内容。还将“reduceOnly”设置为 True。

然后,当您关闭原始市价订单时,这些“待处理”订单都将被删除。

刚刚测试过,您实际上可以批量提交所有这些订单(json 列表)到:

POST /fapi/v1/batchOrders
Run Code Online (Sandbox Code Playgroud)
batch_payload = [
        {
            'newClientOrderId': '467fba09-a286-43c3-a79a-32efec4be80e',
            'symbol': 'ETHUSDT',
            'type': 'MARKET',
            'quantity': '9.059',
            'side': 'SELL'
        },
        {
            'newClientOrderId': '6925e0cb-2d86-42af-875c-877da7b5fda5',
            'symbol': 'ETHUSDT',
            'type': 'STOP_MARKET',
            'quantity': '9.059',
            'side': 'BUY',
            'stopPrice': '3037.9',
            'timeInForce': 'GTE_GTC',
            'reduceOnly': 'True'
        },
        {
            'newClientOrderId': '121637a9-e15a-4f44-b62d-d424fb4870e0',
            'symbol': 'ETHUSDT',
            'type': 'TAKE_PROFIT_MARKET',
            'quantity': '9.059',
            'side': 'BUY',
            'stopPrice': '2748.58',
            'timeInForce': 'GTE_GTC',
            'reduceOnly': 'True'
        }
    ]
Run Code Online (Sandbox Code Playgroud)