2017-08-30 3 views
2

so halte ich diese Nachricht recieveing ​​wenn sie an Ort Trades versucht ccxt mit: „Timestamp für diese Anforderung nicht gültig“Nonce Aufschalten in Python ccxt

Ich habe das ccxt Handbuch zu lesen, und es sagt die Nonce außer Kraft setzen sollte ich verwenden:

class MyBitfinex (ccxt.bitfinex): 
    def nonce (self): 
     return self.milliseconds() 

Aber ich verstehe einfach nicht, wie diese Arbeit zu machen. Ich bin nicht zu fortgeschritten von einem Python-Programmierer.

jede mögliche Hilfe auf jeden Fall

geschätzt

Hier ist der Code ich laufen zu bekommen versuche:

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 

Hier ist der Fehler Ich erhalte:

Traceback (jüngste Aufforderung zuletzt): Datei "C: \ Benutzer \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ Site-Pakete \ ccxt \ exchange.py", Zeile 209, in Fetch Antwort = opener.open (Anfrage, Timeout = int (self.timeout/1000)) Datei "C: \ Benutzer \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ urlib \ request.py", Zeile 471, in geöffnet Antwort = Meth (Req, Antwort) Datei "C: \ Users \" Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ urllib \ request.py ", Zeile 581, in http_response 'http', Anfrage, Antwort, Code, Nachricht, hdrs) Datei" C: \ Users \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ urllib \ request.py ", Zeile 509, im Fehler return self._call_chain (* args) Datei" C: \ Benutzer \ Scott \ AppData \ Local \ Programs \ Python \ Python35 \ lib \ urllib \ request.py ", Zeile 443, in _call_chain Ergebnis = func (* args) Datei" C: \ Benutzer \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ urllib \ request.py ", Zeile 589, in http_error_default auslösen HTTPError (req.full_url, code, ms g, hdrs, fp) urllib.error.HTTPError: HTTP-Fehler 400: Bad Request

Während der oben genannten Ausnahmebehandlung, eine weitere Ausnahme aufgetreten:

Traceback (jüngste Aufforderung zuletzt): Datei "" Linie 1 in MomentumTrader ('ETH', 'BTC') Datei "C: /Users/Scott/Desktop/MomentumTraderFifth.py", Linie 199, in MomentumTrader BuyAll (currencyPair) Datei „C:/Users /Scott/Desktop/MomentumTraderFifth.py ", Zeile 89, in BuyAll binance.createLimitBuyOrder (Symbol, Betrag, Orderbuch ['fragt'] [orderBookPosition] [0]) Datei" C: \ Users \ Scott \ A ppData \ Lokale \ Programme \ Python \ Python35 \ lib \ Site-Pakete \ ccxt \ exchange.py ", Zeile 646, in createLimitBuyOrder Rückgabe self.create_limit_buy_order (Markt, Menge, Preis, Parameter) Datei" C: \ Users \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ site-packages \ ccxt \ exchange.py ", Zeile 634, in create_limit_buy_order Rückgabe self.create_order (Markt, 'Limit', 'Buy', Menge, Preis, params) Datei "C: \ Benutzer \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ Site-Pakete \ ccxt \ exchauss.py", Zeile 986, in create_order Antwort = self.privatePostOrder (self.extend (order, params)) Datei "C: \ Benutzer \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ Site-Pakete \ ccxt \ exchauss.py", Zeile 1049, in Anfrage response = self.fetch (URL, Methode, Header, Körper) Datei " C: \ Benutzer \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ Site-Pakete \ ccxt \ Exchange.py ", Zeile 244, in fetch self.raise_error (Fehler, URL, Methode, e, Details) Datei" C: \ Benutzer \ Scott \ AppData \ Lokale \ Programme \ Python \ Python35 \ lib \ Site-Pakete \ ccxt \ exchange.py ", Zeile 181, in raise_error Details, ccxt.errors.ExchangeNotAvailable: binance POST https://www.binance.com/api/v1/order 400 Ungültige Anforderung (mögliche Gründe: ungültige API-Schlüssel, schlechte oder alte Nonce, Austausch ist offline oder offline, auf Wartung, DDoS schutz, ratenbegrenzend, {"code": - 1021, "msg": "Zeitstempel für diese Anfrage ist nicht gültig."})

Antwort

1

Bitte lesen Sie den Abschnitt Troubleshooting sehr sorgfältig aus der ccxt library Manual zu abgelaufenen Schlüsseln Haben Sie es mit einem anderen Schlüsselpaar versucht?

Auch für Bitfinex wird das Setzen der Nonce auf Millisekunden nicht benötigt, sie ist standardmäßig bereits in Millisekunden. Versuchen Sie, diese Probe und sehen, ob es für Sie arbeitet:

import ccxt 

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

print(bitfinex.fetch_balance()) 

Wenn es dann nicht funktioniert, sollen Sie ein frisches neues Schlüsselpaar erstellen und alles soll von dort auf normal sein. Keine Sorge, du verlierst kein Geld auf deinem Konto, wenn du ein neues Schlüsselpaar erstellst.

+0

Aber die Schlüssel sind brandneu. Wie oft muss ich einen neuen Schlüsselsatz erstellen? Ich kann auf meine Bilanzen zugreifen, aber wenn es darum geht, einen Trade zu platzieren, bekomme ich die Nachricht. – Scott

+0

Können Sie Ihren Code anzeigen? https://github.com/kroitor/ccxt/blob/master/CONTRIBUTING.md#how-to-submit-an-issue - Ihre Sprachversion, ccxt Bibliothek Version - welche Methode Sie versuchen, rufen Sie insbesondere - eine vollständige Code-Snippet Sie haben Schwierigkeiten mit (vermeiden Einzeiler) - fügen Sie die vollständige Stacktrace (Fehlerausgabe) dieses Snippets im ausführlichen Modus unverändert unverändert Wir brauchen das, wenn Sie uns wollen um schneller zu helfen. –

+0

Hallo Igor, also habe ich den Code, den ich verwendet habe, zusammen mit der Fehlermeldung hochgeladen, die es begleitet. Es ist so komisch wie es manchmal funktioniert und dann gibt es mir manchmal diesen Zeitstempel BS. – Scott