请 [注册] 或 [登录]  | 返回主站

量化交易吧 /  量化平台 帖子:3365825 新帖:32

策略与研究间数据存取

TRADE12发表于:5 月 10 日 05:30回复(1)

有时想记录策略运行过程中的数据到研究中去?有时想从研究读数据到策略中?然而不知道怎么做?本文将会告诉你方法。

摘要:

  • 导入模块

  • 存取list和dict型数据

    • 存数据——write_file   json.dumps

    • 取数据——read_file   json.loads

    • 对dict型数据方法是一样的

  • 存取dataframe型数据

    • 存数据——write_file df.to_csv

    • 取数据——pd.read_csv StringIO read_file

  • 策略中的存取

策略与研究间数据存取¶

摘要:

  • 导入模块

  • 存取list和dict型数据

    • 存数据——write_file + json.dumps

    • 取数据——read_file + json.loads

    • 对dict型数据方法是一样的

  • 存取dataframe型数据

    • 存数据——write_file+df.to_csv

    • 取数据——pd.read_csv+StringIO+read_file

  • 策略中的存取

导入模块¶

# 策略与研究数据互通时往往需要导入这些模块import jsonimport pandas as pdfrom six import StringIO

存取list和dict型数据¶

读写list和dict型数据方法相同,该方法支持策略与研究间存取,也支持研究内存取。

准备list和dict型数据样例¶

从例子中可以看到,list和dict的值可以是字符也可以是数字,所以字符和数字都可以通过转成list或dict进行存取。

# list型scu = ['000001.XSHE',123]# dict型ab={'a':123,'b':'apple'}

存数据——write_file + json.dumps¶

变量其实不光是数据,还包括结构(变量名,对应关系等),所以不能直接存,还要把结构保存下来,json.dumps的作用是把变量转成一种可存储的状态,write_file则是把数据保存成个人研究空间中的一个文件。用法如下:

  • write_file("路径", json.dumps(变量))

write_file("school\test.json", json.dumps(scu))

取数据——read_file + json.loads¶

json.loads是把经过json.dumps处理后的数据转成原来的状态,即是其逆运算。read_file则是把个人研究空间中的文件读取出来。用法如下:

  • json.loads(read_file('路径'))

temp= json.loads(read_file('school\test.json'))temp # 输出出来看看
[u'000001.XSHE', 123]

对dict型数据方法是一样的¶

write_file("school\test.json", json.dumps(ab))temp= json.loads(read_file('school\test.json'))temp
{u'a': 123, u'b': u'apple'}

存取dataframe型数据¶

该方法支持策略与研究间存取,也支持研究内存取。

准备dataframe型数据样例¶

df=get_price(security='000001.XSHE', start_date='2015-11-26', end_date='2015-11-27',fields=['open','close'])df

openclose
2015-11-2610.009.90
2015-11-279.869.49

存数据——write_file+df.to_csv¶

write_file上文说过了。dataframe类型不能用json.dumps,要用.to_csv,其作用是将dataframe转成可存储的csv格式。方法如下:

  • write_file("路径", dataframe变量.to_csv())

write_file("df.csv", df.to_csv())

取数据——pd.read_csv+StringIO+read_file¶

取dataframe数据的方法解释复杂,直接按格式写也基本够用了。

  • pd.read_csv(StringIO(read_file("路径")),index_col=[0])

temp= pd.read_csv(StringIO(read_file('df.csv')),index_col=[0]) temp

openclose
2015-11-2610.009.90
2015-11-279.869.49

策略中的存取¶

方法跟在研究中一样,先导入模块,就可以正常使用。研究中存的文件策略中可以读取,策略中存的文件,研究中可以读取。例子如下:

(运行过本notebook到这里时,研究里已经有刚存的temp.json和df.csv两个文件了。)

全部回复

0/140

量化课程

    移动端课程