作者:米哥、PKUJohnson,symbol
数据是量化研究的基础原料,我们提供两种模式的数据系统解决方案:
解决方案 | 适用对象 | 重要前提条件 |
---|---|---|
使用在线数据平台 | 普通投资者 | 在www.quantos.org注册账户 |
使用DataCore搭建本地数据系统 | 机构用户 | 需要有本地数据源。 |
在线数据平台由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开源项目,搭建本地数据系统。
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......