Tickmark 交易所可靠性,实测
指南 发布 2026-11-07 约 7 分钟

币安 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 对快的一侧没有任何作用。

币安 API 文档错误码页面,显示 -1021 INVALID_TIMESTAMP 及两条关于 recvWindow 和超前服务器时间 1000ms 的消息
币安错误码文档中的 -1021 条目及其两条消息。你收到的消息会告诉你时钟偏向哪个方向。 developers.binance.com · 2026-11-07

第一步:测量偏移

不要猜。获取服务器时间,和自己的时钟比较。这个公开接口不需要密钥。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 设成最大安全吗?

它能消除很多错误,但也意味着币安可能执行一个比你预期旧得多的请求,而市场可能已经变了。我们最多把它当作临时措施。

按这个顺序修复

  1. 看清你收到的是两条消息中的哪一条。
  2. 测量和币安服务器时间的偏移。
  3. 同步系统时钟,并确认它保持同步。
  4. 在签名和发送之前才创建时间戳。
  5. 确保重试时重建时间戳和签名。
  6. 最后才考虑适度调整 recvWindow。

相关阅读:时钟偏移与过时报价 · 交易所 API 频率限制和 429 错误 · 交易所 API 为什么返回 403 或 451

来源

币安 · 错误码 · 币安 · 基本信息和时间安全 · NTP Pool Project · 关于 Tickmark

其他指南

加密货币永续合约的资金费率是什么?一篇讲清楚

资金费率是永续合约多空双方之间定期结算的一笔费用。永续合约没有到期日,需要别的机制把合约价格拉回标的资产附近,资金费率就是这个机制。费率为正时,多头付给空头;费率为负时,空头付给多头。公式由交易所制定,但在主要交易所,这笔钱是在交易者之间转移的。

不同交易所资金费率怎么比较: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 可能是网页防火墙、请求频率限制、未授权的密钥或地区封锁,所以单凭状态码看不出是哪一种。响应正文、交易所文档和换一个网络的对比通常能回答。真正的限制有其原因,正确的做法是弄清这项服务在你所在地是否可用。

开设加密货币交易所账户之前:按地区逐项检查

在加密货币交易所开户之前,先确认四件事:这家交易所是否获准服务你居住的地方,你所在地的监管机构名单上有没有它,眼前这个网站是不是真的,以及这家交易所最近的运营状况。填写注册表只要十分钟,选错了却可能要花好几个月才处理得完,有时根本无法挽回。本文逐项说明这些检查,并以读者最常问到的币安与 OKX 为例,按地区说明 2026 年 11 月的情况。

币安开户与身份验证:分步指南

在币安(Binance)开户分四步:用电子邮箱、手机号码或 Google、Apple、Telegram 账户注册;完成身份验证;做好账户安全设置;然后首次入金。注册只需几分钟,币安表示身份验证通常在 48 小时内审核完毕。本指南依照币安帮助页面在 2026 年 11 月 8 日的说明逐步讲解,附上这些页面的截图,并指出日后最容易出问题的细节。

OKX 开户与身份验证:分步指南

在 OKX 开户一共四步:用居住国家或地区、电子邮箱和手机号注册;完成身份验证;做好账户安全设置;然后首次入金。OKX 表示,身份验证申请会在 24 小时内完成审核。你最终由哪一家 OKX 公司提供服务取决于你住在哪里,而这又决定了你登录的网址、要付的手续费以及能看到的产品。本指南依据 OKX 官方帮助中心在 2026 年 11 月 8 日的页面内容撰写,配有截图,并特别标出那些事后难以更改的选项。OKX 的部分帮助页面会因地区而显示不同内容;我们阅读的是 okx.com/en-us 下提供的版本,具体规则以你登录后自己账户里显示的为准。