vnpy不使用rqdata,尝试tushare


还没有Tushare账号?注册由此去:官网注册Tushare

本篇为vnpy-tushare-ctp系列文章之一,其他文章请前往:

ubuntu 18.04 安装 vnpy2.0.9 吐血总结

东吴期货CTP自行开发穿透式监管认证指导

一、缘起

为vnpy制作tushare数据接口,实际上是为了日线级别的均线策略。目前的思路是在每天的9:30分时候策略开始生效,读取之前一天的数据,而这些数据可以通过tushare获取存入数据库。读取到数据之后立马就可以进行计算并产生策略信号。

因为rqdata是付费产品,虽然vnpy官方对于rqdata支持比较好,但对于本屌,最好的还是免费产品。

所以新开坑,在vnpy中使用tushare代替rqdata一部分功能,最终达到日线级别的基于tushare的cta策略运行。

在vnpy的源代码中寻找rqdata,找到/vnpy/app/cta_strategy/engine.py中的

    def query_bar_from_rq(
        self, symbol: str, exchange: Exchange, interval: Interval, start: datetime, end: datetime
    ):
        """
        Query bar data from RQData.
        """
        req = HistoryRequest(
            symbol=symbol,
            exchange=exchange,
            interval=interval,
            start=start,
            end=end
        )
        data = rqdata_client.query_history(req)

这就是cta_strategy调用rqdata的直接入口了。

设想,在这个类中,可以通过另外增加一个参数的方式,从上层指导:到底数据取得是通过米筐还是通过tushare。

二、实现

2.1 tushare获取数据

要想用起tushare,必先获取token。在官网社区注册后到“个人主页”->“接口token”获取。另外,要想获取期货日线数据,现在需要至少200积分。小白有一百,填上个人信息再拉两个人头,积分到达220,就可以用了。

在Ubuntu系统下,安装好的miniconda可以让你舒舒服服地用上python,安装配置过程见前文《ubuntu 18.04 安装 vnpy2.0.9 吐血总结》,此处略过。用pip安装好tushare之后,还要再装一个lxml库,还有bs4,接下来开始写文件读取数据。

import tushare as ts
ts.set_token('你的token')
pro = ts.pro_api()
df = pro.fut_daily(ts_code='CU1811.SHF', start_date='20180101', end_date='20181113')
print(df)

这个demo运行正常,之后,我们试图将它以正确的姿势写进数据库。

为什么要写进数据库呢,直接在策略里使用tushare读取的数据不是也挺好吗?使用数据库能够将数据获取与使用分离,可以日后单独将数据获取做得更健壮。

2.2 vnpy的sqlite

vnpy在2020年1月20日正在写这篇文章的时候的最新版本是vnpy-2.0.9,默认的数据库是sqlite3。连接到sqlite,需要找到vnpy的设置文件,用find命令找到了在/hom/han目录下的.vntrader文件夹,在这个文件夹下有vnpy的设置文件(各种.json)和sqlite文件database.db。

sqlite是一个无需配置的轻量数据库,默认情况下连密码都不需要的。我们直接在.vntrader下打开一个终端,运行

sqlite3 database.db

即可打开数据库,之后用.tables命令查看数据库的表,查到有两个,分别是dbbardata和dbtickdata,继续查询表的内容:

select * from dbbardata

终端输出了数据,类似


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM