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

ptrade 策略开发:如何使用 is_trade() 判断回测与实盘环境?

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: ptrade API 教程:利用 is_trade 函数区分回测与实盘环境

Question: ptrade 中如何判断策略当前是在回测还是在实盘中运行?

解决方案

在 ptrade 量化交易平台中,可以通过调用系统内置的 is_trade() 函数来判断当前策略代码的运行环境是回测还是实盘交易


一、is_trade() 函数说明

  • 接口名称is_trade()
  • 适用场景:仅在回测、交易模块可用。
  • 参数:无。
  • 返回值
    • True:当前策略在实盘/模拟交易环境中运行。
    • False:当前策略在回测环境中运行。

二、典型应用场景

  1. 部分 API 接口差异化调用:某些接口(如实时行情快照 get_snapshot()、逐笔成交 get_individual_transaction() 等)仅在实盘/交易模块可用,通过 is_trade() 可以在回测时规避调用导致报错。
  2. 日志与告警提示:在实盘交易时开启短信/邮件/微信推送(如 send_emailsend_qywx),而在回测阶段关闭通知。
  3. 资金与风险控制:在实盘环境中使用真实的资金管理逻辑或特定的报单模式。

三、Python 策略代码示例

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)

def handle_data(context, data):
    # 判断运行环境
    if is_trade():
        log.info("【当前运行场景:实盘/模拟交易】")
        # 在实盘环境中可以调用实盘专属逻辑或快照数据
        snapshot = get_snapshot(g.security)
        log.info(snapshot)
    else:
        log.info("【当前运行场景:历史回测】")
        # 在回测环境中执行回测专属逻辑
        price = data[g.security]['close']
        log.info("当前回测收盘价: %s" % price)
    
    # 下单操作在回测与实盘中均可兼容运行
    order(g.security, 100)

四、注意事项

  1. 初始化阶段is_trade() 可以在 initializebefore_trading_starthandle_data 等多个事件函数中随时调用。
  2. 代码兼容性:合理使用 is_trade() 条件判断,可以编写一套无缝无感切换于回测与实盘之间的通用策略代码。