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

ptrade 平台如何配置参数防止服务器重启导致 before_trading_start 重复运行?

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

问题描述

ptrade 避免服务器重启导致重复执行的参数配置
如何设置 ptrade 策略参数,防止交易时段服务器重启导致 before_trading_start 重复运行?

解决方案

在 ptrade 实盘交易中,如果服务器环境发生重启并重新拉起交易,默认情况下系统会重新执行 initializebefore_trading_start 函数。这可能会导致盘前初始化逻辑被重复触发,甚至造成重复委托等严重问题。

为了解决这一痛点,ptrade 提供了专门的策略配置参数。您可以通过在 initialize 函数中调用 set_parameters 接口来进行配置。

核心参数配置说明

  1. server_restart_not_do_before

    • 作用:控制服务器重启导致重拉交易时,是否重复执行 before_trading_start 函数。
    • 取值
      • "0":执行(缺省值)。
      • "1"不执行。设置后,一个交易日内 before_trading_start 函数仅会被调用一次,即使服务器重启也不会重复执行。
  2. not_restart_trade

    • 作用:控制交易时间段内若服务器重启,是否自动执行重新拉起本交易。
    • 取值
      • "0":执行(缺省值)。
      • "1"不执行。设置后,可避免在交易时段因系统重启而自动重新拉起交易。

⚠️ 注意事项
not_restart_tradeserver_restart_not_do_before 这两个参数必须在 initialize 模块中设置,在其他事件函数中设置将无法生效。


示例代码

以下是一个完整的配置示例,展示了如何在初始化时规避服务器重启带来的重复执行风险:

def initialize(context):
    # 1. 设置要操作的股票池
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 2. 配置策略参数,防止服务器重启导致重复执行
    # server_restart_not_do_before="1" 表示重启时不重复执行 before_trading_start
    # not_restart_trade="1" 表示交易时段服务器重启时不自动重新拉起本交易(根据实际需求配置)
    set_parameters(
        server_restart_not_do_before="1", 
        not_restart_trade="1"
    )
    
    log.info("策略初始化完成,已配置防重复执行参数。")

def before_trading_start(context, data):
    # 该函数在一个交易日内只会执行一次
    log.info("执行盘前初始化逻辑...")

def handle_data(context, data):
    # 盘中交易逻辑
    pass