我用python-binance模块编写了一个交易机器人,机器人从消息中获取硬币名称,然后打开一个位置,如takes-message〉打开消息中硬币的多头位置〉设置该位置的限价卖出订单
机器人可以做前两个,但当它试图做最后一个,它给出了错误`“精度是超过最大定义的这个资产。”我已经在互联网上寻找解决方案,我试图设置sellPrice与此代码
float(str(price).split('.')[0] + "." + str(price).split('.')[1][0:5])+(price*0.3/100)
我从互联网上获取第一部分代码,即float(str(price).split('.')[0] + "." + str(price).split('.')[1][0:5])
并从我购买的价格添加了设置上面的sellPrice %0.3的部分
这是我的密码
coinName = "ONEUSDT"
print(coinName)
symbol = coinName
amount = "1"
leverage = "20"
self.client.futures_change_leverage(symbol=symbol, leverage=leverage)
price=float(self.client.get_symbol_ticker(symbol=symbol)["price"])
print(price)
amount = float(amount)
leverage = float(leverage)
quantity =(amount*leverage)/price
quantity = int(quantity)
self.client.futures_create_order(symbol=symbol,side="BUY",type="MARKET",quantity=quantity)
time.sleep(3)
self.client.futures_create_order(symbol=symbol,side="SELL",type="LIMIT",price =float(str(price).split('.')[0] + "." + str(price).split('.')[1][0:5])+(price*0.3/100),quantity=quantity,timeInForce="GTC")
你能帮帮我吗?
3条答案
按热度按时间zpjtge221#
看起来你正在寻找tick_size,它将显示价格四舍五入到多少个小数位。有一个帮助模块,您可以导入四舍五入,我们可以运行我们的tick size和我们的价格。这些文档可以在这里看到:
Binance Order Filters
我们需要确保从app.py顶部的helper模块导入helper函数。然后在脚本主体中插入以下函数。假设您的互联网消息正确地给了我们一个价格,那么
cost
将是我们可以插入到最终订单中作为舍入价格的变量。我刚刚在我的解释器中运行了这个,它可以使用替代值:干杯,祝你的编码和交易好运!
ekqde3dh2#
您需要添加小数位以避免此错误,例如:var1 = 0.5 #这会导致错误
FIX var1 = 0.5000 #修复错误
bvn4nwqk3#
为了解决Python中的精度问题,有必要确保资产没有小数。一种方法是使用math.floor()函数。这将把数字四舍五入到最接近的整数,有效地删除任何小数位。