3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
支持。 在 ptrade 量化平台中,回测和交易模块均支持读写研究环境(Notebook)下的文件。这对于策略的参数配置读取、自定义数据的加载以及策略运行状态的持久化保存非常有用。
实现读写研究环境文件的核心在于使用 ptrade 提供的 API 接口 get_research_path() 来获取研究环境的根目录路径,然后结合 Python 标准的文件操作(如 open、pickle、pandas 等)进行文件的读写。
使用 get_research_path() 函数可以获取研究根目录的绝对路径。
# 获取研究根目录路径
NOTEBOOK_PATH = get_research_path()
在策略运行过程中,我们经常需要保存一些全局变量(如仓龄、自定义状态等),以防策略重启后数据丢失。
import pickle
def handle_data(context, data):
# 假设我们要保存一个字典数据
my_data = {'600570.SS': 100, '000001.SZ': 200}
# 获取路径并拼接文件名
file_path = get_research_path() + 'my_strategy_data.pkl'
# 写入文件
with open(file_path, 'wb') as f:
pickle.dump(my_data, f, -1)
log.info('数据已成功写入研究环境文件。')
在策略初始化(initialize)或盘前准备(before_trading_start)时,可以读取之前保存的文件。
import pickle
def initialize(context):
g.security = '600570.SS'
set_universe(g.security)
file_path = get_research_path() + 'my_strategy_data.pkl'
# 尝试读取文件
try:
with open(file_path, 'rb') as f:
g.my_data = pickle.load(f)
log.info('成功读取文件数据:%s' % g.my_data)
except Exception as e:
log.warning('读取文件失败或文件不存在,初始化为空字典。错误信息:%s' % e)
g.my_data = {}
ptrade 还提供了一个便捷接口 convert_position_from_csv(path),可以直接从研究环境上传的 CSV 文件中读取底仓配置。
def initialize(context):
# 假设在研究环境中上传了名为 Poslist.csv 的文件
# 文件内容格式需包含:sid,enable_amount,amount,cost_basis
poslist = convert_position_from_csv("Poslist.csv")
set_yesterday_position(poslist)
:?,@#$&();"'<>~\!%^*。pickle 序列化的。get_research_path() 返回的路径通常以斜杠结尾,直接拼接文件名即可(如 get_research_path() + 'data.csv')。try...except 块进行异常处理,防止因文件不存在或格式错误导致策略直接崩溃。