幣安 API 錯誤 -1021Timestamp for this request:原因和修復方法
幣安 API 錯誤 -1021 INVALID_TIMESTAMP 表示你的簽名請求上的時間戳落在幣安接受的視窗之外。訊息通常是Timestamp for this request is outside of the recvWindow或was 1000ms ahead of the server's time。大多數情況下原因是你自己的時鐘,所以解決辦法是同步時鐘、測量和幣安伺服器時間的偏移,並妥善處理剩餘的網路延遲。調大 recvWindow 可以掩蓋問題,但不應該是第一步。
用時間服務同步機器時鐘,然後和幣安伺服器時間比較。幣安接受的條件是:時間戳比伺服器時間超前不到 1,000 ms,落後不超過 recvWindow。預設 recvWindow 是 5,000 ms。
這個錯誤是什麼意思
幣安要求籤名介面(也就是涉及你賬戶的請求,如下單或查詢餘額)帶上 timestamp 引數,它應該是請求建立時的毫秒時間。幣安用它拒絕過期或重放的請求,這樣被截獲的請求不能之後再發一次。
幣安的文件寫明瞭這項檢查:
if (timestamp < serverTime + 1000 && serverTime - timestamp <= recvWindow) { process } else { reject }
這是兩個獨立的限制,請注意每條訊息對應哪個。
- 超前太多:如果你的時間戳比幣安時鐘超前 1,000 ms 或以上,會收到
Timestamp for this request was 1000ms ahead of the server's time。你的時鐘快了。 - 落後太多:如果幣安處理時你的時間戳已比
recvWindow還舊,會收到Timestamp for this request is outside of the recvWindow。你的時鐘慢了,或者請求到達得太慢。
兩個限制並不對稱。慢的一側預設有 5,000 ms 容忍度,快的一側只有 1,000 ms,而調大 recvWindow 對快的一側沒有任何作用。

