1

我有一个交易机器人,它在“ADAUSDT”中运行,具有动态的买卖数量,我的整个 USDT 平衡初始数量,并以相同的余额 + 利润或损失进行交易(它基本上以整个 USDT 余额进行交易并保持交易一遍又一遍地)。这是一些代码:

from binance.client import Client
import Keys #personal api keys

client = Client(Keys.b_keys, Keys.b_secret)

infoa = client.get_account()
bal= infoa['balances']
i_o = float(bal[11]["free"])
v_min = v_min #some value of ADA, for example: 1.2 

order = client.create_order(
        symbol = "ADAUSDT" , 
        side=SIDE_BUY ,
        type=ORDER_TYPE_LIMIT ,
        timeInForce = TIME_IN_FORCE_GTC ,
        quantity = float(round((i_o) , 8)) , 
        price = v_min ,
        )               

我知道 quoteAsset 和 baseAsset 所需的精度都是 8,因此在round()订单本身的数量值中使用该函数,但即使在那之后,API 仍然向我抛出错误“精度超过最大值为此资产定义”。请帮助我:c

编辑:i_o 是我的“USDT”余额,理论上应该随着每笔交易而改变,因此使用这个变量而不是每个订单数量的普通数字。

注意:我对 Python 很陌生,哈哈,我一周前刚学了一些基础知识,所以如果你能详细说明一下,那就太棒了:D

4

5 回答 5

3

根据您的代码和对交易加密货币的一点熟悉,我假设您正在计算的“余额”是您的 USDT 余额,而不是您的 ADA 余额,i_o = float(bal[11]["free"])这意味着您正在为 ADA 的金额下达购买订单你当前的 USDT 余额(四舍五入)——你确定这是你想做的吗?

为了更直接地回答您为什么会收到该错误的问题,我只能推断您必须使用包含除法的函数计算您想要购买的价格,并且您的结果最终v_min会像 1.32578935987532098325而不是1.2。

因此,为了方便起见,您还想对其进行舍入:

price = float(round(v_min,8)) ,

于 2021-06-30T19:22:43.323 回答
0

解决方案:

我将指定每个买卖订单的价格以及i_o(“USDT”余额)的变量四舍五入为 2。

于 2021-06-30T20:06:19.717 回答
0

使用 python Binance API 获取精确数据的代码:

from binance.client import Client
client = Client()
info = client.futures_exchange_info()

requestedFutures = ['BTCUSDT', 'ETHUSDT', 'BNBUSDT', 'SOLUSDT', 'DYDXUSDT']
print(
    {si['symbol']:si['quantityPrecision'] for si in info['symbols'] if si['symbol'] in requestedFutures}
)
于 2022-01-17T15:07:09.317 回答
0
tradingPairs = ['BTCUSDT','ETHUSDT','BNBUSDT']

#Loop though cryptos

for i in range(0,len(tradingPairs)):

info = client.futures_exchange_info()

if info['symbols'][0]['pair'] == tradingPairs[i]:

print("Price Pre ",info['symbols'][0]['pricePrecision'])

pricePrecision = info['symbols'][0]['pricePrecision']
quantityS = 5.2
quantityB = "{:0.0{}f}".format(quantityS, pricePrecision)
于 2021-07-19T12:37:35.243 回答
-1

最简单的方法是这样的:

1. sell_amount = int(0.99 * (float(coins_amount))) 2. quantity = sell_amount

通过上述方法,您将能够出售 99% 的基础资产。

于 2021-09-22T07:53:39.627 回答