3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 ptrade 量化交易平台中,如果您希望在回测开始时就拥有特定的历史持仓(即底仓),可以通过将持仓数据保存为 CSV 文件并上传至研究环境,然后利用平台提供的 API 进行一键导入。以下是具体的实现步骤和完整代码:
首先,在您的本地电脑上创建一个 CSV 文件(例如命名为 Poslist.csv),其内容格式必须严格遵守以下表头和字段要求:
sid,enable_amount,amount,cost_basis
600570.SS,10000,10000,45.0
000001.SZ,5000,5000,12.5
字段说明:
sid:标的代码(须带后缀,如 .SS 或 .SZ)。enable_amount:可用持仓数量。amount:总持仓数量。cost_basis:每股的持仓成本价格。登录您的 ptrade 客户端,进入研究模块,将准备好的 Poslist.csv 文件上传到研究环境的根目录或指定文件夹中。
在策略的 initialize 初始化函数中,使用 convert_position_from_csv 读取该 CSV 文件,并配合 set_yesterday_position 接口将其设置为初始底仓。
# -*- coding: utf-8 -*-
def initialize(context):
# 1. 设置我们要操作的股票池
g.security = ['600570.SS', '000001.SZ']
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):
# 示例:在盘中尝试卖出导入的底仓股票
for stock in g.security:
position = get_position(stock)
if position.enable_amount > 0:
# 卖出100股
order(stock, -100)
log.info("触发卖出信号:%s 卖出 100 股" % stock)
convert_position_from_csv 和 set_yesterday_position 接口仅在回测模块可用,实盘交易中无法使用此方式初始化持仓(实盘持仓由柜台真实数据决定)。:?,@#$&();"'<>~!%^*`)。sid 必须使用 ptrade 支持的代码尾缀(上海市场用 .SS 或 .XSHG,深圳市场用 .SZ 或 .XSHE)。