“已停止:达到内存上限。请一次导入更少的合约。”

Senzoukria 的 Databento 导入器会把成交留在内存里,直到每一天都完整为止。当各个合约上累积起来的未完成日期太多时,它会以“已停止:达到内存上限”停下来。已经完整的时段会被保留;请一次导入更少的合约。

Senzoukria · 故障排除 · 更新于 2026 年 9 月


概要

回放里的消息
“已停止:达到内存上限。请一次导入更少的合约。”
回测里的消息
“OHLCV 分钟:已达内存上限,未从 ohlcv-1m 写入任何内容。请导入更短的时间段。”
上限
15 000 000 笔正在等自己那一天完成的成交(是单时段 5 000 000 笔上限的 3 倍)
会保留的内容
已经完整的时段

你会看到什么

导入以“已停止:达到内存上限。请一次导入更少的合约。”结束。结果里依然会列出在停下之前已经写出来的那些时段。在回测的导入器里,分钟 K 线对应的那一句是“OHLCV 分钟:已达内存上限,未从 ohlcv-1m 写入任何内容。请导入更短的时间段。”

为什么会这样

一个 CME 时段只有在它的两个每日文件都被读过之后才能写出来,所以导入器会把每个合约的成交留在内存里,直到它那一天收尾。同一时刻留在内存里的总量被限制在 15 000 000 笔成交。合约很多、某些天特别活跃,或者文件的顺序导致很多天同时处于未完成状态,都会撞到这个上限。停下来,比让内存无边界地长下去更安全。如果你选择的是取消,那么消息会是“已取消 — 已完整的交易时段予以保留,未写入任何不完整的内容。”

如何解决

  • 一次只导入一个合约根,例如先 MNQ,再 ES。
  • 把很长的时间段拆成几个文件夹。
  • 如果你不需要,就取消勾选“保留 mbp-1 文件的 L1(最优买价 / 卖价)”;L1 是通过落盘缓冲写出去的,但每一个带 L1 的时段在 MNQ 上大约要多占 125 MB。
  • 导入期间把其他吃资源的程序关掉。

它并不意味着什么

  • 不是导入被弄坏了:已经完成的时段是完整的。
  • 也不是你电脑的总内存:这是导入器里一个固定的上限。

何时联系技术支持

如果问题一直存在,请通过 菜单 → 问题反馈 或者在 Senzoukria 的 Discord 上联系技术支持。请附上这个文件夹里合约和日期的数量,以及“已写入 {n} 个交易时段”那一行。

同一栏目

其他语言版本

常见问题

在停下之前写出来的那些时段会丢吗?
不会。已经完整的时段会被保留;只有导入停下时仍然处于未完成状态的那些天不会被写出来。
L1 这个选项会占内存吗?
L1 是通过一个落盘缓冲写出去的,并不和成交一起留在内存里,但它在真实文件上实测每个 MNQ 时段会多占大约 125 MB 的磁盘。

继续阅读