Lỗi Binance -1021 «Timestamp for this request»: nguyên nhân và cách sửa
Lỗi API Binance -1021 INVALID_TIMESTAMP nghĩa là dấu thời gian trên yêu cầu có chữ ký của bạn nằm ngoài cửa sổ Binance chấp nhận. Thông báo thường là Timestamp for this request is outside of the recvWindow hoặc was 1000ms ahead of the server's time. Đa số trường hợp nguyên nhân là đồng hồ của bạn, nên cách sửa là đồng bộ nó, đo độ lệch với giờ máy chủ Binance và xử lý đúng phần độ trễ mạng còn lại. recvWindow lớn hơn có thể che vấn đề, nhưng không nên là bước đầu tiên.
Đồng bộ đồng hồ máy bằng dịch vụ thời gian, rồi so với giờ máy chủ Binance. Binance chấp nhận yêu cầu khi dấu thời gian đi trước giờ máy chủ dưới 1.000 ms và đi sau không quá recvWindow. recvWindow mặc định là 5.000 ms.
Lỗi này có nghĩa gì
Binance yêu cầu tham số timestamp trên endpoint có chữ ký, tức các yêu cầu chạm vào tài khoản: đặt lệnh hoặc đọc số dư. Nó phải là thời gian tính bằng mili giây lúc tạo yêu cầu. Binance dùng nó để từ chối yêu cầu cũ hoặc phát lại, để yêu cầu bị bắt không thể gửi lại sau đó.
Phép kiểm tra được viết trong tài liệu Binance:
if (timestamp < serverTime + 1000 && serverTime - timestamp <= recvWindow) { process } else { reject }
Hãy đọc đó là hai giới hạn riêng, và chú ý thông báo nào đi với giới hạn nào.
- Đi trước quá xa: nếu dấu thời gian đi trước đồng hồ Binance từ 1.000 ms trở lên, bạn nhận
Timestamp for this request was 1000ms ahead of the server's time. Đồng hồ của bạn chạy nhanh. - Đi sau quá xa: nếu dấu thời gian cũ hơn
recvWindowkhi Binance xử lý, bạn nhậnTimestamp for this request is outside of the recvWindow. Đồng hồ của bạn chậm, hoặc yêu cầu đến quá lâu.
Hai giới hạn không bằng nhau. Bạn có dung sai 5.000 ms phía chậm theo mặc định, nhưng chỉ 1.000 ms phía nhanh, và tăng recvWindow không có tác dụng gì với phía nhanh.

