问题描述
设置底仓时参数不知道如何填写
解决方案
在 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 的研究环境中,且文件名和路径正确。