问题描述
我在尝试提交 ETHUSDT 订单时遇到了意外的 Binance API 错误。错误看起来很标准:
{'code': -1013,'msg': 'Filter failure: PERCENT_PRICE'}
我正在传递一个平均价格,该价格是一秒钟前使用 API 的符号价格代码函数检索到的。我的订单功能如下:
params = {
"symbol": "ETHUSDT","side": "BUY","type": "LIMIT","quantity" : 0.1,"timeInForce" : "GTC","price" : 3391,#A price from GET /api/v3/ticker/price
"recvWindow" : 40000
}
response = send_signed_request('POST','/api/v3/order',params)
print(response)
但是当价格低了十倍时,订单就完成了,没有任何错误。此外,使用相同的管道,其他符号也不会引发任何错误。我究竟做错了什么?看起来是个bug,但不知道在哪里提交。
任何建议将不胜感激!
解决方法
数量和价格应采用特定的字符串格式,以使其始终如一地工作。 Binance 相关文档为 here。
您可以使用此语法来应用格式:
amt_str = "{:0.0{}f}".format(amount,precision)
请注意,此示例中的 precision
是一个整数,而不是步长。