3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,如果您希望在回测开始时导入外部持仓数据作为初始底仓,可以通过结合使用 convert_position_from_csv 和 set_yesterday_position 两个接口来实现。这一功能非常适合用于模拟真实账户已有持仓的后续回测场景。
准备并上传 CSV 文件:
您需要先在 ptrade 的研究工作区上传您的持仓 CSV 文件。CSV 文件的格式必须严格遵守以下表头和字段要求:
600570.SS)CSV 文件内容示例(例如命名为 Poslist.csv):
sid,enable_amount,amount,cost_basis
600570.SS,10000,10000,45.00
000001.SZ,5000,5000,12.50
解析 CSV 文件:
使用 convert_position_from_csv(path) 接口读取并解析该 CSV 文件,它会返回一个符合底仓设置格式的字典列表(list[dict])。
设置初始底仓:
在 initialize 初始化函数中,调用 set_yesterday_position(poslist) 传入解析后的列表,即可在回测启动时自动创建对应的持仓对象。
以下是一个完整的 ptrade 策略示例,展示了如何在初始化时导入底仓,并在盘中对导入的股票进行卖出操作:
# -*- coding: utf-8 -*-
def initialize(context):
# 1. 设置我们要操作的股票池(需要包含您导入的底仓股票)
g.security = '600570.SS'
set_universe(g.security)
# 2. 从研究根目录读取 CSV 配置文件并转换为底仓参数列表
# 请确保您已提前将 "Poslist.csv" 上传至研究工作区
try:
poslist = convert_position_from_csv("Poslist.csv")
# 3. 设置初始底仓
set_yesterday_position(poslist)
log.info("底仓导入成功,导入数据:%s" % str(poslist))
except Exception as e:
log.error("底仓导入失败,请检查文件路径及格式!错误信息: %s" % str(e))
def handle_data(context, data):
# 获取当前持仓信息
position = get_position(g.security)
# 如果当前持有该股票,且可用资金或持仓满足条件,尝试卖出 100 股底仓
if position.enable_amount >= 100:
order(g.security, -100)
log.info("成功卖出底仓股票 %s 100股" % g.security)
convert_position_from_csv 和 set_yesterday_position 接口仅在回测模块可用,实盘交易中持仓数据由柜台实时推送,无需也无法手动设置底仓。"user_data/Poslist.csv"。sid 字段必须带上正确的市场尾缀(上海市场为 .SS 或 .XSHG,深圳市场为 .SZ 或 .XSHE)。