我正在尝试在 Python 上可用的 Binance API 上构建自己的机器人。
我目前正在尝试的是根据我的 Binance 账户中可用的金额/BTC 来下订单购买/出售 BTC。
然后,代码应该将这笔现金转换为 BTC 并发出买入/卖出订单:
if order_book[-1]=="BUY":
for balance in account_info['balances']:
if float(balance['free']) > 0 and balance['asset']=="BTC":
total_btc += float(balance['free'])
for balance in account_info['balances']:
if float(balance['free']) > 0 and balance['asset']=="USDT":
total_balance += float(balance['free'])
因此,根据上面的循环,total_balance 给出了我当前拥有的现金数量。 基于此,我可以发出购买订单:
client.create_order(
symbol='BTCUSDT',
side='BUY',
type='MARKET',
quantity=float(round(float(total_balance)/float(client.get_ticker(symbol='BTCUSDT')['lastPrice']),8)))
这里的主要困难是,在这里我尝试在“数量”参数中转换为 BTC 或任何加密货币,并且最常见的是以下错误:| ||BinanceAPIException: APIError(code=-1013): Filter failure: LOT_SIZE
如何让此代码每次运行而不会出现手数错误,即如何将我拥有的现金数量精确地转换为 BTC 并进行购买订单?
非常感谢
Thank you a lot
遇到的
LOT_SIZE
错误是由于尝试交易的 BTC 数量不符合 Binance 为 BTCUSDT 交易对设定的最小交易量限制。
为了解决这个问题,需要在的代码中实现以下逻辑:
- 获取交易对的交易规则:
在发出订单之前,需要使用
client.get_symbol_info('BTCUSDT')
获取 BTCUSDT 交易对的交易规则。 这将返回一个包含交易规则信息的字典,包括最小交易量(
LOT_SIZE
)、最小报价精度(
PRICE_FILTER
)、最小订单金额等等。
python
info = client.get_symbol_info('BTCUSDT')
lot_size = float(next(filter(lambda x: x['filterType'] == 'LOT_SIZE', info['filters']) )['stepSize'])
- 根据最小交易量调整的订单数量:
需要将计算的 BTC 数量向下舍入到最接近的
LOT_SIZE
倍数。 可以使用以下代码实现:
```python import math
# ... (的现有代码)
# 获取 BTCUSDT 的最小交易量 info = client.get_symbol_info('BTCUSDT') lot_size = float(next(filter(lambda x: x['filterType'] == 'LOT_SIZE', info['filters']) )['stepSize'])
# 计算可以购买的最大BTC数量 quantity_btc = float(total_balance) / float(client.get_ticker(symbol='BTCUSDT')['lastPrice'])
# 将数量向下舍入到最接近的 LOT_SIZE 倍数 quantity_btc = lot_size * math.floor(quantity_btc / lot_size)
# ... (使用调整后的 quantity_btc 发出订单) client.create_order( symbol='BTCUSDT', side='BUY', type='MARKET', quantity=quantity_btc) ```
通过添加此逻辑,的代码将始终遵守 Binance 的交易规则,并且将不再遇到
LOT_SIZE
错误。
其他注意事项:
-
还需要考虑其他交易规则,例如
MIN_NOTIONAL
(最小订单金额)和PRICE_FILTER
(最小报价精度),以确保的订单有效。 -
使用市场订单(
MARKET
) 时,只需指定交易数量,无需指定价格。 但是,请注意,市场订单的价格可能会波动,并且最终可能会以高于预期价格的价格买入或低于预期价格的价格卖出。
希望这些信息能够帮助解决问题!
标签:python,binance,cryptocurrency,binance-api-client From: 78819582