pythonBinance api:APIError(代码=1013):过滤器故障:批量大小

2024-05-10 05:59:56 发布

您现在位置:Python中文网/ 问答频道 /正文

尝试使用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')

你知道怎么解决这个问题吗


Tags: client数量iffailure错误codedifforder
3条回答

我刚刚经历了同样的问题。作为一个傻瓜,这些答案中的一些代码看起来相当复杂,所以我想出了一个解决方案

代码:

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

那么,当您下订单时,只需执行以下操作: (确保数量为浮点或十进制)

  B_order = round(qty / symbol_price, decimal)
  order = client.order_market_buy(
            symbol=symbol_name,
            quantity=B_order)

出现此错误是因为您试图创建数量低于所需最小数量的订单

您可以通过以下方式访问特定对所需的最小值:

info = client.get_symbol_info('ETHUSDT')
print(info)

输出包含该对信息的字典。 现在,您可以通过以下方式访问所需的最小数量:

print(info['filters'][2]['minQty'])
# 0.00001

买卖数量必须为>;=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

相关问题 更多 >