Ccxt: Binance: Der Zeitstempel für diese Anforderung befindet sich außerhalb des recvWindow

Erstellt am 22. Dez. 2017  ·  35Kommentare  ·  Quelle: ccxt/ccxt

Ich habe die zurückgegebenen Antworten in Exchange.php geändert, um weitere Informationen zu erhalten. Das bekomme ich:

Fehler beim Laden der Details: binance GET https://api.binance.com/api/v3/account?timestamp=1513948454747&signature=xxxxxxxxxxxx

400 von diesem Ort aus derzeit nicht zugänglich

{"code": - 1021, "msg": "Der Zeitstempel für diese Anforderung liegt außerhalb des recvWindow."}

duplicate question

Hilfreichster Kommentar

Von Binance:

Igor Kroitor, [23.12.17 21:24]
Hi, again! We're receiving reports of multiple timestamp-related errors from users who have time 
synch enabled, and who didn't have this problem with the same code previously. Most of the time 
"timestamp more than 1000ms ahead of server time" and "timestamp outside of recvWindow"... the 
2nd one can probably be tackled by choosing a greater recvWindow, however, the first one is 
making us subtract a thousand from an otherwise-synchronized time... Is there a better way to solve 
these issues?

Ninj0r, [24.12.17 11:59]
Timestamp related issues on are on the users end. Synch your clocks (and keep them in sync) and 
you'll not have issues. Synching your clock is not a one time thing; clocks drift for a host of reasons 
and need to be repeatedly synced. This is why the default on ntpd is to sync clocks at least every 
1024 s (17mins 4 seconds). If the user can't prove they synced their clock within that timeframe, I'm 
not going to investigate it.

Ninj0r, [24.12.17 12:01]
I'll look into this.

Igor Kroitor, [24.12.17 12:07]
they mostly set default time synch in windows 10

Igor Kroitor, [24.12.17 12:08]
(always on)

Ninj0r, [24.12.17 12:08]
Yeah, which typically does something like a time synch once a day if even that.

Leute, aus dem oben Gesagten folgt wohl, dass Sie die Häufigkeit Ihrer Zeitsynchronisierungsaktualisierungen ändern müssen (kleinere Intervalle für die Zeitabfrage festlegen). Sie können dies entweder durch Googeln oder mit Software von Drittanbietern tun. Mac / Linux / FreeBSD / * nix-Benutzer können ihre ntpd -Einstellungen ändern, um die Häufigkeit der Zeitsynchronisation zu ändern. Ich hoffe es hilft.

Alle 35 Kommentare

Hallo! Haben Sie die Internet-Zeitsynchronisation in Ihren Systemuhreinstellungen aktiviert?

Ich sehe diesen Fehler auch an meinem Ende. Ich arbeite auf einer Ubuntu-VM und ja, die Zeitsynchronisierung ist aktiviert.

MacOS hier und ich haben das gleiche Problem. Meine Zeit ist auch synchron

Ja, meine Zeit ist auch synchron.

Funktioniert das für euch, Leute:

// JavaScript
;(async () => {
    binance.verbose = true
    balance = await binance.fetchBalance ({'recvWindow': 10000000})
    console.log (balance)
}) ();
# Python
binance.verbose = True
balance = binance.fetch_balance({'recvWindow': 10000000})
print(balance)
// PHP
$binance->verbose = true;
$balance = $binance->fetch_balance ({'recvWindow': 10000000});
var_dump ($balance);

?

Ja das funktioniert. Es ist seltsam, dass Sie ein so großes Fenster für ihre API benötigen. Da ist etwas Seltsames los ...

@paroxysm anscheinend haben sie

Ich habe ihr Team benachrichtigt, sie reagieren normalerweise schnell. Ich denke, sie sind sich dessen bewusst und arbeiten bereits daran. Wenn es Ihnen nichts ausmacht, würde ich dieses Problem vorerst schließen, da der Grund jetzt größtenteils offensichtlich ist.

Ich werde Sie hier aktualisieren, wenn wir ein Follow-up von Binance haben. Derzeit können wir dieses Problem nicht umgehen, wenn die eigene Zeitsynchronisation instabil ist. Lassen Sie mich wissen, ob ich mit etwas anderem helfen kann.

Von Binance:

Igor Kroitor, [23.12.17 21:24]
Hi, again! We're receiving reports of multiple timestamp-related errors from users who have time 
synch enabled, and who didn't have this problem with the same code previously. Most of the time 
"timestamp more than 1000ms ahead of server time" and "timestamp outside of recvWindow"... the 
2nd one can probably be tackled by choosing a greater recvWindow, however, the first one is 
making us subtract a thousand from an otherwise-synchronized time... Is there a better way to solve 
these issues?

