问题描述
上传到量化研究的目录下的文件在回测或交易中如何读取路径?
解决方案
在 ptrade 量化平台中,如果您在“研究”模块上传了自定义的数据文件(如 CSV、Pickle、JSON 等),可以通过内置的 get_research_path() 接口来获取研究模块的根目录路径,进而在回测或交易代码中读取这些文件。
接口详解:get_research_path()
- 使用场景:该函数可在回测、交易模块中使用。
- 接口说明:用于获取研究根目录的绝对路径。
- 返回值:返回一个字符串类型对象 (str)。
代码示例
获取到路径后,您可以将其与文件名拼接,然后使用 Python 标准库(如 open)或第三方库(如 pandas)来读取文件内容。
import pandas as pd
import os
import pickle
def initialize(context):
g.security = "600570.SS"
set_universe(g.security)
# 1. 获取研究根目录路径
research_path = get_research_path()
log.info("研究目录路径为: %s" % research_path)
# 2. 拼接文件路径 (假设您上传了一个名为 'my_data.csv' 的文件)
# 注意:可以直接使用字符串拼接 research_path + 'my_data.csv'
csv_file_path = research_path + 'my_data.csv'
# 3. 读取 CSV 文件
try:
g.my_data = pd.read_csv(csv_file_path)
log.info("CSV文件读取成功!")
except Exception as e:
log.error("读取CSV文件失败,错误信息:%s" % e)
# 4. 读取 Pickle 文件示例 (常用于策略持久化)
pkl_file_path = research_path + 'hold_days.pkl'
try:
with open(pkl_file_path, 'rb') as f:
g.hold_days = pickle.load(f)
log.info("Pickle文件读取成功!")
except:
g.hold_days = {}
log.info("未找到Pickle文件,初始化为空字典。")
def handle_data(context, data):
pass
补充说明
如果您上传的 CSV 文件是专门用于设置回测初始底仓的,ptrade 提供了一个更便捷的专用接口 convert_position_from_csv(path)。使用该接口时,只需直接传入文件名(前提是文件已上传至研究目录),无需手动拼接路径:
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
# 直接传入研究目录下的文件名即可
poslist = convert_position_from_csv("Poslist.csv")
set_yesterday_position(poslist)