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

PTrade 平台 set_parameters 接口必选参数及 initialize 设置指南

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

问题描述

PTrade中哪些参数必须在initialize函数中设置?

想了解set_parameters的必选参数

解决方案

在 PTrade 量化交易平台中,set_parameters 接口用于设置策略的各项配置参数。为了保证策略在服务器重启或异常恢复时的逻辑正确性,有几个关键参数必须initialize 函数中进行设置。

必须在 initialize 中设置的参数

根据 PTrade API 文档,以下两个参数必须在 initialize 模块中设置:

  1. not_restart_trade
  2. server_restart_not_do_before

参数详细说明

1. not_restart_trade (交易场景务必了解)

  • 作用:控制在交易时间段内,若服务器重启,是否自动重新拉起本交易。
  • 取值
    • "0":执行(缺省/默认值)。
    • "1":不执行。
  • 配置说明
    • 当服务器环境重启并拉起交易时,initializebefore_trading_start 函数会被重复调用
    • 风险提示:请务必检查策略编写逻辑。避免在这两个函数中设置无法被系统持久化保存的变量(变量一旦被初始化会导致策略逻辑异常),并绝对避免在这两个函数中调用委托接口,否则会造成重复委托。
    • 建议:您可以将 not_restart_trade 入参设置为 "1",以在交易时间段避免重复执行的问题。交易时间段默认为 09:00-11:30、13:00-15:30(实际以券商的配置为准)。

2. server_restart_not_do_before (交易场景务必了解)

  • 作用:控制若服务器重启导致重拉交易时,是否重复执行 before_trading_start 函数。
  • 取值
    • "0":执行(缺省/默认值)。
    • "1":不执行。
  • 配置说明
    • 服务器环境重启拉起交易时,before_trading_start 函数默认会被调用。
    • 为了避免重复调用带来的一系列问题(如重复初始化变量、重复下单等),您可以将 server_restart_not_do_before 入参设置为 "1",这样在一个交易日内 before_trading_start 函数仅会调用一次。

代码示例

以下是如何在 initialize 函数中正确设置这些参数的示例:

def initialize(context):
    # 初始化策略
    g.security = "600570.SS"
    set_universe(g.security)
    
    # 设置交易时间段服务器重启不再拉起本交易
    # 设置服务器重启重拉交易时不再执行before_trading_start函数
    set_parameters(
        not_restart_trade="1", 
        server_restart_not_do_before="1"
    )

def before_trading_start(context, data):
    log.info("do before_trading_start")
    # 这里的逻辑在一个交易日内只会被执行一次(如果设置了 server_restart_not_do_before="1")

def handle_data(context, data):
    pass

总结

在编写实盘交易策略时,处理好服务器重启等异常情况至关重要。强烈建议在 initialize 函数中将 not_restart_tradeserver_restart_not_do_before 设置为 "1",以确保策略的稳定性和安全性,防止因重复执行初始化逻辑而导致的意外交易损失。