如何通过CCXT实现Bitget跟单交易订单的平仓操作?
Bitget跟单交易平仓正确实现方式
你现有代码存在3个核心逻辑错误,直接跑会出现开反向仓、平仓报错的问题:
- 开平仓方向完全写反:持有
long多单时平仓需要下卖单,持有short空单时平仓需要下买单,你当前写的多单对应buy、空单对应sell是开仓/加仓逻辑,根本无法平仓 - 平仓触发条件写错:
curposition == 'flat'代表当前已经是空仓状态,不需要任何平仓操作,你把平仓接口调用放在这个分支里完全不符合逻辑 - 接口参数硬编码无效:
post_closeTrackOrder的trackingNo参数不能传固定字符串'currentTrack',必须传你开跟单仓时接口返回的真实跟踪单号,symbol也不要写死成ETH的交易对,直接用策略传的ticker变量即可
Bitget跟单平仓直接用官方SDK提供的post_closeTrackOrder接口即可,全量平仓不需要额外传方向参数,接口会自动根据当前持仓方向匹配平仓对手单,部分平仓时额外传quantity参数指定平仓数量即可。
修正后的可运行代码如下:
side = data['strategy']['order_action'].upper() quantity = data['strategy']['order_contracts'] ticker = data['ticker'] curposition = data['strategy']['market_position'] # 替换为你开对应跟单仓位时,接口返回的真实trackingNo,建议开仓成功后存在缓存/变量中 open_track_no = "替换为实际开仓返回的跟踪单号" if curposition == 'long': # 多单平仓 bitget.post_closeTrackOrder( symbol=ticker, trackingNo=open_track_no, quantity=quantity # 要全平的话删掉这个参数即可 ) elif curposition == 'short': # 空单平仓 bitget.post_closeTrackOrder( symbol=ticker, trackingNo=open_track_no, quantity=quantity ) elif curposition == 'flat': # 已空仓无操作 pass
几个实操注意事项:
- 如果你本地安装的是最新版Bitget Python SDK,部分版本方法名调整为
close_track_order,调用报方法不存在时先核对SDK版本对应的接口命名 - 接口调用前先在模拟盘验证权限、参数正确性,确认能正常平仓再切实盘
- 平仓请求发出去后,建议间隔1-2秒调用跟单持仓查询接口核对仓位剩余量,避免因网络波动、参数错误导致漏平
内容的提问来源于stack exchange,提问作者haeleon
相关产品推荐
相关产品推荐

