如何使用python-binance提交BTCUSD永续期货市价订单?
问题核心原因
你提交的订单被匹配到带日期后缀的交割合约,本质是两个链路的配置错位:
- 传递的symbol值本身是交割合约的固定到期日标的,没有使用永续合约对应的符号
- 客户端初始化时错连到了交割合约的专属服务路由,导致永续的下单请求被路由到交割合约池匹配标的
分步修正方案
1. 匹配正确的永续合约符号
币安所有带_YYYYMMDD后缀的交易对都是固定到期日的交割合约,永续合约的符号有固定规则,和目标标的的对应关系:
- USDT本位BTC永续(最常用,保证金以USDT结算):正确符号为
BTCUSDT,无任何后缀 - 币本位BTCUSD永续(保证金以BTC结算,合约面值锚定美元):正确符号为
BTCUSD_PERP,必须带固定的_PERP后缀
2. 校验客户端初始化配置
python-binance的不同合约类型对应不同的接口路由,初始化时不要手动指定交割合约的专属服务地址,否则所有请求都会被路由到交割合约域:
- 对接USDT本位永续时,保留客户端默认配置即可,默认路由就指向USDT本位永续的服务端点
- 对接币本位永续时,不能直接使用通用的
futures_create_order方法(该方法仅覆盖USDT本位域),必须调用币本位专属的接口方法
3. 替换对应场景的正确下单代码
场景1:提交USDT本位BTC永续市价买单
from binance.client import Client # 替换为你自己的API Key、Secret,确保账号已开通期货交易权限 client = Client(api_key="你的API Key", api_secret="你的API Secret") client.futures_create_order( symbol="BTCUSDT", side="BUY", type="MARKET", quantity=0.001 )
场景2:提交币本位BTCUSD永续市价买单
# 复用同一个客户端实例,调用币本位专属下单接口 client.futures_coinm_create_order( symbol="BTCUSD_PERP", side="BUY", type="MARKET", quantity=1, # 币本位合约的quantity为张数,1张对应100美元面值,注意和USDT本位的数量规则区分 )
额外排查点
- 下单前打印代码中
sym变量的实际取值,确认不是之前测试交割时残留的带日期后缀的符号 - 如果使用测试网环境,确认配置的服务地址和你要对接的永续测试域一致,不要混用交割测试网的地址
内容的提问来源于stack exchange,提问作者SAENGSURIN kowit
相关产品推荐
相关产品推荐

