2017-08-30 114 views
2

所以我一直recieveing此消息试图交易场所使用时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 

这里是我得到的错误:

回溯(最近通话最后): 文件 “C:\用户\斯科特\应用程序数据\本地\程序\的Python \ Python35 \ lib中\站点包\ ccxt \ exchange.py”,线209,在获取响应 = opener.open(请求,超时= int(self.timeout/1000)) 文件 “C:\用户\斯科特\应用程序数据\本地\程序\的Python \ Python35 \ lib中\的urllib \ request.py”,线路471,在开放 响应=甲基(REQ,响应) 文件“C:\用户\斯科特\应用程序数据\本地\程序\的Python \ Python35 \ lib中\的urllib \ request.py “线路581,在HTTP_RESPONSE 'HTTP',请求,响应代码,味精,HDRS) 文件” C:\用户\斯科特\应用程序数据\本地\程序\ Python的\ Python35 \ LIB \的urllib \ request.py “线路509错误 回报self._call_chain(*参数) 文件” C:\用户\斯科特\应用程序数据\本地\程序\蟒\ Python35 \ lib中\的urllib \ request.py “线路443,在_call_chain 结果= FUNC(*参数) 文件” C:\用户\斯科特\应用程序数据\本地\程序\蟒\ Python35 \ lib中\的urllib \ request.py“,第589行,在http_error_default中 raise HTTPError(req.full_url,code,ms克,HDRS,FP) urllib.error.HTTPError:HTTP错误400:错误的请求

在处理上述异常,另一个异常:

回溯(最近通话最后一个): 文件 “” ,第1行 MomentumTrader('ETH','BTC') 文件“C:/Users/Scott/Desktop/MomentumTraderFifth.py”,行199,在MomentumTrader BuyAll(currencypair) 文件“C:/ Users /Scott/Desktop/MomentumTraderFifth.py“,第89行,BuyAll binance.createLimitBuyOrder(symbol,amount,orderbook ['ask'] [orderBookPosition] [0]) 文件”C:\ Users \ Scott \ A ppData \本地\程序\ Python的\ Python35 \ LIB \站点包\ ccxt \ exchange.py “线路646,在createLimitBuyOrder 回报self.create_limit_buy_order(行情,量,价,则params) 文件” C:\用户\斯科特\应用程序数据\本地\程序\ Python的\ Python35 \ LIB \站点包\ ccxt \ exchange.py”,线路634,在create_limit_buy_order 回报self.create_order(行情, '限价', '买入',数量,价格, PARAMS) 文件 “C:\用户\斯科特\应用程序数据\本地\程序\的Python \ Python35 \ lib中\站点包\ ccxt \ exchanges.py”,线路986,在create_order 响应= self.privatePostOrder(self.extend (顺序,则params)) 文件 “C:\用户\斯科特\应用程序数据\本地\程序\的Python \ Python35 \ lib中\站点包\ ccxt \ exchanges.py”,线1049,在请求响应 = self.fetch (网址,方法,标题,正文) File“ C:\ Users \用户斯科特\应用程序数据\本地\程序\ Python的\ Python35 \ LIB \站点包\ ccxt \交流。py“,244行,提取 self.raise_error(error,url,method,e,details) 文件”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保护,限速,{“代码”: - 1021,“味精”:“时间戳这一请求是无效”})

回答

1

请阅读Troubleshooting部分从ccxt库手册非常小心这是由于过期的钥匙您是否尝试过使用另一个钥匙对?

另外,对于Bitfinex,不需要将nonce设置为毫秒,默认情况下它已经以毫秒为单位。试试这个样本,看看它是否适合你:

import ccxt 

bitfinex = ccxt.bitfinex ({ 
    'apiKey': '4FlEDtxDl35gdEiobnfZ72vJeZteE4Bb7JdvqzjIjHq', 
    'secret': 'D4DXM8DZdHuAq9YptUsb42aWT1XBnGlIJgLi8a7tzFH', 
}) 

print(bitfinex.fetch_balance()) 

如果它不工作,那么你应该创建一个全新的密钥对,一切都应该是正常的,从那里。别担心,如果您创建了新的密钥对,您的帐户上不会出现资金不足的情况。

+0

但钥匙是全新的。我多久需要制作一套新的钥匙?我能够访问我的余额,但是当我收到消息时进行交易。 – Scott

+0

你能显示你的代码吗? https://github.com/kroitor/ccxt/blob/master/CONTRIBUTING.md#how-to-submit-an-issue - 你的语言版本,ccxt库版本 - 你要哪一种方法特别呼叫 - 您遇到困难的完整代码片段(避免单行) - 将该片段的完整堆栈跟踪(错误输出)以详细方式粘贴,原样不变 我们需要如果您希望我们帮助更快。 –

+0

嗨伊戈尔,所以我已经上传了我使用的代码以及伴随它的错误信息。它的工作有些怪异,有时会给我那个时间戳BS。 – Scott