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

PTrade中set_parameters函数的入参格式有什么要求?

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

问题描述

PTrade中set_parameters函数的入参格式有什么要求?

调用set_parameters时报错格式不正确

解决方案

PTrade 中 set_parameters 函数入参格式详解

在 PTrade 量化交易平台中,调用 set_parameters 函数时如果遇到“格式不正确”的报错,通常是因为没有遵循平台规定的参数传递规则。根据 PTrade API 文档,set_parameters 的入参格式有严格的要求。

1. 核心格式要求

set_parameters 函数的入参格式必须为 a=b 样式(即 Python 中的关键字参数形式/kwargs)。

  • 键(Key):必须是平台支持的特定配置项名称(如 not_restart_trade)。
  • 值(Value):通常需要传入字符串类型"1"(表示开启/执行)或 "0"(表示关闭/取消)。

2. 常见错误示例与纠正

❌ 错误写法(会导致格式不正确报错):

# 错误1:传入了字典
set_parameters({"not_restart_trade": "1"})

# 错误2:传入了位置参数
set_parameters("1", "1")

# 错误3:值使用了布尔值或整数(部分版本可能严格要求字符串)
set_parameters(not_restart_trade=1)

✅ 正确写法:

# 正确:使用 a=b 的关键字参数形式,值为字符串
set_parameters(not_restart_trade="1", server_restart_not_do_before="1")

3. 支持的配置参数列表

目前 set_parameters 支持以下配置项(具体以券商实际支持为准):

  • holiday_not_do_before:交易中节假日是否执行 before_trading_start"0" 执行(缺省);"1" 不执行。
  • tick_data_no_l2tick_data 中 data 是否包含 order 和 transaction。"0" 包含(缺省);"1" 不包含。
  • receive_other_response:策略中是否接收非本交易产生的主推。"0" 不接收(缺省);"1" 接收。
  • receive_cancel_response:策略中是否接收撤单委托产生的主推。"0" 不接收(缺省);"1" 接收。
  • not_restart_trade:交易时间段若服务器重启,是否自动执行重新拉起本交易。"0" 执行(缺省);"1" 不执行。(注意:必须在 initialize 中设置
  • server_restart_not_do_before:若服务器重启导致重拉交易,是否重复执行 before_trading_start 函数。"0" 执行(缺省);"1" 不执行。(注意:必须在 initialize 中设置

4. 完整代码示例

def initialize(context):
    g.security = "600570.SS"
    set_universe(g.security)
    
    # 正确调用 set_parameters
    # 设置交易时间段服务器重启不再拉起本交易,且不再执行 before_trading_start
    set_parameters(not_restart_trade="1", server_restart_not_do_before="1")

def before_trading_start(context, data):
    log.info("执行盘前处理")
    # 如果想要取消已经设置的配置参数,传入 "0"
    # set_parameters(not_restart_trade="0")

def handle_data(context, data):
    pass

总结:检查你的代码,确保去掉了字典的大括号 {},直接使用 参数名="值" 的形式传递给 set_parameters 即可解决报错问题。