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

PTrade 量化平台如何使用 set_yesterday_position 设置初始底仓?

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

问题描述

PTrade中set_yesterday_position函数的参数格式是什么?

设置底仓时参数不知道如何填写

解决方案

在 PTrade 量化交易平台中,set_yesterday_position 函数专门用于在回测模块中设置策略的初始底仓。该函数会使策略在初始化运行时就创建出持仓对象,包含您预设的持仓信息。

1. 函数语法

set_yesterday_position(poslist)

2. 参数格式详解

参数 poslist 必须是一个 列表 (list),列表中的每个元素是一个 字典 (dict)。参数不能为空。

字典中需要包含以下四个键值对(所有的键和值通常都作为字符串传入):

  • sid: 标的代码(例如:'600570.SS')。
  • amount: 持仓总数量。
  • enable_amount: 可用数量(通常等于或小于持仓总数量)。
  • cost_basis: 每股的持仓成本价格。

数据结构示例:

[
    {
        'sid': '600570.SS',
        'amount': '1000',
        'enable_amount': '600',
        'cost_basis': '55'
    }
]

3. 代码编写示例

以下是一个在 initialize 函数中直接通过代码设置底仓的完整示例:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 1. 创建一个空字典
    pos = {}
    # 2. 填充底仓信息
    pos['sid'] = "600570.SS"
    pos['amount'] = "1000"
    pos['enable_amount'] = "600"
    pos['cost_basis'] = "55"
    
    # 3. 将字典放入列表中,并传入函数
    set_yesterday_position([pos])

def handle_data(context, data):
    # 策略运行后,可以直接卖出底仓中的股票
    order(g.security, -100)

4. 进阶用法:通过 CSV 文件导入底仓

如果您的底仓股票数量较多,手动在代码中编写字典会非常繁琐。PTrade 提供了 convert_position_from_csv 接口,允许您从 CSV 文件中读取底仓信息。

CSV 文件格式要求 (例如命名为 Poslist.csv):

sid,enable_amount,amount,cost_basis
600570.SS,10000,10000,45
000001.SZ,5000,5000,15

代码调用示例:

def initialize(context):
    g.security = '600570.SS'
    set_universe(g.security)
    
    # 从研究环境中上传的 CSV 文件读取底仓列表
    poslist = convert_position_from_csv("Poslist.csv")
    
    # 设置底仓
    set_yesterday_position(poslist)

def handle_data(context, data):
    pass

注意事项:

  • set_yesterday_position 仅在回测模块可用,实盘交易中持仓由真实账户同步。
  • 使用 CSV 导入时,请确保文件已上传至 PTrade 的研究环境中,且文件名和路径正确。