🚀 AI 一键生成 ptrade 策略代码
立即体验
👉 AI 生成代码 👈

为什么在 ptrade 回测模块中使用 get_individual_transaction 会报错?

ptrade | 发布时间: 2026/6/4
以下内容由 EasyQuant 生成。

问题描述

get_individual_transaction在回测模块中无法使用?

为什么在回测模块中使用get_individual_transaction函数报错或无法获取数据?

解决方案

在 ptrade 量化平台中,如果您在回测模块调用 get_individual_transaction 函数遇到报错或无法获取数据的情况,主要是因为该函数的使用场景限制

原因分析

根据 ptrade API 文档的明确规定,get_individual_transaction(获取逐笔成交行情)函数仅在交易模块可用。这意味着该接口不支持在回测环境(研究、回测模块)中调用。回测引擎通常不提供 Level-2 级别的逐笔历史数据,因此调用该函数会导致报错或返回空数据。

解决方案与替代方法

如果您在回测阶段需要模拟或使用历史数据,可以考虑以下替代方案:

  1. 使用 K 线数据替代
    在回测中,您可以使用 get_historyget_price 函数获取分钟级别(如 '1m')或日线级别('1d')的 K 线数据来近似模拟策略逻辑。虽然精度不及逐笔数据,但对于大多数策略的回测已经足够。

    # 获取过去10分钟的分钟线数据
    history_data = get_history(10, '1m', ['close', 'volume'], security_list='600570.SS')
    
  2. 实盘/模拟盘测试
    如果您的策略高度依赖逐笔成交数据(如高频交易、微观盘口分析),建议直接在交易模块(模拟盘或实盘)中进行测试。在交易模块中,只要您开通了 Level-2 行情权限,就可以正常使用 get_individual_transaction 获取当日的逐笔成交数据。

  3. 注意 Level-2 权限
    即使在交易模块中,调用此函数也需要您的账户开通了 Level-2 行情权限,否则同样会返回无数据(None)。

总结

在编写 ptrade 策略时,请务必注意 API 文档中每个函数的使用场景。对于仅限交易模块使用的函数,在回测代码中应予以规避,或者使用 is_trade() 函数进行场景判断,以确保代码在回测和交易环境中都能平稳运行。

if is_trade():
    # 交易环境中获取逐笔成交
    transaction = get_individual_transaction()
else:
    # 回测环境中使用分钟线替代
    history = get_history(1, '1m', 'close')