如何通过 Bybit API 使用市价单平仓?

Tur*_*ing 6 python api bybit

我尝试使用 python 和 Bybit API 创建一个示例交易机器人。当我创建头寸时它正在工作,但当我尝试平仓时它会向我发送错误,因为当我平仓时我无法使用“市场”订单。我正在 Bybit 文档上搜索,但看不到这一点。

让我解释:

这是我的开仓代码

open_position = client.place_active_order(symbol="BTCUSDT",
                side="Buy",
                order_type="Market",
                qty= 0.001,
                time_in_force="GoodTillCancel",
                reduce_only=False,
                close_on_trigger=False,)
Run Code Online (Sandbox Code Playgroud)

我尝试用以下代码平仓:

last_price = client.latest_information_for_symbol(symbol="BTCUSDT")["result"][0]["last_price"]

# close position
close_position = client.set_trading_stop(
                 symbol="BTCUSDT",
                 side="Buy",
                 take_profit=last_price)
Run Code Online (Sandbox Code Playgroud)

此代码在某些情况下有效,但通常我会收到此错误:

InvalidRequestError(
pybit.exceptions.InvalidRequestError: Takeprofit:445890000 set for buy position should be higher 
than base_price:445895000??lastprice (ErrCode: 130027)
Run Code Online (Sandbox Code Playgroud)

我认为,last_price当我运行订单时,它不等于 BTCUSDT 平价take_profit = last_price

例如,我的last_price代码得到 BTCUSDT= 40000,但当我的代码下订单之前,BTCUSDT 上涨了 40100。

那么,如何使用“市价”订单平仓呢?

Bybit 文档在这里Bybit Api 文档

谢谢。

Zat*_*ter 6

我一直在努力解决同样的问题,直到我意识到在 ByBit 上平仓交易的实际方法是在交易开仓的另一侧使用 reduce_only 选项:

client.place_active_order(symbol="BTCUSDT",
                side="Sell",
                order_type="Market",
                qty= 0.001,
                time_in_force="GoodTillCancel",
                reduce_only=True
                close_on_trigger=False,)
Run Code Online (Sandbox Code Playgroud)