Python-Binance Account接口全攻略:订单管理到资产查询

·

本文聚焦 python-binance 0.2.0 中与账户(Account Endpoints)、订单(Orders)相关的核心 API,涵盖参数验证到资产分红的每一步操作,并给出可直接粘贴运行的 Python 代码示例。

一、下单前的权威门槛:Order Validation

在发送任何订单之前,Binance 设置了三道硬性过滤器:最小价格(minPrice)、最小下单数量(minQty)与最小总额(minNotional)。
这些数值通过 exchangeInfo 返回的字段实时更新。建议先拉取一次,缓存到本地字典,再与下列技巧结合:

  1. 直接格式化:

    amount = 0.000234234
    precision = 5
    amt_str = "{:0.0{}f}".format(amount, precision)
  2. 使用 python-binance 自带的 round_step_size

    from binance.helpers import round_step_size
    rounded_amount = round_step_size(0.000234234, 0.00001)

    只需把 tickSizestepSize 传进去,就能自动对齐。

💡【最佳实践】把这两种方法包装进自己的工具函数,能在整个 order validation 生命周期内复用,减少重复算力。


二、订单操作万字图鉴

1. 查询订单历史

orders = client.get_all_orders(symbol='BNBBTC', limit=10)

2. 创建普通订单

3. 沙盒:测试订单不成交

client.create_test_order(
    symbol='BNBBTC',
    side=SIDE_BUY,
    type=ORDER_TYPE_LIMIT,
    timeInForce=TIME_IN_FORCE_GTC,
    quantity=100,
    price='0.00001')

4. 查单、撤单、查当前挂单

5. 高效读取海量历史

若需遍历全部订单,再加上 startTimeendTime 参数 分批拉取,可降低丢单率。
👉 实时收益率飞起来?点这里查看高阶策略沙盒示例。


三、账户总览与资金动作

1. 三步看清自己的家底

常用字段一句话描述
balances各币种在现货账户的 free 与 locked
updateTime最近一次变更时间戳
permissions账户允许的交易/提币权限列表

获取:

account = client.get_account()

2. 快速查余额 & 手续费

3. 资产详情 & 微尘转换

👉 想测试省时省力的微尘转化?跟我一起动手。


FAQ:新手高频疑问解答

Q1:为什么下单一直报 LOT_SIZE 错误?
A1:验证数量是否满足 stepSize 精度,使用前文 round_step_size 即可优雅对齐。

Q2: create_order 和 order_limit_buy 有何区别?
A2:create_order万能接口,需要手动填入大量枚举值;而 order_limit_buy/order_limit_sell 在库内部帮你构建字段,写得更少、出错更低

Q3:未成交的订单如何监听成交
A3:WebSocket 订阅 !userDataStream,开启 listenKey,稍后在本地维护消息队列即可实时回调。

Q4:哪里查看 maker/taker 费率
A4:client.get_trade_fee() 返回 makerCommission、takerCommission;需根据 VIP 等级整站决定最终扣减。

Q5:账户信息到底是缓存还是实时?
A5:get_account()5 秒缓存一次,想拿最新余额,用 get_asset_balance 指定单次资产即可。

Q6:get_my_trades(symbol) 中的 idorderId 不同,如何应对对账?
A6:数据库建立 双向索引orderId 对应原单,id 是交易填充编号;可联合 time 字段去重。


四、小结与下一步

掌握以上 15 条 API 与 验证策略 后,你已经是 Binance Spot API 的“合格驾驶员”。
若想晋级量化玩家,下一步可以把 账户 API、市价单、OCO 单组合 编成循环,加上 WebSocket 成交推送,实现毫秒级自动止盈止损。

别忘了,库里封装的方法只是起点——把合理的风控与缓存逻辑嵌进来,收益才真正起飞。祝交易顺利,代码无 bug!