Skip to content

Latest commit

 

History

History
176 lines (117 loc) · 6.58 KB

datasolution.md

File metadata and controls

176 lines (117 loc) · 6.58 KB

数据系统解决方案

作者:米哥、PKUJohnson,symbol

数据是量化研究的基础原料,我们提供两种模式的数据系统解决方案:

解决方案 适用对象 重要前提条件
使用在线数据平台 普通投资者 在www.quantos.org注册账户
使用DataCore搭建本地数据系统 机构用户 需要有本地数据源。

方案1:使用在线数据平台

在线数据平台由TusharePro提供,数据包括:

数据接口 主要内容 备注
daily 提供历史日线数据
bar 提供历史分时数据和实时分时数据 支持的范围包括:1分钟、5分钟、15分钟
bar_quote 提供历史分时数据和实时分时数据 支持的范围包括:1分钟、5分钟、15分钟
quote 提供实时行情快照
query 提供参考数据查询服务 范围非常广泛,包括证券信息、财务数据、指数、基金数据等

用户只需要通过如下步骤,即可使用:

1、在http://www.quantos.org上注册用户。

2、在Github上下载DataApi,项目地址如下:https://github.com/quantOS-org/DataApi

3、根据需求,获取相应的数据。

参考代码如下:

from data_api import DataApi

api = DataApi(addr="tcp://data.tushare.org:8910") # 在线数据源

api.login("手机号", "token")  #认证模块,需要修改成www.quantos.org的注册用户

symbol = 'T1712.CFE, TF1712.CFE, rb1712.SHF'
fields = 'open,high,low,last,volume'

# 获取实时行情
df, msg = api.quote(symbol=symbol, fields=fields)
print(df)
print(msg)

# 获取实时分钟线, trade_date = 0 表示获取实时分钟线, freq='1M' 表示1分钟线
df, msg = api.bar(symbol=symbol, trade_date=0, freq='1M', start_time=90000, end_time=150000)
print(df)
print(msg)

# 获取日线数据
df, msg = api.daily(
                symbol="600832.SH, 600030.SH", 
                start_date="2012-10-26",
                end_date="2012-11-30", 
                fields="", 
                adjust_mode="post")

# 获取证券信息
df, msg = api.query(
                view="jz.instrumentInfo",
                fields="status,list_date, fullname_en, market",
                filter="inst_type=1",
                data_format='pandas')

在线数据服务有一个限制,不提供行情订阅推送功能,只能查询。

最全的功能文档,请参考:http://tushare.org/pro/index.html

对于一般普通用户,如果上述数据能满足你的要求,我们推荐你使用这种方案。

如果您拥有自己的数据源,且有数据系统本地化部署的要求,可以使用DataCore开源项目,搭建本地数据系统。

方案2:使用DataCore搭建本地数据系统

DataCore是一款企业级开源量化数据系统,通过标准化接口提供高速实时行情、历史行情和参考数据等核心服务,覆盖股票、商品期货、股指期货、国债期货等品种,适配CTP、万得、聚源、Tushare等各类数据。

搭建本地数据系统,需要有一些前提条件:

  • 用于提供行情的实时行情源
  • 历史市场数据(如分钟线)
  • 参考数据库(如万得、聚源等厂商提供的参考数据库)

一、构建本地行情系统

DataCore本地行情系统的逻辑架构如下:

整个行情系统由几个部分构成:

  • mdlink系列,用于行情源接口转换,包括
    • mdlink_ctp:CTP期货行情接口
    • mdlink_tdf:万得宏汇行情接口
    • mdlink_sina:新浪股票行情接口
    • mdlink_merge:把多个行情源聚合成统一的行情服务,提供全标的广播接口
  • qms(query market data service):用于生成实时分钟线,提供实时行情查询
  • dataserver:综合数据服务器,提供集成的数据服务,包括实时行情按照代码订阅推送,实时行情查询。

构建工作分如下几步:

1、准备工作,包括:

  • 下载可执行程序。下载地址如下:http://www.quantos.org/datacore/download.html
  • 准备相应的行情账号。
    • 期货账号,可以使用SimNow的账号,请从SimNow官网注册。http://www.simnow.com.cn/static/register1.action,特别注意,SimNow用手机注册后,会分配一个InvestorID,请登录查看。
    • 万得宏汇行情接口,这个你只能找万得买了。如果你搞不到万得宏汇的行情账户,可以使用新浪的股票行情接口,不过质量就要你自己评估了。

2、部署mdlink和qms。部署过程请参考:http://www.quantos.org/datacore/doc.html

这里务必要注意几点:

(1)需要自行修改程序里面的账号配置,同一种标的,只能提供一个源。

(2)注意不同程序之间的访问端口,按照文档的要求进行配置。

3、部署dataserver。部署过程请参考:http://www.quantos.org/datacore/doc.html

这里务必要注意几点:

(1)dataserver基于Java开发,请安装Java8环境。

(2)dataserver需要连接qms和mdlink_merge。

4、使用DataApi,访问本地数据服务器,看看行情服务是否正常。实时行情相关的API是:

API接口 含义
quote 获取当前行情切片
bar 获取分钟线
subscribe 订阅分钟线
from data_api import DataApi

api = DataApi(addr="tcp://127.0.0.1:8910") # 根据本地实际情况修改

# api.login("手机号", "token")  

symbol = 'T1712.CFE, TF1712.CFE, rb1712.SHF'
fields = 'open,high,low,last,volume'

# 获取实时行情
df, msg = api.quote(symbol=symbol, fields=fields)
print(df)
print(msg)

# 获取实时分钟线, trade_date = 0 表示获取实时分钟线, freq='1M' 表示1分钟线
df, msg = api.bar(symbol=symbol, trade_date=0, freq='1M', start_time=90000, end_time=150000)
print(df)
print(msg)

# 订阅实时行情
# 行情回调函数,k可以忽略,v是一个字典,保存quote数据
def on_quote(k,v):
    print v['symbol'] // 标的代码
    print v['last'] // 最新成交价
    print v['time'] // 最新成交时间

subs_list,msg = api.subscribe(symbol=symbol, func=on_quote,fields=fields)

以上是代码示例。

二、构建本地历史市场数据系统

comming soon......

三、构建本地参考数据系统

comming soon......