【问题反馈】cn_future 1 分钟行情不投递 bar,handle_data 全程 0 次调用

由bq1ajxww创建,最终由bq1ajxww 被浏览 2 用户

一、环境与版本

平台: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。

二、现象

  1. 引擎启动正常:

    [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 秒

  2. 1 分钟回调一次都没进:

    initialize() 被调用 1 次(正常)

    before_trading_start() 正常逐日调用,覆盖全部交易日(正常)

    handle_data() 0 次

    没有任何 traceback、没有报错、没有警告

  3. 一个月 30 天的 1m 行情应有约 7,200 根 bar,实际 1 秒内跑完 ⇒ 没有任何分钟 bar 投递进来。

  4. 同样的现象覆盖多个互不相关的窗口(都不是"数据没下载"能解释的):

    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 前后未变。

四、已排除的原因(都做过对照)

  1. 不是策略代码问题:换成一个不含任何策略逻辑的最小复现脚本(只计数、不下单),

    同样 initialize=1、before_trading_start 正常、handle_data=0。

  2. 不是我们的改动:用此前在平台上正常跑过的老版本文件重跑同一窗口,今天同样 0 根。

  3. 不是合约代码写错:IM2401/IM2406/IM2409/IM2412 等均为交易所季月合约代码,

    同一批代码在 10-19、10-23 正常出数据。

  4. 不是日线/预填数据问题: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 次

(原始输出已贴在提交时附的日志里)

六、希望平台协助确认

  1. 2026-10-24 起,cn_future 的 1 分钟行情回测服务是否发生故障/维护/数据重灌?

    如果是,请给出影响范围与预计恢复时间。

  2. 是否存在与 1m 相关的接口变更(例如 frequency 常量、合约代码格式、数据权限、

    prepare data 流程变更)需要我们适配?如果有,请给迁移说明。

  3. 如果 1m 行情已临时下线,请提供替代方案(例如改用其他 frequency 或指定数据表)。

  4. 我们的回测强依赖 IM 季月合约 1m 数据(2023-01 至今),

    请确认恢复后 2024、2025 全年窗口是否可直接使用。

\

{link}