ptrade量化实盘 (ptrade函数说明)

数据持久化,简单来说,就是把数据保存到硬盘,免得策略重启导致数据丢失。

服务器异常、策略优化等诸多场景,都会使得策略重启,策略中存储在内存中的全局变量就清空了,因此通过持久化处理为量化交易保驾护航必不可少。

原以为这种情况不多,想不到刚用一周,系统便升级,策略自动给我重启了!

再一了解,原来ptrade经常重启,我out了。

所以,数据持久化问题必须解决。

一、文件保存的地方

文件可以保存到“研究”目录下,这这个目录,可以添加自己的目录,可以添加、修改、删除文件,就像文件浏览器一样,很方便!

get_research_path – 获取研究路径

get_research_path()

使用场景

该函数可在回测、交易模块使用

接口说明

该接口用于获取研究根目录路径,该路径为'/home/fly/notebook/'。

ptrade,ptrade获取每分钟交易数据

二、数据持久化代码实现

废话不多说,直接上代码。

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)

ptrade,ptrade获取每分钟交易数据

ptrade,ptrade获取每分钟交易数据

ptrade,ptrade获取每分钟交易数据

三、数据持久化应用思路

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、交易记录这些数据及时写硬盘

收藏一下,以备后查!