Ninj0r, [24.12.17 11:59]
Timestamp related issues on are on the users end. Synch your clocks (and keep them in sync) and 
you'll not have issues. Synching your clock is not a one time thing; clocks drift for a host of reasons 
and need to be repeatedly synced. This is why the default on ntpd is to sync clocks at least every 
1024 s (17mins 4 seconds). If the user can't prove they synced their clock within that timeframe, I'm 
not going to investigate it.

Ninj0r, [24.12.17 12:01]
I'll look into this.

Igor Kroitor, [24.12.17 12:07]
they mostly set default time synch in windows 10

Igor Kroitor, [24.12.17 12:08]
(always on)

Ninj0r, [24.12.17 12:08]
Yeah, which typically does something like a time synch once a day if even that.

Leute, aus dem oben Gesagten folgt wohl, dass Sie die Häufigkeit Ihrer Zeitsynchronisierungsaktualisierungen ändern müssen (kleinere Intervalle für die Zeitabfrage festlegen). Sie können dies entweder durch Googeln oder mit Software von Drittanbietern tun. Mac / Linux / FreeBSD / * nix-Benutzer können ihre ntpd -Einstellungen ändern, um die Häufigkeit der Zeitsynchronisation zu ändern. Ich hoffe es hilft.

in Ordnung

Das hat mir geholfen. Ich stelle die Synchronisierung auf alle 12 Minuten ein, es funktioniert jetzt

Ich habe meiner ntp.conf Folgendes hinzugefügt:
maxpoll 3
Minpoll 3

Aber ich bekomme immer noch den gleichen recvWindow-Fehler. Ist dies der richtige Weg, um die Synchronisierungsfrequenz unter OSX zu erhöhen?

Ich bekomme den gleichen Fehler.

Was kann ein korrekter Wert für den Zeitstempel sein? Ich kenne das Format, aber nicht wann ..

Beispiel:

['recvWindow' => 10000000, 'timestamp' => time () + 10000000]

Recht?

Was kann ein korrekter Wert für den Zeitstempel sein?

Sie müssen es überhaupt nicht von Hand einstellen. Sie müssen lediglich einen neuen Schlüssel erstellen und die richtige Zeitsynchronisierung auf Ihrem Computer einrichten, um die Zeit alle 10 Minuten zu synchronisieren.

['recvWindow' => 10000000, 'timestamp' => time () + 10000000]
Recht?

Nee. Die beste Lösung wäre, die Zeitsynchronisation einzurichten und ihre Standardeinstellungen überhaupt nicht zu überschreiben.

// JavaScript
;(async () => {
    binance.verbose = true
    balance = await binance.fetchBalance ({'recvWindow': 10000000}) // no override for timestamp
    console.log (balance)
}) ();

Eine alternative Möglichkeit wäre, Anpassungen für den Zeitunterschied zu ermöglichen:

// JavaScript
let binance = new ccxt.binance ({
    'options': {
        'adjustForTimeDifference': true,
        'verbose': true, // if needed, not mandatory
        'recvWindow': 10000000, // not really needed
    },
})
;(async () => {
    balance = await binance.fetchBalance ()
    console.log (balance)
}) ();

Ich hoffe es hilft.

Hallo,

Ich habe den gleichen Fehler. Kann mir bitte jemand erklären, wie ich meinen Computer mit dem Server synchronisiere?
Vielen Dank

@pepsouille Es wird empfohlen, die richtige Zeitsynchronisierung in Ihrem System einzurichten. https://github.com/ccxt/ccxt/issues/936#issuecomment -353774479 oder googeln Sie einfach für windows time synch frequency für Ihr System.

Alternativ können Sie, wie oben beschrieben , einfach die Option adjustForTimeDifference zusammen mit enableRateLimit hinzufügen, um das Problem für Sie zu beheben:

binance = ccxt.binance ({
    'options': {
        'adjustForTimeDifference': True,  # ←---- resolves the timestamp
    },
    'enableRateLimit': True,  # ←---------- required as described in the Manual
    'apiKey': 'YOUR_API_KEY',
    'apiKey': 'YOUR_SECRET',
})
pprint(binance.fetch_balance ())

Lassen Sie uns wissen, wenn das nicht hilft.

Ich laufe übrigens auf Ubuntu 16.04

Ich laufe übrigens auf Ubuntu 16.04

screen shot 2018-09-28 at 00 22 50

Ich laufe übrigens auf Ubuntu 16.04

