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