2017-08-30 6 views
2

donc je garde recieveing ​​ce message lorsque vous essayez de métiers lieu à l'aide ccxt:Override en python Nonce ccxt

« Timestamp pour cette demande n'est pas valide. »

J'ai lu le manuel de ccxt et il dit de passer outre le nonce que je devrais utiliser:

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

Mais je ne comprends pas comment faire ce travail. Je ne suis pas trop avancé d'un programmeur python.

toute aide est sans aucun doute apprécié

Voici le code que je suis en train de se rendre à courir:

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 

Voici l'erreur que je reçois:

retraçage (appel le plus récent en dernier): Fichier "C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ paquets-de-site \ ccxt \ exchange.py", ligne 209, dans la recherche response = opener.open (requête, timeout = int (self.timeout/1000)) Fichier "C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ urllib \ request.py", ligne 471, en ouvert response = meth (req, réponse) Fichier "C: \ Users \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ urllib \ request.py ", ligne 581, dans http_response 'http', requête, réponse, code, msg, hdrs) Fichier" C: \ Users \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ urllib \ request.py ", ligne 509, en erreur return self._call_chain (* args) Fichier" C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ urllib \ request.py ", ligne 443, dans _call_chain result = func (* args) Fichier" C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ urllib \ request.py ", ligne 589, dans http_error_default raise HTTPError (req.full_url, code, ms g, RDH, fp) urllib.error.HTTPError: Erreur HTTP 400: Bad Request

Au cours de la manipulation de l'exception ci-dessus, une autre exception est survenue:

retraçage (le plus récent appel dernier): Fichier "" , ligne 1, dans MomentumTrader ('ETH', 'BTC') Fichier "C: /Users/Scott/Desktop/MomentumTraderFifth.py", ligne 199, dans MomentumTrader BuyAll (currencyPair) Fichier "C:/Users /Scott/Desktop/MomentumTraderFifth.py ", ligne 89, dans BuyAll binance.createLimitBuyOrder (symbol, amount, bookbook ['demande'] [orderBookPosition] [0]) Fichier" C: \ Users \ Scott \ A ppData \ Local \ Programmes \ Python \ Python35 \ lib \ paquets-de-site \ ccxt \ exchange.py ", ligne 646, dans createLimitBuyOrder renvoient self.create_limit_buy_order (market, amount, price, params) Fichier" C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ paquets-de-site \ ccxt \ exchange.py ", ligne 634, dans create_limit_buy_order return self.create_order (marché, 'limite', 'acheter', montant, prix, params) Fichier "C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ paquets-de-site \ ccxt \ exchanges.py", ligne 986, dans create_order response = self.privatePostOrder (self.extend (order, params)) Fichier "C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ paquets-de-site \ ccxt \ exchanges.py", ligne 1049, dans la requête response = self.fetch (url, méthode, en-têtes, corps) Fichier " C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ sites-packages \ ccxt \ exchange.py ", ligne 244, récupère self.raise_error (erreur, url, méthode, e, détails) Fichier" C: \ Utilisateurs \ Scott \ AppData \ Local \ Programmes \ Python \ Python35 \ lib \ site-packages \ ccxt \ exchange.py ", ligne 181, dans raise_error détails, ccxt.errors.ExchangeNotAvailable: binance POST https://www.binance.com/api/v1/order 400 Demande incorrecte (raisons possibles: clés API non valides, mauvais ou ancien nonce, échange en panne ou hors ligne, en maintenance, DDoS protection, rate-limit, {"code": - 1021, "msg": "L'horodatage de cette requête n'est pas valide."})

Répondre

1

Veuillez lire attentivement la section Troubleshooting du manuel de la bibliothèque ccxt. touches expirées Avez-vous essayé avec une autre paire de clés?

De même, pour Bitfinex, la définition du nonce en millisecondes n'est pas nécessaire, elle est déjà en millisecondes par défaut. Essayez cet exemple et voir si cela fonctionne pour vous:

import ccxt 

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

print(bitfinex.fetch_balance()) 

Si cela ne fonctionne vous devez créer une nouvelle paire de clés et tout devrait être normal à partir de là. Ne vous inquiétez pas, vous ne perdrez pas de fonds sur votre compte si vous créez une nouvelle paire de clés.

+0

Mais les clés sont flambant neuves. À quelle fréquence dois-je créer un nouvel ensemble de clés? Je suis en mesure d'accéder à mes soldes, mais quand il s'agit de placer un métier, c'est quand je reçois le message. – Scott

+0

Pouvez-vous montrer votre code? https://github.com/kroitor/ccxt/blob/master/CONTRIBUTING.md#how-to-submit-an-issue - votre version, la version de la bibliothèque ccxt - la méthode que vous essayez de appel en particulier - un extrait de code complet avec lequel vous rencontrez des difficultés (évitez les doublures) - collez la pile complète (sortie d'erreur) de cet extrait en mode verbeux tel quel, inchangé Nous en avons besoin si vous nous voulez pour aider plus vite. –

+0

Salut Igor, donc j'ai téléchargé le code que j'utilisais avec le message d'erreur qui l'accompagne. C'est tellement bizarre comment ça marche parfois et parfois ça me donne cet horodatage BS. – Scott