Dann sollten Sie ntpd (Network Time Protocol Daemon) konfiguriert, gestartet und ausgeführt haben und so einstellen, dass Ihre Systemzeit alle 10-15 Minuten einmal synchronisiert wird.

https://www.linuxquestions.org/questions/linux-software-2/how-often-does-ntpd-sync-time-with-its-servers-829538/

@pepsouille Der nptd -Dämon ist häufig in einer Linux-Distribution enthalten. Ubuntu sollte ihn standardmäßig installiert haben. Sie möchten ihn nur konfigurieren und aktivieren:

https://help.ubuntu.com/lts/serverguide/NTP.html.de

Das Hinzufügen von adjustForTimeDifference kann jedoch einfacher sein.

Hallo, ich verwende Linux Mint (Ubuntu) und nach dem Ausführen von ntpstat im Terminal wird die Zeitgenauigkeit innerhalb von 87 ms angezeigt. Abfrageserver alle 1024 s. Sicher ist das genau genug? Mit Bezug auf "Fehler 1021. Zeitstempel aus Rücklauffenster"

Es zeigt die Zeitgenauigkeit innerhalb von 87 ms.

Innerhalb von 87ms von was? Ab Binance Zeit? ;)

Sicher ist das genau genug?

Genau genug für was? ) Sie könnten die genaueste Atomuhr der Erde haben, aber das bedeutet nicht unbedingt, dass sie mit Binance synchron ist. Sie haben einen eigenen Timer, der sich von Ihrem unterscheiden kann, und Sie müssen sich darauf einstellen. Die Anpassung erfolgt wie hier gezeigt: https://github.com/ccxt/ccxt/issues/936#issuecomment -425247573

Hatte das gleiche Problem, wenn es hier in Italien ausgeführt wird, funktioniert es nicht, wenn derselbe Code auf einem Server in Virginia ausgeführt wird, funktioniert es. Die Verwendung des Flags adjustForTimeDifference funktionierte überall.

Arbeitsentscheidung ist das Hinzufügen von Parametern
recvWindow = 60000 für die http-Anforderung
(Es ist einfach, Zeilen mit http-Anfrage im API-Code zu bearbeiten, zu finden und der Anfrage das Parameter recWindow hinzuzufügen.)
https://api.binance.com/api/v3/account?recvWindow=60000&timestamp=1513948454747&signature=xxxxxxxxxxxxx

Ich habe die zurückgegebenen Antworten in Exchange.php geändert, um weitere Informationen zu erhalten. Das bekomme ich:

Fehler beim Laden der Details: binance GET https://api.binance.com/api/v3/account?timestamp=1513948454747&signature=xxxxxxxxxxxx
400 von diesem Ort aus derzeit nicht zugänglich
{"code": - 1021, "msg": "Der Zeitstempel für diese Anforderung liegt außerhalb des recvWindow."}

Hallo, ich habe ein Website-Projekt von Codecanyon gekauft, aber der Eigentümer des Projekts hat mir nicht geantwortet. Ich habe nur 1 Problem mit Binance API. Als ich meinen Binance-Schlüssel und mein Binance-Geheimnis legte, bekam ich diesen Fehler.

binance {"code": - 1021, "msg": "Der Zeitstempel für diese Anforderung liegt außerhalb des recvWindow."}

Ich kann auf meiner Website kein Guthaben sehen und habe 2 Stunden später eine Besprechung über diese Website. Ich kann cpanel Informationen geben. Ich kann nicht finden, wo ich Ihre Codes setzen soll. Bitte jemand hilft mir das ist ein sehr wichtiges Treffen für mich. Vielen Dank

@seroberto hi! Leider können wir den Code, den wir nicht schreiben oder pflegen, nicht unterstützen, insbesondere ohne den Code selbst zu sehen. CCXT funktioniert in dieser Hinsicht und ist für die Benutzer kostenlos.

Können Sie mir also sagen, welcher Code das Problem beheben kann und wo ich diesen Code ablegen soll?

binance-server-time.js
php-binance-api.php
usw.

@seroberto Wir sind nicht die Autoren des von Ihnen erwähnten Codes, daher können wir physisch nicht erraten, wie er behoben werden kann. Es ist so ziemlich so, als würde man einen zufälligen Typen fragen, wie man einen zufälligen Code repariert.

const binance = new ccxt ['binance'] ()
const recvWindow = binance.security.recvWindow
const foreWindow = 1000


$ opt = [
"symbol" => $ symbol,
"Seite" => $ Seite,
"type" => $ type,
"Menge" => $ Menge,
"recvWindow" => 60000,
];


'recvWindow' => 5 * 1000, // 5 sec, binance default

