我在尝试使用binanceapi和Python进行交易时遇到了一个问题。我想卖掉100%的乙醚,然后把它转换成另一个代币。这个请求有时很顺利,但75%的情况下没有,我得到一个错误代码,说我没有足够的余额。但是,我知道一个事实,我确实有足够的余额,因为我转到Binance并单击将我的以太100%转换为另一个资产,我得到的数字与我的脚本生成的完全相同。在
以下是我用于向Binance API发出请求的代码:
def marketBuy(symbol, side, quantity, test=False, **kwargs):
params = {
"symbol": symbol,
"side": side,
"type": MARKET,
"quantity": quantity,
}
params.update(kwargs)
path = "/api/v3/order/test" if test else "/api/v3/order"
data = signedRequest("POST", path, params)
return data
def signedRequest(method, path, params):
if "apiKey" not in options or "secret" not in options:
raise ValueError("Api key and secret must be set")
query = urlencode(sorted(params.items()))
query += "×tamp={}".format(int(time.time() * 1000))
secret = bytes(options["secret"].encode("utf-8"))
signature = hmac.new(secret, query.encode("utf-8"),
hashlib.sha256).hexdigest()
query += "&signature={}".format(signature)
resp = requests.request(method,
ENDPOINT + path + "?" + query,
headers={"X-MBX-APIKEY": options["apiKey"]})
data = resp.json()
if "msg" in data:
logging.error(data['msg'])
return data
我把这个函数叫做:
^{pr2}$getDigits函数返回Binance为特定资产支持的最小交易大小和步长,因此我确信我的问题不在于发送的数字的精度。在
我有0.11059760以太币。我去比兰斯,选择出售100%的乙醚对DNT,得到的金额是1574 DNT。 现在我进入我的控制台,检查我的脚本说了多少。上面还写着1574。现在,我试图通过我的控制台运行交易,但我得到一个错误,说我没有足够的资金。我回到浏览器,并能够成功地用我的以太交换1574 DNT。在
runfile('C:/Users/alexa/Desktop/cryptoalerts/binanceTransfer.py', wdir='C:/Users/alexa/Desktop/cryptoalerts')
math.floor((10**getDigits(token)*int(float(binanc.balances()["ETH"]['free'])*1/float(binanc.prices()[token+"ETH"]))))/(10**getDigits(token))
binanc.marketBuy(token+"ETH", binanc.BUY, math.floor((10**getDigits(token)*int(float(binanc.balances()["ETH"]['free'])*1/float(binanc.prices()[token+"ETH"]))))/(10**getDigits(token)), test=False)
{'code': -2010, 'msg': 'Account has insufficient balance for requested action.'}
ERROR:root:Account has insufficient balance for requested action.
由于我能够在网站上以完全相同的金额执行交易,我想知道这是否是二进制API的问题。在
目前没有回答
相关问题 更多 >
编程相关推荐