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

量化交易吧 /  量化平台 帖子:3365811 新帖:18

JoinQuant 心得——数据存取

耶伦发表于:5 月 10 日 00:12回复(1)

JoinQuant 心得——数据存取

by 庸俗神父

聚宽使用两个月,分享些心得,方便后来人。

若朋友们觉得有帮助,回复一下,权当鼓励。

当然,若觉得有疑问或建议,也请告知。

API文档已有一定的说明,故只写重点,但附上API连接,请自行查阅。

  • JoinQuant 心得——股票行情数据
  • JoinQuant 心得——时间持仓资金数据
  • JoinQuant 心得——基本面数据
  • JoinQuant 心得——订单
  • JoinQuant 心得——回测功能性完善
  • JoinQuant 心得——数据存取

存取数据

  • API原文 read_file
  • API原文 write_file
  • 策略和研究中都能用。
  • 文件内容只能是 str或者unicode。
  • List与Dict等常规非字符数据,写入需json.dumps(),读取需json.loads(),所以需导入相应模块import json
  • DataFrame类型数据 写入需.to_csv,读取需pd.read_csvStringIO。所以需导入相应模块import pandas as pd,from six import StringIO
  • DataFrame类型数据在研究中有更简单的写法,不用read_filewrite_file即直接.to_csvpd.read_csv,但不能在策略中用,具体说明待更新。

样例(输出结果插入到相应代码后了)

# 回测时间为20151129-20151130
# 资金100000

import pandas as pd
import numpy as np
import json
from six import StringIO

def initialize(context):
    # 定义一个全局变量, 保存要操作的股票
    g.security = ['000001.XSHE','000002.XSHE']
    # 设置我们要操作的股票池
    set_universe(g.security)

# 每个单位时间(如果按天回测,则每天调用一次,如果按分钟,则每分钟调用一次)调用一次
def handle_data(context, data):

# 以下代码可以在研究中使用,但需导入相应模块

    security = ['000001.XSHE','000002.XSHE']
    tb={'a':1,'b':2}
    df=get_price(security=security, start_date='2015-11-26'
                , end_date='2015-11-27'
                , frequency='1d'
                , fields=['open','high','low','close'])
    print df['close']
# 输出    
# 2015-11-30 09:30:00 - INFO - 000001.XSHE  000002.XSHE
# 2015-11-26        12.23        14.50
# 2015-11-27        11.73        14.26   

    # List 存取
    write_file('test.json',json.dumps(security))
    temp= json.loads(read_file('test.json'))
    print temp
# 输出
# 2015-11-30 09:30:00 - INFO - [u'000001.XSHE', u'000002.XSHE']

    # Dict 存取
    write_file('test.json',json.dumps(tb))
    temp= json.loads(read_file('test.json'))
    print temp
# 输出   
# 2015-11-30 09:30:00 - INFO - {u'a': 1, u'b': 2}

    # DataFrame 存取
    write_file('test.csv', df['close'].to_csv(), append=False)
    close= pd.read_csv(StringIO( read_file('test.csv')),index_col=[0]) # index_col=[0]是指定DataFrame的index位置在第0列
    print close
# 输出 
# 2015-11-30 09:30:00 - INFO - 000001.XSHE  000002.XSHE
# 2015-11-26        12.23        14.50
# 2015-11-27        11.73        14.26

全部回复

0/140

量化课程

    移动端课程