【发布时间】:2018-02-08 09:22:42
【问题描述】:
所以我在尝试使用 ccxt 进行交易时不断收到此消息:
“此请求的时间戳无效。”
我已阅读 ccxt 手册,上面说要覆盖我应该使用的随机数:
class MyBitfinex (ccxt.bitfinex):
def nonce (self):
return self.milliseconds ()
但我就是不明白如何进行这项工作。我不是一个 python 程序员太先进。
任何帮助都非常感谢
这是我要运行的代码:
def BuyAll (symbol):
base = markets[symbol]['base']
quote = markets[symbol]['quote']
Balances = binance.fetchBalance()
quoteBalance = Balances[quote]['free']
stopOut = 0
orderBookPosition = 0
while quoteBalance > stopOut:
print('quote balance',quoteBalance)
runningBalance = quoteBalance - stopOut
orderbook = binance.fetchOrderBook(symbol)
if (orderbook['asks'][orderBookPosition][1])*(orderbook['asks'][orderBookPosition][0])< runningBalance:
if base == 'BNB':
quantity = truncate(orderbook['asks'][orderBookPosition][1],0)
else:
quantity = truncate(orderbook['asks'][orderBookPosition][1],3)
print('quantity',quantity)
binance.createLimitBuyOrder(symbol,quantity,orderbook['asks'][orderBookPosition][0])
print('Bought' + ' ' + symbol)
stopOut += (orderbook['asks'][orderBookPosition][1])*(orderbook['asks'][orderBookPosition][0])
elif (runningBalance)/(orderbook['asks'][orderBookPosition][0]) > 0:
if base == 'BNB':
amount = int((runningBalance)/(orderbook['asks'][orderBookPosition][0]))
else:
amount = truncate((runningBalance)/(orderbook['asks'][orderBookPosition][0]),3)
print('amount',amount)
binance.createLimitBuyOrder(symbol,amount,orderbook['asks'][orderBookPosition][0])
print('Bought' + ' ' + symbol)
stopOut += (orderbook['asks'][orderBookPosition][1])*(orderbook['asks'][orderBookPosition][0])
orderBookPosition += 1
这是我得到的错误:
Traceback(最近一次调用最后一次):文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\site-packages\ccxt\exchange.py", 第 209 行,获取中 response = opener.open(request, timeout=int(self.timeout / 1000)) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", 第 471 行,开放 response = meth(req, response) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", 第 581 行,在 http_response 'http', 请求, 响应, 代码, msg, hdrs) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", 第 509 行,错误 return self._call_chain(*args) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", 第 443 行,在 _call_chain 结果 = func(*args) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\urllib\request.py", 第 589 行,在 http_error_default raise HTTPError(req.full_url, code, msg, hdrs, fp) urllib.error.HTTPError: HTTP Error 400: Bad Request
在处理上述异常的过程中,又发生了一个异常:
Traceback(最近一次调用最后一次):文件“”,第 1 行,in MomentumTrader('ETH','BTC') 文件“C:/Users/Scott/Desktop/MomentumTraderFifth.py”,第 199 行,在 动量交易者 BuyAll(currencyPair) 文件“C:/Users/Scott/Desktop/MomentumTraderFifth.py”,第 89 行,在 BuyAll 中 binance.createLimitBuyOrder(symbol,amount,orderbook['asks'][orderBookPosition][0]) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\site-packages\ccxt\exchange.py", 第 646 行,在 createLimitBuyOrder 中 return self.create_limit_buy_order(market, amount, price, params) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\site-packages\ccxt\exchange.py", 第 634 行,在 create_limit_buy_order return self.create_order(market, 'limit', 'buy', amount, price, params) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\site-packages\ccxt\exchanges.py", 第 986 行,在 create_order response = self.privatePostOrder(self.extend(order, params)) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\site-packages\ccxt\exchanges.py", 第 1049 行,应要求提供 response = self.fetch(url, method, headers, body) 文件 "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\site-packages\ccxt\exchange.py", 第 244 行,获取中 self.raise_error(error, url, method, e, details) File "C:\Users\Scott\AppData\Local\Programs\Python\Python35\lib\site-packages\ccxt\exchange.py", 第 181 行,在 raise_error 详细信息,ccxt.errors.ExchangeNotAvailable:binance POST https://www.binance.com/api/v1/order 400 错误请求(可能 原因:无效的 API 密钥、坏的或旧的随机数、交换关闭或 离线,维护中,DDoS保护,限速, {"code":-1021,"msg":"此请求的时间戳无效。"})
【问题讨论】:
标签: python bitcoin trading nonce ccxt