数据持久化,简单来说,就是把数据保存到硬盘,免得策略重启导致数据丢失。
服务器异常、策略优化等诸多场景,都会使得策略重启,策略中存储在内存中的全局变量就清空了,因此通过持久化处理为量化交易保驾护航必不可少。
原以为这种情况不多,想不到刚用一周,系统便升级,策略自动给我重启了!
再一了解,原来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,amount\r')
f.write('000001.SS,100\r')
f.write('000001.SS,-200\r')
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、交易记录这些数据及时写硬盘
收藏一下,以备后查!