'timestamp' => $ this-> nonce (),
'recvWindow' => $ this-> options ['recvWindow'],


Entschuldigung für meine Fragen, aber es ist wirklich wichtig für mich. Sollte ich irgendetwas an einem dieser Teile reparieren?

@seroberto Es ist schwer, Ihnen zu helfen, ohne den Code zu sehen, und wir sind nicht dafür verantwortlich, sorry.

Versuchen Sie, diese Zeile zu ändern:

const binance = new ccxt['binance'] ()

const binance = new ccxt['binance'] ({ enableRateLimit: true, options: { adjustForTimeDifference: true }})

Wenn das nicht hilft, können wir es leider nicht für Sie reparieren.

@seroberto es kann passieren, wenn Sie den gleichen Schlüssel für eine der beiden Zeitzonen verwendet haben. Ich habe ihn auch in den ccxt-Dokumenten gelesen. Zum Beispiel habe ich zwei API-Schlüssel in Binance, einer wird auf den Servern verwendet und einer wird lokal während der Entwicklung verwendet. Wenn Sie nur einen Schlüssel verwenden, könnte das Nonce seine Hauptanforderung verfehlen, nämlich eine zunehmende Sequenz zu sein. Dies ist insbesondere dann der Fall, wenn die Zeitzonen unterschiedlich sind.

Wahrscheinlich funktioniert Ihr Code, aber das Problem liegt in der API-Schlüssel-Nonce. Sie sollten wahrscheinlich einen Schlüssel für die Entwicklung und einen für die Produktion verwenden.

Viel Glück!

@ Kroitor

// PHP
$ binance-> verbose = true;
$ balance = $ binance-> fetch_balance ({'recvWindow': 10000000});
var_dump ($ balance);

Wenn ich diesen Code benutze, bekomme ich diesen Fehler für diese Zeile

$ balance = $ binance-> fetch_balance ({'recvWindow': 10000000});

Syntaxfehler, erwartet '{'

@seroberto es kann passieren, wenn Sie den gleichen Schlüssel für eine der beiden Zeitzonen verwendet haben. Ich habe ihn auch in den ccxt-Dokumenten gelesen. Zum Beispiel habe ich zwei API-Schlüssel in Binance, einer wird auf den Servern verwendet und einer wird lokal während der Entwicklung verwendet. Wenn Sie nur einen Schlüssel verwenden, könnte das Nonce seine Hauptanforderung verfehlen, nämlich eine zunehmende Sequenz zu sein. Dies ist insbesondere dann der Fall, wenn die Zeitzonen unterschiedlich sind.

Wahrscheinlich funktioniert Ihr Code, aber das Problem liegt in der API-Schlüssel-Nonce. Sie sollten wahrscheinlich einen Schlüssel für die Entwicklung und einen für die Produktion verwenden.

Viel Glück!

Hallo. Wie hast du 2 API von Binance bekommen? Wenn ich versuche zu erstellen, habe ich nur eine Auswahl für API auf Binance.

@seroberto Ändere es so:

$balance = $binance->fetch_balance();

Wenn Sie jedoch nicht mit den Programmiersprachen vertraut sind, können Sie sofort auf ein anderes Problem stoßen, da für die Verwendung dieser Bibliothek Programmierkenntnisse erforderlich sind.

@seroberto es kann passieren, wenn Sie den gleichen Schlüssel für eine der beiden Zeitzonen verwendet haben. Ich habe ihn auch in den ccxt-Dokumenten gelesen. Zum Beispiel habe ich zwei API-Schlüssel in Binance, einer wird auf den Servern verwendet und einer wird lokal während der Entwicklung verwendet. Wenn Sie nur einen Schlüssel verwenden, könnte das Nonce seine Hauptanforderung verfehlen, nämlich eine zunehmende Sequenz zu sein. Dies ist insbesondere dann der Fall, wenn die Zeitzonen unterschiedlich sind.
Wahrscheinlich funktioniert Ihr Code, aber das Problem liegt in der API-Schlüssel-Nonce. Sie sollten wahrscheinlich einen Schlüssel für die Entwicklung und einen für die Produktion verwenden.
Viel Glück!

Hallo. Wie hast du 2 API von Binance bekommen? Wenn ich versuche zu erstellen, habe ich nur eine Auswahl für API auf Binance.

Hallo,

Zum Beispiel habe ich jetzt zwei Schlüssel. Um einen weiteren hinzuzufügen, sehe ich so etwas. Ich muss nur eine Beschriftung hinzufügen und auf Erstellen klicken

Screenshot 2020-11-25 at 11 54 25

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen