在程序化交易、量化交易中研究策略、設(shè)計(jì)策略、回測分析時離不開行情數(shù)據(jù)的支持。市面上的所有數(shù)據(jù)都收集也不現(xiàn)實(shí),畢竟數(shù)據(jù)量太大。對于數(shù)字貨幣市場來說,發(fā)明者量化交易平臺上支持有限的交易所、交易對的回測數(shù)據(jù)。如果想回測一些暫時不支持?jǐn)?shù)據(jù)的交易所、交易對??梢允褂米远x數(shù)據(jù)源來進(jìn)行回測,但是這個前提是要自己有數(shù)據(jù)才行。所以就迫切需要一個行情收集程序,并且能持久化保存,最好還能實(shí)時獲取。
這樣可以解決幾個需求,例如:
1、可以給多個機(jī)器人提供數(shù)據(jù)源,可以緩解每個機(jī)器人訪問交易所接口的頻率。
2、可以讓機(jī)器人啟動時,獲取一個K線BAR數(shù)量足夠多的K線數(shù)據(jù),再也不用擔(dān)心機(jī)器人起始的時候K線BAR數(shù)量不足了。
3、可以收集小幣種行情數(shù)據(jù),用來給發(fā)明者量化交易平臺回測系統(tǒng)提供自定義數(shù)據(jù)源,從而使用回測系統(tǒng)回測策略。
計(jì)劃使用python實(shí)現(xiàn),為什么?因?yàn)楹芊奖?有了需求,動手!
python的pymongo庫
因?yàn)橐玫綌?shù)據(jù)庫,做持久化保存。數(shù)據(jù)選擇使用MongoDB,使用Python語言寫收集程序,所以需要這個數(shù)據(jù)庫的驅(qū)動庫。
在Python上安裝pymongo即可。
在托管者所在設(shè)備安裝MongoDB
例如:MAC安裝MongoDB,當(dāng)然WIN系統(tǒng)安裝MongoDB也差不多,網(wǎng)上有很多教程,以在蘋果MAC系統(tǒng)安裝為例:
下載鏈接:https://www.mongodb.com/download-center?jmp=nav#community
下載后,解壓縮到目錄:/usr/local。
配置環(huán)境變量
終端輸入:open -e .bash_profile,打開文件后,寫入:export PATH=${PATH}:/usr/local/MongoDB/bin
保存后,終端使用source .bash_profile使修改生效。
手動配置數(shù)據(jù)庫文件目錄和日志目錄
創(chuàng)建目錄/usr/local/data/db中對應(yīng)的文件夾。
創(chuàng)建目錄/usr/local/data/logs中對應(yīng)的文件夾。
收集器以發(fā)明者量化交易平臺上的Python機(jī)器人策略形式運(yùn)行。由于本人Python水平有限,只是實(shí)現(xiàn)了一個簡單的例子,用于展示本文的思路。收集器策略代碼:
創(chuàng)建使用數(shù)據(jù)的策略機(jī)器人。
注意:需要勾選上「畫線類庫」,沒有的話可以去復(fù)制一個到自己策略庫。
可以看到使用數(shù)據(jù)的策略機(jī)器人代碼中沒有訪問任何交易所接口,通過訪問數(shù)據(jù)庫獲取數(shù)據(jù),行情收集器程序沒有記錄當(dāng)前BAR的數(shù)據(jù),收集的是已經(jīng)完成狀態(tài)的K線BAR,如果需要當(dāng)前BAR實(shí)時數(shù)據(jù),稍加修改即可。當(dāng)前的例子代碼,只是為了演示,在訪問數(shù)據(jù)庫中表內(nèi)的數(shù)據(jù)記錄時是全部獲取,這樣隨著收集數(shù)據(jù)時間增長,收集數(shù)據(jù)越來越多,全部查詢出來會一定程度上影響性能,可以設(shè)計(jì)成只查詢比當(dāng)前數(shù)據(jù)新的數(shù)據(jù),添加到當(dāng)前數(shù)據(jù)中。
運(yùn)行托管者程序
在托管者所在設(shè)備,運(yùn)行起來MongoDB數(shù)據(jù)庫服務(wù)
./mongod -f mongo.conf
收集器運(yùn)行,收集發(fā)明者量化交易平臺的模擬盤wexApp的BTC_USDT交易對:
地址:wexApp
使用數(shù)據(jù)庫數(shù)據(jù)的機(jī)器人A:
使用數(shù)據(jù)庫數(shù)據(jù)的機(jī)器人B:
wexApp頁面:
圖中可以看到,不同ID的機(jī)器人,共享使用一個數(shù)據(jù)源的K線數(shù)據(jù)。
依托于發(fā)明者量化交易平臺的強(qiáng)大功能,我們可以輕松實(shí)現(xiàn)收集任意周期的K線數(shù)據(jù)。比如,我要收集3分鐘K線,交易所沒有3分鐘K線怎么辦?沒關(guān)系,可以輕松實(shí)現(xiàn)。我們修改收集器機(jī)器人的配置,K線周期設(shè)置為3分鐘,發(fā)明者量化交易平臺會自動合成3分鐘K線給收集器程序。
我們使用參數(shù)刪除表的名稱,設(shè)置:['records']刪除之前收集的1分鐘K線數(shù)據(jù)表。準(zhǔn)備收集3分鐘K線數(shù)據(jù)。啟動收集器程序,再啟動使用數(shù)據(jù)的策略機(jī)器人。
可以看到畫出的K線圖表,BAR之間間隔時間就是3分鐘了,每根BAR就是3分鐘周期的K線柱。下期我們嘗試實(shí)現(xiàn)自定義數(shù)據(jù)源的需求實(shí)現(xiàn)。感謝閱讀
聯(lián)系客服