当尝试使用 python-binance api 下买入或卖出订单时,我收到以下错误:
APIError(code=-1013): Filter failure: LOT_SIZE.
现在我已经在iceberg_parts看到这意味着我的购买或出售数量可能有问题。我试图将数量增加 10 倍,但这只给了我另一个相关的错误:
APIError(code=-1013): Filter failure: MIN_NOTIONAL.
这是我的一些代码:
diff = current_price - prev_price
if diff <= 0.0001:
order = client.order_market_buy(symbol = market , quantity = '0.0001')
print('buy order')
if diff >= 0.00040:
order = client.order_market_sell(symbol =market, quantity ='0.0001')
print('sell order')
你知道如何解决这个问题吗?
出现此错误的原因是您尝试创建的订单数量低于所需的最小数量。
您可以通过以下方式访问特定对所需的最小值:
info = client.get_symbol_info('ETHUSDT')
print(info)
输出包含该对信息的字典。现在,您可以使用以下命令访问所需的最小数量:
print(info['filters'][2]['minQty'])
# 0.00001

买入或卖出数量必须是 & gt;= 10.3 美元或 10.3 / 价格,将数量和价格传递给这些十进制设置 / 过滤器,金额设置为十进制
from decimal import Decimal as D, ROUND_DOWN, ROUND_UP
import decimal
info = client.get_symbol_info(symbol=pair)
price_filter = float(info['filters'][0]['tickSize'])
ticker = client.get_symbol_ticker(symbol=pair)
price = float(ticker['price'])
price = D.from_float(price).quantize(D(str(price_filter)))
minimum = float(info['filters'][2]['minQty']) # 'minQty'
quant = D.from_float(quantity).quantize(D(str(minimum))) # if quantity >= 10.3/price
作为一个 noob,这些答案中的一些代码似乎相当复杂,所以我想出了一个解决方案。
代码:
def check_decimals(symbol):
info = client.get_symbol_info(symbol)
val = info['filters'][2]['stepSize']
decimal = 0
is_dec = False
for c in val:
if is_dec is True:
decimal += 1
if c == '1':
break
if c == '.':
is_dec = True
return decimal
那么当你下订单时,只需做 ex:(确保 qty 是浮点数或小数)
B_order = round(qty / symbol_price, decimal)
order = client.order_market_buy(
symbol=symbol_name,
quantity=B_order)
这里是一些代码。
def round_down(self, coin, number):
info = self.client.get_symbol_info('%sUSDT' % coin)
step_size = [float(_['stepSize']) for _ in info['filters'] if _['filterType'] == 'LOT_SIZE'][0]
step_size = '%.8f' % step_size
step_size = step_size.rstrip('0')
decimals = len(step_size.split('.')[1])
return math.floor(number * 10 ** decimals) / 10 ** decimals
本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处
评论列表(22条)