所以我有这个问题,当我用 USDT 购买一些 BTC 时,我会尝试购买一定数量的比特币,在本例中为 0.00053 比特币,但我只会收到 0.0005247 比特币。然后我将尝试出售这个比特币,我收到一个 LOT_SIZE 错误,大概是因为我试图出售超过精度的数量?我找不到很多人遇到同样的问题,所以我认为我做错了什么。我将在下面发布我的代码(它无法运行,我已经将它从我制作的课程中删除了)
def correct_order_for_precision(self, order_amt):
# return float(format(order_amt, f'.{client.get_symbol_info(self.symbol)['baseAssetPrecision']}f')) Not working
return float(format(order_amt, f'.5f'))
def buy_comodity(self, amt_in_usd):
current_price = float(self.get_ticker_price())
order_amt = amt_in_usd / current_price
order_amt = self.correct_order_for_precision(order_amt)
print(f"Order for {self.ticker_name} being placed for amt: {order_amt}")
order = client.create_order(
symbol=symbol,
side=Client.SIDE_BUY,
type=Client.ORDER_TYPE_MARKET,
quantity=order_amt
)
print(f"Order[{order['orderId']}] for {self.ticker_name} filled for amt: {order_amt}")
如果我用参数
buy_comodity
调用上面的函数15.0
它打印出来:
Order[xxxx] for BTCUSDT filled for amt: 0.00053
然而在币安应用程序上,它显示我只收到了
0.00052947 BTC
。我认为这是由于收费?
然后我运行下面的代码:
def sell_comodity(self):
print(f"Order[{self.order['orderId']}] selling {self.ticker_name} amount {self.order['executedQty']}")
order = client.create_order(
symbol=symbol,
side=Client.SIDE_SELL,
type=Client.ORDER_TYPE_MARKET,
quantity=self.correct_order_for_precision(float(client.get_asset_balance(asset=self.ticker_name)['free']))
)
它输出这个:
Order[20575260518] selling BTC amount 0.00053000
在此之前遇到异常
binance.exceptions.BinanceAPIException: APIError(code=-1013): Filter failure: LOT_SIZE
任何人都可以给我一些建议,甚至只是给我一些“hello world”风格的代码吗?
谢谢!
编辑:澄清一下(感谢 paddy 的回复)我的问题不在于我没有收到完整的订单。更重要的是,我无法出售我购买的所有比特币,因为我收到了一个奇怪的数量,由于手数/精度问题,我无法全部出售