使用Python-Binance库进行Binance期货交易时,经常会遇到APIError(code=-1111): precision is over the maximum defined for this asset错误。此错误表明订单精度超过了该资产允许的最大值。本文将分析错误原因并提供可靠的解决方案。
根本原因在于,用户提交的订单数量精度与Binance交易所对该特定交易对的要求不匹配。Binance并非所有交易对都允许订单数量精确到小数点后8位。每个交易对都有一个stepSize,定义订单数量的最小增量。忽略stepSize直接使用计算出的数量会导致精度错误。
文中提到的硬编码tick_size方法不可靠,因为不同交易对的tick_size不同。 更稳妥的方案是直接从Binance API获取stepSize。
解决方案:
立即学习“Python免费学习笔记(深入)”;
通过client.get_symbol_info()获取交易对详细信息,其中包含filters列表。在该列表中,找到filterType为LOT_SIZE的过滤器,其stepSize字段即为订单数量的最小增量。
利用获取到的stepSize,计算正确的精度和数量:
import mathfrom binance.client import Client# ... (API密钥等配置) ...symbol_info = client.get_symbol_info('BTCUSDT')step_size = 0.0for f in symbol_info['filters']: if f['filterType'] == 'LOT_SIZE': step_size = float(f['stepSize'])precision = int(round(-math.log(step_size, 10), 0))quantity = float(round(quantity, precision)) # quantity 为你计算出的交易数量client.futures_create_order(symbol='BTCUSDT', side='BUY', type='MARKET', quantity=quantity)
登录后复制
本文来自互联网或AI生成,不代表软件指南立场。本站不负任何法律责任。
如若转载请注明出处:http://www.down96.com/tutorials/339.html