第一步:測量偏移
不要猜。獲取伺服器時間,和自己的時鐘比較。這個公開介面不需要金鑰。U 本位合約是 https://fapi.binance.com/fapi/v1/time,現貨是 https://api.binance.com/api/v3/time。
一個簡單的 Python 檢查如下:
import time, requests; t0 = time.time()*1000; s = requests.get("https://fapi.binance.com/fapi/v1/time").json()["serverTime"]; t1 = time.time()*1000; print("offset ms:", s - (t0 + t1) / 2, "round trip ms:", t1 - t0)
它用往返的中點作為伺服器讀取時鐘時刻的最佳估計。多執行幾次。偏移為正表示幣安時鐘比你的快,也就是你的時鐘慢了;偏移為負表示你的時鐘快了。如果往返時間很大或波動很大,你的網路也是問題的一部分。時鐘偏移指南講了這個方法及其侷限。
第二步:同步時鐘
如果偏移超過幾百毫秒,先修時鐘。這能解決大多數情況。
- Linux:用
timedatectl檢視。如果沒有服務在同步,安裝並啟用chrony,然後用chronyc makestep立即校正大偏移。 - Windows:開啟日期和時間設定,點選「立即同步」。Windows 預設同步頻率很低,機器在兩次同步之間可能漂移,可以考慮配置更頻繁的時間服務。
- macOS:在日期與時間設定中開啟「自動設定日期和時間」。
- Docker:容器使用宿主機的時鐘,所以要修宿主機。在 Docker Desktop 上,筆記本休眠後內部虛擬機器可能漂移,重啟它常常能解決這個錯誤。
- 虛擬機器和雲伺服器:暫停或遷移過的機器可能帶著舊時間回來。請在裡面執行時間服務。
如果系統沒有預設配置,NTP Pool 的文件說明了如何設定公共時間伺服器,不過大多數雲服務商都提供內部時間服務,通常是更好的選擇。
第三步:在正確的時刻生成時間戳
時鐘正確時,如果程式碼過早建立時間戳,仍可能出現這個錯誤。檢查這些原因:
- 時間戳早在傳送之前就建立了。應該在簽名和傳送之前才建立。如果請求要經過佇列或慢執行緒,時間戳會在等待中變舊。
- 重試迴圈複用了請求。重試的請求需要新的時間戳和新的簽名,否則幾次嘗試後就會因這個錯誤失敗。
- 單位錯誤。幣安要求毫秒。秒級時間戳只有十位而不是十三位,會遠遠超出視窗。
- 客戶端自己的限流。客戶端限流器把已簽名的請求扣留幾秒,會讓它超出視窗。
- 機器負載過高。CPU 飽和時,從生成時間戳到傳送的延遲可能長得驚人。
第四步:必要時在客戶端使用時間偏移
常見做法是啟動時獲取伺服器時間,算出和自己時鐘的差,然後加到每個時間戳上。很多客戶端庫提供這個選項,比如自動調整時間差。
當你無法控制系統時鐘時這很有用,但它有個弱點:隨著時鐘繼續漂移,偏移會過時。如果用這種辦法,請定期重新整理,並在遇到這個錯誤時先重新整理一次再重試。修好系統時鐘是更好的長期方案,因為所有軟體都能受益。
第五步:謹慎對待 recvWindow
recvWindow 是 timestamp 之後請求保持有效的毫秒數,預設 5,000。幣安文件把它描述為一種宣告:請求必須在一定時間內處理,否則被拒絕,這是安全功能,不是麻煩。調大可能讓錯誤消失,但要想想這意味著什麼。它等於告訴幣安,你願意讓幾秒前建立的訂單現在才執行。快速行情中,30 秒前決定的交易現在可能完全是另一筆交易。
大視窗還會掩蓋真正的問題,無論是時鐘漂移還是網路不穩定。如果你的時鐘快了,它也完全幫不上忙,因為 1,000 ms 的限制是獨立的。只能適度調大,只作為臨時措施,並且只在測量清楚之後。如果發現需要很大的視窗,真正的問題在別處。
問題在網路或幣安時
如果時鐘正確、時間戳也在正確時刻建立,就看路徑。高延遲、丟包或擁塞的代理都可能讓請求耗時過長而超出視窗。第一步的往返時間能顯示這一點。幣安的 API 也有自己的基礎設施,繁忙時可能出現短暫延遲。
偶發的孤立錯誤通常無害,重建請求再發即可。之前都正常的多臺機器突然同時大量報錯,說明問題在網路或交易所。可以對比我們對幣安的讀數,包括最近的時鐘偏移和響應時間,並檢視公告。不過我們的資料只是從我們的地點看幣安的公開 API。
在程式碼中處理
健壯的客戶端把 -1021 當作已知的、可恢復的情況,而不是一般失敗。
- 重建,不要重發。用新的時間戳和簽名構建新請求。
- 重試下單前先檢查。這個拒絕說明這次請求沒有被處理,但如果之前的嘗試有其他錯誤,先查詢訂單狀態,以免重複。使用唯一的客戶端訂單號,方便發現重複。
- 限制重試次數。緊密迴圈重試可能觸發頻率限制,頻率限制指南講了後果。
- 記錄偏移和往返時間。錯誤再次出現時,日誌能立刻告訴你是時鐘漂移了還是網路變差了。
- 設定告警。-1021 比例上升是機器時鐘出問題的早期訊號。
其他交易所也有同樣的錯誤嗎?
有。任何使用簽名請求的交易所都有類似檢查,只是錯誤碼和視窗不同。例如 Bybit 會根據自己的伺服器時間檢查時間戳,並有 recv_window 引數;OKX 要求在請求頭中帶時間戳。建議是一樣的,但具體限制請讀各交易所的文件。
關於 -1021 錯誤的常見問題
為什麼在筆記本上正常、在伺服器上失敗,或者反過來?
因為每臺機器有自己的時鐘和到幣安的路徑。在兩臺機器上都執行偏移檢查。雲伺服器的時間通常很好,而經常休眠的筆記本往往不行。
什麼都沒改,為什麼突然開始報錯?
時鐘漂移很慢,偏移可能增長几周才超過限制。系統更新也可能停用時間服務,換網路可能提高延遲。
把 recvWindow 設成最大安全嗎?
它能消除很多錯誤,但也意味著幣安可能執行一個比你預期舊得多的請求,而市場可能已經變了。我們最多把它當作臨時措施。
按這個順序修復
- 看清你收到的是兩條訊息中的哪一條。
- 測量和幣安伺服器時間的偏移。
- 同步系統時鐘,並確認它保持同步。
- 在簽名和傳送之前才建立時間戳。
- 確保重試時重建時間戳和簽名。
- 最後才考慮適度調整 recvWindow。
相關閱讀:時鐘偏移與過時報價 · 交易所 API 頻率限制和 429 錯誤 · 交易所 API 為什麼返回 403 或 451
來源
其他指南
加密貨幣永續合約的資金費率是什麼?一篇講清楚
資金費率是永續合約多空雙方之間定期結算的一筆費用。永續合約沒有到期日,需要別的機制把合約價格拉回標的資產附近,資金費率就是這個機制。費率為正時,多頭付給空頭;費率為負時,空頭付給多頭。公式由交易所制定,但在主要交易所,這筆錢是在交易者之間轉移的。
不同交易所資金費率怎麼比較:8 小時和 4 小時結算差多少
只看百分比無法比較兩個資金費率。一個費率只有在你知道它多久收一次、你是多頭還是空頭、兩個讀數是否對應同一個合約和同一時刻之後才有意義。同樣的 +0.01%,在 4 小時週期上每天的成本是 8 小時週期的兩倍;它讓多頭付出多少,空頭就收到多少。
負資金費率是什麼意思?誰付錢,它又不能說明什麼
負資金費率意味著下一次結算時,持有空頭的交易者要付錢給持有多頭的交易者。這通常發生在永續合約價格低於指數價格的時候,往往反映了大量做空或對沖。它並不表示價格馬上要跌或要漲,對多頭來說也不是白拿的收入,因為價格波動帶來的虧損可能遠遠超過這筆支付。
資金費率怎麼換算成年化,這個數字為什麼容易誤導人
把資金費率年化,只需用單次費率乘以每天的結算次數,再乘以 365。每 8 小時 0.01% 的費率變成 0.01% × 3 × 365 = 10.95%。這樣可以把不同週期的合約放到同一把尺子上比較。但它不能告訴你一年下來會賺多少或付多少,因為它假設今天的費率永遠不變。
資金費率套利詳解:怎麼操作,利潤又被什麼吃掉
資金費率套利是指在同一資產上持有兩個相互抵消的倉位,讓價格波動大致相互抵消,同時賺取其中一邊的資金費。經典做法是買入現貨、做空永續合約。另一種做法是在費率高的交易所做空永續,在費率低的交易所做多。它常被說成無風險,其實並不是。這筆交易的風險只是和普通方向性交易不同而已。
標記價格、最新價和指數價格:哪個價格會讓你爆倉?
永續合約顯示三個容易混淆的價格。最新價是最近一筆成交的價格。指數價格是多家交易所現貨價格的平均值。標記價格是交易所對合約公允價值的估算,在主要交易所,它決定你的未實現盈虧和是否被強平。弄清每個價格的作用,就能明白為什麼圖表從未碰到強平價,倉位卻被強平了。
一筆市價單到底要花多少錢:手續費、價差與滑點
交易所費率頁上的手續費只是市價單成本的一部分。其餘的來自你實際拿到的價格,取決於交易方向、訂單規模和當時的委託簿深度。要公平比較不同交易所,應該用同一個參考價衡量平均成交價,再加上手續費,並注意不要把價差算兩次。
如何在下單前根據委託簿深度估算滑點
滑點是你預期的價格和實際平均成交價之間的差。大部分滑點在下單前就能估算,因為委託簿顯示了每個價位有多少可成交。把你要吃的一側的檔位累加到足夠覆蓋你的規模,算出平均價,再和中間價比較。估算的好壞取決於快照本身,而且委託簿恰恰在你最需要的時候變薄。
掛單費和吃單費詳解:如何比較加密貨幣交易所的手續費
掛單方(maker)把訂單放進委託簿等待成交,吃單方(taker)則和已經在簿上的訂單成交。大多數交易所向吃單方收得更多,因為掛單方提供了別人交易所需的流動性。只看標題費率比較交易所會誤導人:你要知道自己通常是哪一方、你的交易量實際處於哪個等級,以及同一筆交易裡手續費和滑點、資金費相比有多大。
如何判斷加密貨幣交易所是不是當機了:分步指南
當交易所對你不能用時,第一個問題是它是對所有人都掛了,還是隻對你掛了。通常幾分鐘就能得到答案:看交易所自己的狀態頁,看獨立測量,換一個網路,再直接測試公開 API。每個來源看到的東西都不同,所以一個綠色頁面不能證明一切正常,一次失敗的請求也不能證明交易所當機。
交易所是不是真的當機了?API 可用率和故障記錄怎麼看
可用率描述的是特定服務在特定時段、經特定網路路徑的成功請求比例。它不能說明你能否下單、提幣,也不能說明可以放心把資產交給這家交易所。像 99.9% 這樣的數字,只有在你知道測了什麼、從哪裡測、測了多久的時候才有用。本文講解如何讀懂我們頁面和其他任何地方的這些細節。
持倉時加密貨幣交易所當機了該怎麼辦
如果持倉時交易所沒有響應,第一件事是弄清到底什麼壞了,第二件事是別讓情況更糟,第三件事是透過任何還能用的途徑降低風險。不要反覆提交同一筆訂單,因為之前的嘗試可能已經成交。試試手機 App 和 API 這些替代途徑,如果敞口很大就考慮在別處對沖,並把發生的事情記錄下來,以備之後申訴。
交易所 API 為什麼提示時間戳錯誤:時鐘偏移與過時報價詳解
響應很快,報價也可能是舊的。往返延遲、時鐘偏移和報價年齡描述的是一次請求的不同部分,混在一起可能把時鐘不一致看成行情延遲。本文用算例解釋這三者,說明我們如何估算它們,並講講交易所 API 因時間問題拒絕請求時該怎麼辦。
加密貨幣交易所 API 頻率限制:429 錯誤是什麼意思,如何不觸發
HTTP 429 表示你在一段時間內傳送了太多請求,伺服器要求你慢一點。它不是當機。每家交易所的計數方式不同:幣安為每個介面設定權重,並封禁 429 之後仍繼續請求的 IP;Bybit 在 IP 五秒內超過 600 次請求時封鎖;OKX 按介面設定限制並返回錯誤碼 50011。要不超限,就要讀響應頭、正確退避,並儘量使用 WebSocket。
交易所 API 為什麼返回 403 或 451:封鎖、地區限制以及如何分辨
403 表示伺服器理解了你的請求,但拒絕執行。451 表示因法律原因拒絕訪問。在加密貨幣交易所 API 上,403 可能是網頁防火牆、請求頻率限制、未授權的金鑰或地區封鎖,所以單憑狀態碼看不出是哪一種。響應正文、交易所文件和換一個網路的對比通常能回答。真正的限制有其原因,正確的做法是弄清這項服務在你所在地是否可用。
開設加密貨幣交易所帳戶之前:台灣、香港讀者的檢查清單
在交易所開戶之前,先確認四件事:這家交易所是否獲准服務你所在的地方,你所在地的主管機關名單上有沒有它,眼前這個網站是不是真的,以及這家交易所最近的運作狀況。填寫註冊表只要十分鐘,選錯了卻可能要花好幾個月才處理得完,有時根本無法挽回。本文逐項說明這些檢查,並以讀者最常問到的幣安(Binance)與 OKX 為例,特別說明台灣與香港的現況。