Bước 1: đo độ lệch
Đừng đoán. Lấy giờ máy chủ và so với đồng hồ của bạn. Endpoint công khai này không cần khóa. Với hợp đồng tương lai ký quỹ USD là https://fapi.binance.com/fapi/v1/time, với giao ngay là https://api.binance.com/api/v3/time.
Một kiểm tra Python nhỏ như sau:
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)
Cách này dùng trung điểm khứ hồi làm ước tính tốt nhất cho lúc máy chủ đọc đồng hồ. Chạy vài lần. Độ lệch dương nghĩa là đồng hồ Binance đi trước, tức đồng hồ của bạn chậm. Độ lệch âm nghĩa là đồng hồ của bạn nhanh. Nếu khứ hồi lớn hoặc dao động nhiều, mạng của bạn là một phần vấn đề. Hướng dẫn lệch đồng hồ giải thích phương pháp và giới hạn của nó.
Bước 2: đồng bộ đồng hồ
Nếu độ lệch hơn vài trăm mili giây, hãy sửa đồng hồ trước. Việc này giải quyết đa số trường hợp.
- Linux: kiểm tra bằng
timedatectl. Cài và bậtchronynếu chưa có dịch vụ đồng bộ, rồi dùngchronyc makestepđể chỉnh độ lệch lớn ngay. - Windows: mở cài đặt Ngày và Giờ và dùng «Sync now». Đồng bộ mặc định của Windows thưa, nên máy có thể trôi giữa các lần. Hãy cân nhắc dịch vụ thời gian thường xuyên hơn.
- macOS: bật «Đặt ngày và giờ tự động» trong cài đặt Ngày và Giờ.
- Docker: container dùng đồng hồ của máy chủ, nên hãy sửa máy chủ. Trên Docker Desktop, máy ảo bên trong có thể trôi sau khi laptop ngủ, và khởi động lại thường hết lỗi.
- Máy ảo và máy chủ đám mây: máy bị tạm dừng hoặc di chuyển có thể quay lại với giờ cũ. Hãy chạy dịch vụ thời gian bên trong.
Tài liệu NTP Pool mô tả cách thiết lập máy chủ thời gian công cộng nếu hệ thống chưa cấu hình, dù hầu hết nhà cung cấp đám mây có dịch vụ thời gian nội bộ, thường là lựa chọn tốt hơn.
Bước 3: tạo dấu thời gian đúng lúc
Đồng hồ đúng vẫn có thể gây lỗi này nếu mã tạo dấu thời gian quá sớm. Hãy kiểm tra các nguyên nhân sau:
- Dấu thời gian tạo lâu trước khi gửi. Hãy tạo ngay trước khi ký và gửi. Nếu yêu cầu đi qua hàng đợi hoặc luồng chậm, dấu thời gian già đi khi đợi.
- Vòng thử lại dùng lại yêu cầu. Yêu cầu thử lại cần dấu thời gian và chữ ký mới, nếu không sẽ lỗi này sau vài lần.
- Sai đơn vị. Binance cần mili giây. Dấu thời gian tính bằng giây có mười chữ số thay vì mười ba và nằm xa ngoài cửa sổ.
- Giới hạn tần suất của chính ứng dụng. Bộ giới hạn phía client giữ yêu cầu đã ký vài giây sẽ làm nó già ra khỏi cửa sổ.
- Máy quá tải. Khi CPU bão hòa, độ trễ giữa dấu thời gian và gửi có thể dài bất ngờ.
Bước 4: dùng độ lệch trong client nếu cần
Cách phổ biến là lấy giờ máy chủ khi khởi động, tính chênh với đồng hồ của bạn và cộng vào mọi dấu thời gian. Nhiều thư viện client có tùy chọn này, như tùy chọn tự điều chỉnh chênh thời gian.
Cách này hữu ích khi bạn không kiểm soát được đồng hồ hệ thống, nhưng có điểm yếu: độ lệch lỗi thời khi đồng hồ tiếp tục trôi. Nếu dùng, hãy làm mới định kỳ và xử lý lỗi bằng cách làm mới một lần trước khi thử lại. Sửa đồng hồ hệ thống là giải pháp dài hạn tốt hơn, vì mọi phần mềm đều được lợi.
Bước 5: cân nhắc kỹ recvWindow
recvWindow là số mili giây sau timestamp mà yêu cầu còn hiệu lực. Mặc định là 5.000. Tài liệu Binance mô tả nó như cách nói yêu cầu phải được xử lý trong một thời gian nhất định hoặc bị từ chối, tức tính năng an toàn chứ không phải phiền toái. Tăng nó có thể hết lỗi, nhưng hãy nghĩ ý nghĩa. Bạn đang nói với Binance rằng bạn chấp nhận lệnh tạo vài giây trước được thực thi bây giờ. Trong thị trường nhanh, giao dịch bạn quyết định 30 giây trước có thể đã là giao dịch rất khác.
Cửa sổ lớn cũng che vấn đề thật, dù là đồng hồ trôi hay mạng không ổn định. Nó không giúp gì nếu đồng hồ nhanh, vì giới hạn 1.000 ms là riêng. Chỉ tăng vừa phải, chỉ như biện pháp tạm thời và chỉ sau khi đã đo. Nếu thấy cần cửa sổ lớn, vấn đề thật nằm ở chỗ khác.
Khi vấn đề là mạng hoặc Binance
Nếu đồng hồ đúng và dấu thời gian tạo đúng lúc, hãy xem đường đi. Độ trễ cao, mất gói hoặc proxy nghẽn có thể làm yêu cầu đủ lâu để rơi ngoài cửa sổ. Thời gian khứ hồi ở Bước 1 sẽ cho thấy điều này. API của Binance cũng nằm sau hạ tầng riêng, nên độ trễ ngắn có thể xảy ra lúc bận.
Lỗi đơn lẻ thỉnh thoảng thường vô hại nếu xử lý bằng cách dựng lại và gửi lại yêu cầu. Đợt bùng phát đột ngột trên nhiều máy vốn ổn cho thấy vấn đề ở mạng hoặc sàn. Hãy so với số đọc của chúng tôi về Binance, gồm độ lệch đồng hồ và thời gian phản hồi gần đây, và xem thông báo của sàn. Tuy vậy dữ liệu của chúng tôi chỉ cho thấy API công khai của Binance nhìn từ vị trí của chúng tôi.
Xử lý trong mã
Client tốt coi -1021 là tình huống đã biết và phục hồi được, không phải lỗi chung.
- Tạo lại, đừng gửi lại. Dựng yêu cầu mới với dấu thời gian và chữ ký mới.
- Kiểm tra trước khi thử lại lệnh. Từ chối nghĩa là yêu cầu này chưa được xử lý, nhưng nếu các lần trước có lỗi khác, hãy truy vấn trạng thái lệnh trước để tránh gấp đôi. Dùng mã lệnh client duy nhất để phát hiện trùng.
- Giới hạn số lần thử lại. Thử lại trong vòng lặp chặt có thể dẫn đến giới hạn tần suất, và hướng dẫn giới hạn tần suất giải thích hậu quả.
- Ghi độ lệch và khứ hồi. Khi lỗi này lặp lại, nhật ký cho biết ngay đồng hồ trôi hay mạng xấu đi.
- Đặt cảnh báo. Tỷ lệ -1021 tăng là cảnh báo sớm đồng hồ máy đang có vấn đề.
Các sàn khác có lỗi tương tự không?
Có. Sàn nào dùng yêu cầu có chữ ký đều có một phiên bản của kiểm tra này, với mã và cửa sổ khác. Ví dụ Bybit kiểm tra dấu thời gian theo giờ máy chủ và có tham số recv_window, còn OKX yêu cầu dấu thời gian trong header. Lời khuyên giống nhau, nhưng hãy đọc tài liệu từng sàn để biết giới hạn chính xác.
Câu hỏi thường gặp về lỗi -1021
Vì sao chạy được trên laptop mà lỗi trên máy chủ, hoặc ngược lại?
Vì mỗi máy có đồng hồ và đường đến Binance riêng. Hãy chạy kiểm tra độ lệch trên cả hai. Máy chủ đám mây thường có giờ tốt, còn laptop hay ngủ thường không.
Vì sao lỗi đột ngột xuất hiện khi không đổi gì?
Đồng hồ trôi chậm. Độ lệch có thể tăng nhiều tuần cho đến khi vượt giới hạn. Bản cập nhật hệ thống cũng có thể tắt dịch vụ thời gian, và đổi mạng có thể tăng độ trễ.
Đặt recvWindow tối đa có an toàn không?
Nó chặn nhiều lỗi, nhưng nghĩa là Binance có thể thực thi yêu cầu cũ hơn nhiều so với ý định, trong thị trường có thể đã thay đổi. Chúng tôi chỉ coi đó là biện pháp tạm thời.
Sửa theo thứ tự này
- Đọc xem bạn nhận thông báo nào trong hai thông báo.
- Đo độ lệch so với giờ máy chủ Binance.
- Đồng bộ đồng hồ hệ thống và xác nhận nó giữ đồng bộ.
- Tạo dấu thời gian ngay trước khi ký và gửi.
- Đảm bảo thử lại sẽ dựng lại dấu thời gian và chữ ký.
- Chỉ sau đó mới cân nhắc thay đổi vừa phải recvWindow.
Đọc thêm: Lệch đồng hồ và báo giá cũ · Giới hạn tần suất API sàn và lỗi 429 · Vì sao API sàn trả về 403 hoặc 451
Nguồn
Binance · Mã lỗi · Binance · Thông tin chung và an toàn thời gian · NTP Pool Project · Về Tickmark
Hướng dẫn khác
Funding rate trong hợp đồng vĩnh cửu là gì? Giải thích dễ hiểu
Funding rate là khoản thanh toán định kỳ giữa những người giữ hai phía đối nghịch của một hợp đồng vĩnh cửu. Nó tồn tại vì hợp đồng vĩnh cửu không bao giờ đáo hạn, nên cần một cơ chế khác để giữ giá sát với tài sản cơ sở. Khi mức dương, long trả cho short; khi âm, short trả cho long. Sàn đặt ra công thức, nhưng trên các sàn lớn, tiền chuyển giữa các nhà giao dịch với nhau.
So sánh funding rate giữa các sàn: chu kỳ 8 giờ và 4 giờ khác nhau thế nào
Bạn không thể so sánh hai funding rate chỉ bằng cách nhìn phần trăm. Một mức chỉ có ý nghĩa khi bạn biết nó được tính thường xuyên đến đâu, bạn đang long hay short, và hai lần đọc có mô tả cùng hợp đồng vào cùng thời điểm không. Cùng mức +0,01% tốn gấp đôi mỗi ngày trên lịch bốn giờ so với lịch tám giờ, và long trả bao nhiêu thì short nhận bấy nhiêu.
Funding rate âm có nghĩa gì? Ai trả tiền, và nó không nói lên điều gì
Funding rate âm nghĩa là người giữ short trả cho người giữ long ở lần thanh toán kế tiếp. Điều này thường xảy ra khi hợp đồng vĩnh cửu giao dịch dưới giá chỉ số, hay phản ánh bán khống mạnh hoặc phòng hộ. Nó không có nghĩa giá sắp giảm hay sắp tăng, và cũng không phải thu nhập miễn phí cho long, vì giá có thể đi ngược họ nhiều hơn khoản thanh toán rất nhiều.
Cách quy đổi funding rate sang APR, và vì sao con số có thể gây hiểu lầm
Để quy một funding rate về năm, nhân mức mỗi lần thanh toán với số lần thanh toán trong ngày, rồi nhân 365. Mức 0,01% mỗi tám giờ trở thành 0,01% × 3 × 365 = 10,95% một năm. Cách này đặt các hợp đồng có lịch khác nhau lên cùng một thang để so sánh được. Nó không cho biết bạn sẽ kiếm hay trả bao nhiêu trong một năm, vì giả định mức hôm nay không bao giờ đổi.
Arbitrage funding rate: cách hoạt động và điều gì ăn mất lợi nhuận
Arbitrage funding rate là giữ hai vị thế bù trừ nhau trên cùng một tài sản để biến động giá gần như triệt tiêu, rồi nhận khoản funding ở một phía. Cách kinh điển là mua giao ngay và short hợp đồng vĩnh cửu. Cách thứ hai là short hợp đồng vĩnh cửu trên sàn có mức cao hơn và long trên sàn có mức thấp hơn. Người ta hay gọi nó là không rủi ro. Không phải vậy. Rủi ro chỉ khác với một lệnh theo hướng thông thường.
Giá đánh dấu, giá cuối và giá chỉ số: giá nào thanh lý bạn?
Hợp đồng vĩnh cửu hiển thị ba mức giá dễ nhầm. Giá cuối là nơi giao dịch gần nhất diễn ra. Giá chỉ số là trung bình giá giao ngay trên nhiều sàn. Giá đánh dấu là ước tính của sàn về giá trị hợp lý của hợp đồng, và trên các sàn lớn chính nó quyết định lãi chưa thực hiện và việc bạn có bị thanh lý không. Biết giá nào làm gì sẽ giải thích vì sao vị thế có thể bị thanh lý dù biểu đồ chưa từng chạm mức thanh lý.
Một lệnh thị trường thực sự tốn bao nhiêu: phí, chênh lệch giá và trượt giá
Mức phí trên trang phí của sàn chỉ là một phần chi phí của lệnh thị trường. Phần còn lại đến từ giá bạn thực sự nhận, phụ thuộc vào chiều giao dịch, quy mô lệnh và độ sâu sổ lệnh lúc đó. Để so sánh công bằng giữa các sàn, hãy đo giá khớp trung bình so với một giá tham chiếu, rồi cộng phí giao dịch, và cẩn thận đừng tính chênh lệch giá hai lần.
Cách ước tính trượt giá từ độ sâu sổ lệnh trước khi giao dịch
Trượt giá là chênh lệch giữa giá bạn kỳ vọng và giá trung bình bạn thực sự nhận. Bạn có thể ước tính phần lớn trước khi đặt lệnh, vì sổ lệnh cho thấy mỗi mức giá có bao nhiêu. Cộng các mức ở phía bạn sẽ tiêu thụ đến khi đủ quy mô, tính giá trung bình và so với giá giữa. Ước tính chỉ tốt bằng ảnh chụp tạo ra nó, và sổ lệnh mỏng đi đúng lúc bạn dễ cần nhất.
Phí maker và taker: cách so sánh phí giao dịch của các sàn tiền mã hóa
Maker thêm vào sổ lệnh một lệnh chờ khớp. Taker khớp với lệnh đã có sẵn ở đó. Hầu hết sàn thu taker cao hơn, vì maker cung cấp thanh khoản để người khác giao dịch. So sánh sàn chỉ theo phí nổi bật sẽ gây hiểu lầm: bạn cần biết mình thường ở phía nào, khối lượng thực sự đưa bạn vào bậc nào, và phí so với trượt giá và funding trên cùng giao dịch ra sao.
Cách kiểm tra sàn tiền mã hóa có bị sập không: hướng dẫn từng bước
Khi sàn ngừng hoạt động với bạn, câu hỏi đầu tiên là nó sập với mọi người hay chỉ với bạn. Thường bạn trả lời được trong vài phút: xem trang trạng thái của sàn, xem đo lường độc lập, thử mạng khác và kiểm tra trực tiếp API công khai. Mỗi nguồn thấy một thứ khác nhau, nên một trang màu xanh không chứng minh mọi thứ ổn, và một yêu cầu thất bại không chứng minh sàn sập.
Sàn có thực sự sập không? Cách đọc tỷ lệ khả dụng API và lịch sử sự cố
Thời gian hoạt động mô tả phần yêu cầu thành công tới các dịch vụ cụ thể, trong một giai đoạn cụ thể, từ một đường mạng cụ thể. Nó không khẳng định bạn đặt được lệnh, rút được tiền hay có thể tin giao tài sản cho sàn. Con số như 99,9% chỉ hữu ích khi bạn biết đã kiểm tra gì, từ đâu và trong bao lâu, nên hướng dẫn này giải thích cách đọc các chi tiết đó trên trang của chúng tôi và ở bất kỳ đâu.
Phải làm gì khi sàn tiền mã hóa sập trong lúc bạn có vị thế mở
Nếu sàn ngừng phản hồi khi bạn đang giữ vị thế, việc đầu tiên là tìm ra thực sự cái gì hỏng, việc thứ hai là đừng làm tệ hơn, và việc thứ ba là giảm rủi ro bằng bất kỳ đường nào còn chạy. Đừng gửi lại cùng một lệnh mãi, vì các lần trước có thể đã thành công. Thử ứng dụng di động và API làm đường thay thế, cân nhắc phòng hộ nơi khác nếu rủi ro lớn, và ghi lại sự việc phòng khi cần nêu sau này.
Vì sao API sàn từ chối dấu thời gian: lệch đồng hồ và báo giá cũ
Phản hồi nhanh vẫn có thể chứa báo giá cũ. Độ trễ khứ hồi, lệch đồng hồ và tuổi báo giá mô tả các phần khác nhau của một yêu cầu, và trộn lẫn chúng có thể khiến sai khớp đồng hồ trông như luồng thị trường bị chậm. Hướng dẫn này giải thích từng thứ bằng ví dụ, cho thấy cách chúng tôi ước tính, và nói phải làm gì khi API sàn từ chối yêu cầu vì thời gian.
Giới hạn tần suất API sàn tiền mã hóa: lỗi 429 nghĩa là gì và cách không vượt
HTTP 429 nghĩa là bạn đã gửi quá nhiều yêu cầu trong một khoảng thời gian, và máy chủ yêu cầu bạn chậm lại. Đó không phải sự cố. Mỗi sàn đếm khác nhau: Binance dùng trọng số cho từng endpoint và chặn IP tiếp tục sau 429, Bybit chặn IP vượt 600 yêu cầu trong năm giây, và OKX đặt giới hạn theo endpoint và trả mã lỗi 50011. Muốn không vượt, hãy đọc header phản hồi, lùi đúng cách và dùng WebSocket khi có thể.
Vì sao API sàn trả về 403 hoặc 451: chặn, khu vực và cách phân biệt
403 nghĩa là máy chủ hiểu yêu cầu và từ chối thực hiện. 451 nghĩa là truy cập bị từ chối vì lý do pháp lý. Trên API sàn tiền mã hóa, 403 có thể là tường lửa web, giới hạn yêu cầu, khóa không có quyền hoặc chặn khu vực, nên riêng mã không nói được là cái nào. Nội dung phản hồi, tài liệu của sàn và so sánh từ mạng khác thường cho biết. Hạn chế thật áp dụng với bạn vì một lý do, nên phản ứng đúng là tìm hiểu dịch vụ có được cung cấp nơi bạn ở không.
Trước khi mở tài khoản sàn tiền mã hoá: danh sách kiểm tra cho người ở Việt Nam
Trước khi mở tài khoản trên một sàn tiền mã hoá, hãy kiểm tra bốn điều: sàn có được phép phục vụ người ở nơi bạn sống hay không, cơ quan quản lý ở nước bạn có cấp phép cho sàn hay không, trang web trước mặt bạn có phải trang thật hay không, và gần đây sàn hoạt động ra sao. Điền mẫu đăng ký chỉ mất mười phút. Khắc phục một lựa chọn sai có thể mất nhiều tháng, có khi không thể khắc phục được. Bài này đi qua từng bước kiểm tra, lấy Binance và OKX làm ví dụ vì đây là hai sàn độc giả hỏi chúng tôi nhiều nhất, và giải thích tình hình pháp lý tại Việt Nam vào tháng 11 năm 2026.