You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用pybit开空单时遇InvalidRequestError(130001)错误求助

问题:使用pybit下达开空单时报错 Position idx not match position mode (ErrCode: 130001)

测试代码

from pybit import *
session = usdt_perpetual.HTTP(endpoint = "https://api-testnet.bybit.com",
                              api_key = 'yyyyy',
                              api_secret = 'xxxxxx')

symbol = "HIGHUSDT"
resp = session.place_active_order(
                                    symbol=symbol,
                                    side="Sell",
                                    order_type="Market",
                                    qty= 10,
                                    time_in_force="GoodTillCancel",
                                    reduce_only=False,
                                    close_on_trigger=False
                                )

报错信息

InvalidRequestError: Position idx not match position mode (ErrCode: 130001) (ErrTime: 01:35:30).
Request → POST https://api-testnet.bybit.com/private/linear/order/create: {'api_key': 'xxxxxxxx', 'close_on_trigger': False, 'order_type': 'Market', 'qty': 10, 'recv_window': 5000, 'reduce_only': False, 'side': 'Buy', 'symbol': 'HIGHUSDT', 'time_in_force': 'GoodTillCancel', 'timestamp': 1679362530091, 'sign': '64632a4ed529118f8516eb01294deec4036289ae835326eb24abef6b1ab8b813'}.

问题原因

这个错误是Bybit仓位模式与下单时position_idx参数不匹配导致的:

  • Bybit分为单向持仓和双向持仓两种模式
  • 单向模式下只能持有单方向仓位,position_idx固定为0;双向模式下可同时持有多空仓位,需指定position_idx(0对应多头,1对应空头)
  • 你的请求中未指定position_idx,系统无法匹配当前账户的仓位模式,因此报错

修复方案

方案1:适配单向持仓模式

直接在下单参数中添加position_idx=0,代码修改如下:

from pybit import usdt_perpetual

session = usdt_perpetual.HTTP(
    endpoint="https://api-testnet.bybit.com",
    api_key='yyyyy',
    api_secret='xxxxxx'
)

symbol = "HIGHUSDT"
resp = session.place_active_order(
    symbol=symbol,
    side="Sell",
    order_type="Market",
    qty=10,
    time_in_force="GoodTillCancel",
    reduce_only=False,
    close_on_trigger=False,
    position_idx=0  # 添加该参数适配单向模式
)

方案2:适配双向持仓模式

  1. 先在Bybit测试网账户设置中开启双向持仓模式
  2. 下单时根据方向指定position_idx:空单填1,多单填0。修改后的空单代码:
from pybit import usdt_perpetual

session = usdt_perpetual.HTTP(
    endpoint="https://api-testnet.bybit.com",
    api_key='yyyyy',
    api_secret='xxxxxx'
)

symbol = "HIGHUSDT"
resp = session.place_active_order(
    symbol=symbol,
    side="Sell",
    order_type="Market",
    qty=10,
    time_in_force="GoodTillCancel",
    reduce_only=False,
    close_on_trigger=False,
    position_idx=1  # 空单指定position_idx为1
)

额外注意

报错请求中显示side="Buy",但你代码里写的是side="Sell",测试时需确保代码参数与实际下单方向一致。

内容的提问来源于stack exchange,提问作者Gilseung Ahn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 02:20:24