我尝试使用 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 文档
谢谢。
我一直在努力解决同样的问题,直到我意识到在 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)
| 归档时间: |
|
| 查看次数: |
4989 次 |
| 最近记录: |