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

为何调用Bybit USDT永续合约API下单时提示无效标的?

解决Bybit USDT永续合约API下单Symbol无效问题

核心问题排查

从错误日志能看到,你代码里写的symbol="MANAUSDT",但实际发出去的请求里变成了MANAUSD,这明显是参数处理出问题了,主要有这几个坑:

  1. Category参数大小写错误
    Bybit V5 API要求category必须是小写:linear对应USDT永续,spot对应现货。你传的"Linear"首字母大写,可能让SDK或者API接口解析混乱,间接把symbol给改了。

  2. 多传了无用的isLeverage参数
    Linear合约下单根本不需要isLeverage这个参数,杠杆得提前用set_leverage接口单独设置,你加这个多余参数,反而可能干扰SDK的参数序列化,导致symbol被错误截断。

  3. Symbol格式错误
    Linear合约的正确格式就是全大写的「标的+USDT」,比如MANAUSDT,你试的MANAUSD、MANA/USDT这些格式全错,只有现货才可能用其他格式。

修正后的代码示例

client = HTTP(testnet = False, api_key=user_key, api_secret=secret_key)

# 先设置杠杆(如果需要1倍可跳过,默认可能就是1倍)
client.set_leverage(
    category="linear",
    symbol="MANAUSDT",
    buyLeverage=1,
    sellLeverage=1
)

# 下单请求
print(client.place_order(
    category="linear",  # 必须小写
    symbol="MANAUSDT",
    side="Buy",
    orderType="Limit",
    qty="1",
    price="0.65",
    timeInForce="GTC",
    reduceOnly=False
    # 移除isLeverage这个多余参数
))

额外验证步骤

  • 先调用get_instruments_info接口,传入category="linear"和symbol="MANAUSDT",确认该合约在实盘确实存在,避免因合约下架导致错误。
  • 如果仍报错,直接手动构造HTTP请求测试,排除SDK问题:
    POST https://api.bybit.com/v5/order/create
    请求头需携带API密钥、签名、时间戳等必填项
    请求体:{"category": "linear", "symbol": "MANAUSDT", "side": "Buy", "orderType": "Limit", "qty": "1", "price": "0.65", "timeInForce": "GTC", "reduceOnly": false}
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 19:27:01