【问题反馈】cn_future 1 分钟行情不投递 bar,handle_data 全程 0 次调用
由bq1ajxww创建,最终由bq1ajxww 被浏览 1 用户
一、环境与版本
平台:BigQuant AIStudio(AIStudio 回测内核 bigtrader)
market = bigtrader.Market.CN_FUTURE
frequency = bigtrader.Frequency.MINUTE(1m)
标的:中证1000股指期货 IM(IM2401/IM2406/IM2409/IM2412/IM2503… 等季月合约)
benchmark = 000852.SH,capital_base = 2,000,000
说明:昨天(10-23)与更早(10-15 ~ 10-19)同一套代码、同一批窗口全部正常,今天(10-24)起全部不投 bar。
二、现象
-
引擎启动正常:
[info] bigtrader.run start: market=cn_future, frequency=1m, mode=backtest, account_type=FUTURE,
start_date=2026-09-01, end_date=2026-09-30[info] bigtrader<backtest> init ..
[info] prepare data ..
[info] bar1d_df: (63, 16) ← 日线数据有,63 行
[info] bigtrader run ..
[info] bigtrader.run done. ← 从 run 到 done 不足 1 秒
-
1 分钟回调一次都没进:
initialize() 被调用 1 次(正常)
before_trading_start() 正常逐日调用,覆盖全部交易日(正常)
handle_data() 0 次
没有任何 traceback、没有报错、没有警告
-
一个月 30 天的 1m 行情应有约 7,200 根 bar,实际 1 秒内跑完 ⇒ 没有任何分钟 bar 投递进来。
-
同样的现象覆盖多个互不相关的窗口(都不是"数据没下载"能解释的):
2024-01-02 ~ 2024-12-31 0 根
2025-01-02 ~ 2025-12-31 0 根
2025-06-01 ~ 2025-06-30 0 根
2026-09-01 ~ 2026-09-30 0 根
三、我们自己的前后对照(同一窗口,同一代码)
2024 全年窗口
10-23 运行:策略日志 247 条 \[CAPCHECK\](逐 bar 打印),交易正常
10-24 运行:0 条
2025 全年窗口
10-19 运行:275 条 \[CAPCHECK\]
10-24 运行:0 条
两次 2024 回跑的 165 项策略开关只差 2 项(与 bar 投递无关),策略文件 md5 前后未变。
四、已排除的原因(都做过对照)
-
不是策略代码问题:换成一个不含任何策略逻辑的最小复现脚本(只计数、不下单),
同样 initialize=1、before_trading_start 正常、handle_data=0。
-
不是我们的改动:用此前在平台上正常跑过的老版本文件重跑同一窗口,今天同样 0 根。
-
不是合约代码写错:IM2401/IM2406/IM2409/IM2412 等均为交易所季月合约代码,
同一批代码在 10-19、10-23 正常出数据。
-
不是日线/预填数据问题:bar1d_df 有 (63,16)/(48,16) 行,日线钩子逐日正常执行。
五、最小复现脚本(可直接粘贴运行,无任何策略逻辑)
运行后会在 /home/aiuser/work/repro_bq.txt 写入两个窗口的回调计数,并在控制台打印摘要。
import bigtrader
LOG = '/home/aiuser/work/repro_bq.txt'
def _w(s):
with open(LOG, 'a', encoding='utf-8') as f:
f.write(s + chr(10))
CNT = {'init': 0, 'bts': 0, 'hd': 0, 'bars': 0, 'tag': ''}
def initialize(context):
CNT\['init'\] += 1
_w('INIT tag=' + CNT\['tag'\] + ' n=' + str(CNT\['init'\]))
def before_trading_start(context, data):
CNT\['bts'\] += 1
return None
def handle_data(context, data):
CNT\['hd'\] += 1
CNT\['bars'\] += 1
return None
def _run(tag, inst, s, e):
CNT.update(init=0, bts=0, hd=0, bars=0, tag=tag)
try:
bigtrader.run(market=bigtrader.Market.CN_FUTURE,
frequency=bigtrader.Frequency.MINUTE,
benchmark='000852.SH',
instruments=\[inst\],
start_date=s, end_date=e,
capital_base=2000000,
initialize=initialize,
before_trading_start=before_trading_start,
handle_data=handle_data)
except Exception as ex:
_w('ERR tag=' + tag + ' ' + type(ex).__name__ + ': ' + str(ex))
_w('RESULT tag=' + tag + ' init=%d before_trading=%d handle_data=%d'
% (CNT\['init'\], CNT\['bts'\], CNT\['hd'\]))
_run('W2026-09', 'IM2409.CFE', '2026-09-01', '2026-09-30')
_run('W2024-01', 'IM2401.CFE', '2024-01-02', '2024-01-10')
print('=============== REPRO SUMMARY ===============')
print(open(LOG, encoding='utf-8').read())
我们这边的运行结果:
两个窗口:initialize 均被调用 1 次、before_trading_start 覆盖全部交易日、handle_data 均为 0 次
(原始输出已贴在提交时附的日志里)
六、希望平台协助确认
-
2026-10-24 起,cn_future 的 1 分钟行情回测服务是否发生故障/维护/数据重灌?
如果是,请给出影响范围与预计恢复时间。
-
是否存在与 1m 相关的接口变更(例如 frequency 常量、合约代码格式、数据权限、
prepare data 流程变更)需要我们适配?如果有,请给迁移说明。
-
如果 1m 行情已临时下线,请提供替代方案(例如改用其他 frequency 或指定数据表)。
-
我们的回测强依赖 IM 季月合约 1m 数据(2023-01 至今),
请确认恢复后 2024、2025 全年窗口是否可直接使用。
\