Bybit CCXT API配置问题:期货/现货/演示交易切换及鉴权错误修复求助
问题修复方案
一、先解决API无效错误(retCode:10003)
- 区分演示网与实盘API密钥:Bybit测试网(Demo)和实盘的API完全独立,启用
enable_demo_trading(True)时,必须使用Bybit测试网后台生成的API Key/Secret,不能混用实盘密钥。 - 检查API权限:创建API时需勾选「交易」权限,同时开启对应市场权限(做期货开「合约交易」,做现货开「现货交易」)。
- 确认IP白名单设置:若开启了IP白名单,需将当前机器IP加入白名单列表。
二、正确配置CCXT进行现货/期货交易
1. 实盘线性期货(USDT永续)配置
bybit = ccxt.bybit({ "apiKey": setting['API'], # 实盘期货API密钥 "secret": setting['SECRET'], "enableRateLimit": True, "version": 'v5', "options": { "defaultType": "linear", # 对应USDT永续期货 } })
2. 演示网线性期货配置
bybit = ccxt.bybit({ "apiKey": setting['DEMO_API'], # 测试网专属API密钥 "secret": setting['DEMO_SECRET'], "enableRateLimit": True, "version": 'v5', "options": { "defaultType": "linear", } }) bybit.enable_demo_trading(True) # 启用演示交易模式
3. 实盘现货配置
bybit = ccxt.bybit({ "apiKey": setting['SPOT_API'], # 可与期货共用同一API(需确保现货权限开启) "secret": setting['SECRET'], "enableRateLimit": True, "version": 'v5', "options": { "defaultType": "spot", # 指定现货市场 } })
三、开平仓操作示例
期货开多单(市价)
order = bybit.create_order( symbol='BTC/USDT:USDT', # 线性期货交易对格式:标的/计价:保证金币种 type='market', side='buy', amount=0.001, )
现货买币(市价)
order = bybit.create_order( symbol='BTC/USDT', type='market', side='buy', amount=0.001, )
期货平仓(市价平多单)
order = bybit.create_order( symbol='BTC/USDT:USDT', type='market', side='sell', amount=0.001, )
关键注意点
- Bybit V5的
defaultType取值为:spot(现货)、linear(USDT永续)、inverse(反向合约),不要使用旧版的futures值,这是你最初开错现货的核心原因。 - 若需在同一脚本中切换现货/期货,可不用依赖
defaultType,而是在下单时通过params指定市场类型:
# 强制指定线性期货下单 order = bybit.create_order( symbol='BTC/USDT:USDT', type='market', side='buy', amount=0.001, params={'type': 'linear'}, )
内容的提问来源于stack exchange,提问作者h2zee
相关产品推荐
相关产品推荐

