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."})
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
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. –
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