数据持久化,简单来说,就是把数据保存到硬盘,免得策略重启导致数据丢失。
服务器异常、策略优化等诸多场景,都会使得策略重启,策略中存储在内存中的全局变量就清空了,因此通过持久化处理为量化交易保驾护航必不可少。
原以为这种情况不多,想不到刚用一周,系统便升级,策略自动给我重启了!
再一了解,原来ptrade经常重启,我out了。
所以,数据持久化问题必须解决。
一、文件保存的地方
文件可以保存到“研究”目录下,这这个目录,可以添加自己的目录,可以添加、修改、删除文件,就像文件浏览器一样,很方便!
get_research_path – 获取研究路径
get_research_path()
使用场景
该函数可在回测、交易模块使用
接口说明
该接口用于获取研究根目录路径,该路径为'/home/fly/notebook/'。
二、数据持久化代码实现
废话不多说,直接上代码。
import talib as tl import pandas as pd import numpy as np def initialize(context): read_write_file() def read_write_file(): path = get_research_path() file = path + 'dgj/trades_golden_grid_000001.SS.csv' # 写文件 f = open(file,'a') f.write('code,amountr') f.write('000001.SS,100r') f.write('000001.SS,-200r') f.close() # 读文件 trades = pd.read_csv(file,header=0,index_col=['code','amount']) log.info(trades)
三、数据持久化应用思路
1、收盘后,把参数写到配置文件
#盘后处理 15:30 def after_trading_end(context, data): # 临时变量写文件,以防重启 f = open(g.var_obj_file,'w') tmpStr = '{' tmpStr = tmpStr + '"first_buy_flag":' + str(g.first_buy_flag) + ',' tmpStr = tmpStr + '"basePrice":' + str(g.basePrice) + ',' tmpStr = tmpStr + '"plan_position_amount":' + str(g.plan_position_amount) tmpStr = tmpStr + '}' f.write(tmpStr) f.close() log.info('盘后处理完成')
2、开盘前,把数据文件读到内存
#盘前处理 def before_trading_start(context, data): # 每天开盘前读取一下变量,以保证计划重启后,可以继续原来的计划执行 # 也可以手工修改来中途改变参数,修改选择晚上、或者早上 try: f = open(g.var_obj_file,'r') var_obj = f.read() f.close() 变量赋值 except : log.info('读取参数文件错误,或没有文件') log.info('盘前处理完成')
3、交易记录这些数据及时写硬盘
收藏一下,以备后查!
还没有评论,来说两句吧...