提问人:Faisal 提问时间:11/8/2023 最后编辑:toyota SupraFaisal 更新时间:11/9/2023 访问量:32
Binance API get_balance() 在已执行的买单后立即显示零余额
Binance API get_balance() shows zero balance just after a filled buy order
问:
我正在使用 Binance API 开发交易机器人。
我多次尝试出售与上次买入订单的成交数量完全相同的资产。但是每次我尝试这样做时,我都会得到奇怪的结果。
2023-11-08 01:45:40,233 :: INFO :: O O O O - Place sell order for orderId: 556050 and symbol: BNBUSDT
2023-11-08 01:45:40,557 :: INFO :: . . . . . Failed to sell 0.41 BNBUSDT @ 247.0 - **error:** APIError(code=-2010): Account has insufficient balance for requested action.
2023-11-08 01:45:40,558 :: INFO :: Wait 3 seconds balance update
2023-11-08 01:45:43,722 :: INFO :: BNB balance = 0.0 \< qty = 0.41
这是我的买单,对我来说似乎已经成交了。
{'symbol': 'BNBUSDT', 'orderId': 556050, 'orderListId': -1, 'clientOrderId': 'Rvg93RnB43sOLI3y1eaQag', 'transactTime': 1699407857156, 'price': '246.90000000', 'origQty': '0.41000000', 'executedQty': '0.41000000', 'cummulativeQuoteQty': '101.22900000', 'status': 'FILLED', 'timeInForce': 'GTC', 'type': 'LIMIT', 'side': 'BUY', 'workingTime': 1699407857156, 'fills': \[{'price': '246.90000000', 'qty': '0.41000000', 'commission': '0.00000000', 'commissionAsset': 'BNB', 'tradeId': 20885}\], 'selfTradePreventionMode': 'NONE'}
当我尝试出售它时,每次尝试都会遇到余额不足错误。如果它只发生一次,我可以理解余额更新有一些时间膨胀。但是,如果它如此频繁地发生,这对我来说似乎是一个大问题。这就是为什么我在代码中暂停了 3 秒,以确保在我尝试出售我拥有的数量之前更新余额。
我检查了可用与锁定的资产,发现资产已锁定。.{'asset': 'BNB', 'free': '0.00000000', 'locked': '1.60000000'}
我主要在 t 工作,但相信我,生活并没有更好,我得到了同样的结果。TestNe
币安是最大的交易所之一,像这样的问题真的让我怀疑我的代码。这就是为什么我要打开这个讨论,以了解是否只有我有这个问题,那么我可以再次查看我的代码以查看任何傻瓜。否则,代码非常简单,我认为有充分的理由在这里提出这个问题,以便所谓的最大加密货币交易所的聪明才智能够看到他们的努力在花费数百万甚至数十亿美元后进行测试时的表现。
请有人告诉我这对我来说是否是一条死胡同,以及有什么选择,因为我如此致力于这段旅程,尤其是在花了数周时间之后。
try:
logging.info(f"O O O O - Place sell order for orderId: {link_id} and symbol: {symbol} ")
sell_qty = float(df_buy_orders.iloc[index, df_buy_orders.columns.get_loc('qty')])
qty_balance, usdt_balance = get_balance(client=client, symbol=symbol)
if( sell_qty >= qty_balance and qty_balance >= min_qty):
sell_qty = qty_balance
str_sell_qty = str(sell_qty)
if(len(str_sell_qty)> decimal +2):
sell_qty = float(str_sell_qty[0:4])
sell_price = df_buy_orders.iloc[index, df_buy_orders.columns.get_loc('price')]
sell_price = round(float(sell_price) + price_hike_expected, 2)
cover_order = client.order_limit_sell(symbol=symbol, quantity=sell_qty , price=sell_price, timeInForce=Client.TIME_IN_FORCE_GTC)
except Exception as e:
logging.info(f". . . . . Failed to sell {sell_qty} {symbol} @ {sell_price} - error: "+ str(e))
logging.debug(f". . . . . Failed to sell {sell_qty} {symbol} @ {sell_price} - error: "+ str(e))
if(str(e).__contains__("Account has insufficient balance for requested action")):
logging.info(f"Wait {3} seconds balance update")
time.sleep(3)
qty_balance, usdt_balance = get_balance(client=client, symbol=symbol)
if(qty_balance >= sell_qty):
logging.info(f"{symbol[0:-4]} balance = {qty_balance} >= {sell_qty}")
logging.info(f"Balance seems to be updated. It should not happen in next round.")
else:
logging.info(f"{symbol[0:-4]} balance = {qty_balance} < {sell_qty}")
答: 暂无答案
上一个:未来者订购币安
下一个:CCXT币安订单费用详情
评论