贈送“回測框架”的目的
為了幫助讀者再建立一座從書本知識到實戰(zhàn)應用之間的“橋梁”,,贈送一個回測小工具,。
由書中知識點組合而成,,實現(xiàn)了包括選股,、行情,、回測三個功能,。額外使用wxPython封裝一層GUI便于操作,。 提供給大家一種“量化交易”為我所用的思路,。大家可以以此為基礎去搭建適合自己的系統(tǒng),!
回測框架效果展示
回測框架的功能,,其實是我自己設定了一個炒股的場景。
我們根據(jù)上市公司的一些財務指標,,去過濾出我們心儀的股票加入我們的股票池,,然后查看股票的行情走勢,選出走勢較好的幾只股,,再制定一個擇時策略,,對這幾只股票進行回測,評估擇時策略的效果,。
我們把全市場股票的部分財務數(shù)據(jù)(市盈率,、市值、換手率之類的)整合成了一張表,,然后通過條件選取過濾出符合要求的股票,,點擊保存結果后就可以更新到自選股票池中。大家也可以重構這張表,,把平時關系的一些財務指標加進來,。
我們可以點擊股票池 顯示行情走勢,行情參數(shù)包括行情起始時間,、周期,、前復權、后復權,、不復權,。也可以4幅子圖同時比較行情走勢。
策略池中注冊策略,選擇回測參數(shù),,比如初始資金,、交易規(guī)模、滑點,、手續(xù)費,、印花稅之類,,點擊開始回測,,主界面可視化回測指標,比如風險和收益,,日志中會有更具體的回測結果,,比如交易明細、回測幅度,、收益率等,。
我錄制了一個操作視頻,大家可以看一下:點擊跳轉嗶哩嗶哩
回測框架文件功能概述
回測工具的下載位置
在群文件夾中下載一個名稱“QuantTradeYx_System-v03”的壓縮包,。
【該版本為V1.0,,是隨書贈送的。目前有升級的V2.0:可以點擊跳轉查看】
文件包括:
- stock_self_pool.json:存儲股票池,,可參考書中《7.4 注冊 JSON 格式自選股票池》的實現(xiàn),。
- firm_para.json:行情顯示頁面配置參數(shù),可參考書中《8.5 自定義顯示界面框架開發(fā)》
- back_para.json:回測顯示頁面配置參數(shù),,可參考書中《9.1 建立多維度的度量體系》
- logtrade.txt:存儲回測結果的日志文件,,可參考書中《9.1 建立多維度的度量體系》
- token.txt:存儲tushare pro的token碼,手動把注冊的token碼存文件中
token碼是從tushare官網獲取,,使用tushare的接口有積分要求
- QTYX_ApiData.py:API數(shù)據(jù)獲取接口文件,,參考《7.1 如何獲取股票行情數(shù)據(jù)》
- QTYX_ElementGui.py:GUI相關的定制類 QTYX_MainGui.py:GUI主界面,也是main啟動文件
- QTYX_MultiGraphs.py:行情顯示/回測顯示接口,,可參考書中《8.1 定制可視化接口 》《9.1 建立多維度的度量體系》和《8.5 自定義顯示界面框架開發(fā)》
- QTYX_StrategyGath.py:策略文件
- QTYX_SysFile.py:文件的讀取和存儲接口
運行條件:
必看本文“安裝環(huán)境”和“常見問題解決”的內容,,可以少走很多彎路。
安裝環(huán)境
移植程序前,,按書中“2.1 快速部署 Python 開發(fā)環(huán)境”節(jié)內容安裝開發(fā)環(huán)境,。 新手讀者建議和書中的Python版本保持一致。 Python3.7 wxpython 4.0.4 mpl_finance 0.10.0 TA-Lib 0.4.17 numpy 1.15.1 pandas 0.23.4 pandas-datareader 0.7.0 matplotlib 3.1.1 tushare 1.2.51 baostock 0.8.8 statsmodels 0.9.0
注意事項:
-
需要額外安裝GUI庫wxPython(Win7環(huán)境下安裝wxpython4.0.4,,原因見“常見問題解決”),。 -
書中安裝部署anaconda和pycharm過程是以macos為例,對于Windows用戶可以結合這篇文章參考點擊跳轉鏈接,。 -
安裝完成后啟動主文件QTYX_MainGui.py -
TA-Lib安裝會麻煩點,。具體安裝步驟可參考 https://github.com/mrjbq7/ta-lib 網站上介紹。 Mac用戶可按照書中的過程一步步來即可!??! Windows用戶參考下群里朋友的過程:前往“Python擴展包的非官方Windows二進制文件”,找到對應的wrapper 選擇TA_Lib-0.4.17-cp37-cp37m-win_amd64.whl(win系統(tǒng)64位,,python3.7版本,,根據(jù)自己系統(tǒng)和python版本選擇相應的安裝包),將下載包放在當前工作路徑中,,然后在Anaconda Prompt(或windows的cmd)里面輸入命令:pip install TA_Lib-0.4.17-cp27-cp27m-win_amd64.whl,。
常見問題解決
1. 提示以下錯誤:
主要出現(xiàn)在windows環(huán)境下,原因是讀寫的文件要指定編碼格式’utf-8’,。我是在macos系統(tǒng)上調的,,不需要指定編碼格式,采用默認的即可,。 已在QuantTradeYx_System-v02工程的QTYX_SysFile.py中更改,。
with open(filename, 'r', encoding='utf-8') as load_f:
2. 提示以下錯誤:
mpl_finance庫用于畫K線,可指定書中版本安裝,。
首先刪除當前版本 pip uninstall mpl_finance 或者pip uninstall mplfinance
然后指定版本安裝pip install mpl_finance==0.10.0,,這樣避免更多的問題排查。
當然,,有能力的朋友可以移植成mplfinance,,參考這篇內容:mpl_finance升級至mplfinance!基于股票量化分析工具V2.06的改動,!,。
3. 提示以下錯誤:
在win7環(huán)境下wxpython 4.1.0版本和baostock 0.8.8 一同使用時,在baostock的history.py文件的以下代碼中報錯: 經測試可以使用wxpython4.0.4版本和baostock 0.8.8共同使用,。不過wxpython4.0.4在win7下會出現(xiàn)以下問題:
You probably called setlocale() directly instead of using wxLocale and now there is a mismatch between C/C++ and Windows locale.
解決方法在MainGui文件中添加語句self.locale = wx.Locale(wx.LANGUAGE_ENGLISH),,如下所示:
def OnInit(self):
self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)
self.frame = MainFrame()
self.frame.Show()
self.frame.Center()
self.SetTopWindow(self.frame)
return True
win10環(huán)境下baostock 0.8.8和wxPython4.1.1 不存在兼容性問題。
也有讀者反映以下信息,,僅供參考: 總之建議的版本搭配為: Python3.8+wxpython4.1.1+baostock 0.8.8 + 去掉 self.locale = wx.Locale(wx.LANGUAGE_ENGLISH) Python3.7+wxpython4.0.4+baostock 0.8.8 win10/win7 維持代碼語句 self.locale = wx.Locale(wx.LANGUAGE_ENGLISH)
4. 提示以下錯誤:
原因為tushare的積分不足,,程序中使用了pro.daily_basic()接口,大家可前往官網查看積分獲取規(guī)則,。
如不介意可使用org的一個接口作為選股數(shù)據(jù)(速度有點慢,,也并不穩(wěn)定),僅需在MainGui文件中更改一行代碼即可:
# 組合加入tushare數(shù)據(jù)
self.ts_data = Tsorg_Backend()
當然,,大家消化代碼之后可以把自己選股的數(shù)據(jù)替換到工具中,。
5. 提示以下錯誤:
win7上“回測結果”顯示為空 提示編碼格式錯誤: logtrade.txt文件編碼變?yōu)锳NSI。同時QTYX_SysFile.py 中 open 中把encoding 去掉,?;販y可以正常顯示,。
6. 提示以下錯誤:
如果界面顯示比例有問題,需要設置下界面尺寸或者比例參數(shù)以適應你的屏幕,。
## QTYX_MainGui.py相關代碼:
class MainFrame(wx.Frame):
def __init__(self):
# hack to help on dual-screen, need something better XXX - idfah
displaySize = wx.DisplaySize() # (1920, 1080)
displaySize = 0.85 * displaySize[0], 0.75 * displaySize[1]
# call base class constructor
wx.Frame.__init__(self, parent=None, title=u'量化軟件', size=displaySize,
style=wx.DEFAULT_FRAME_STYLE ^ wx.MAXIMIZE_BOX) # size=(1000,600)
##QTYX_ElementGui.py相關代碼:
class StockPanel(wx.Panel):
def __init__(self, parent):
wx.Panel.__init__(self, parent=parent, id=-1)
# 分割子圖實現(xiàn)代碼
self.figure = Figure(figsize=(8, 5)) ## figsize就是改它?。?!
最最最重要的是 點擊相應按鈕才有圖像出現(xiàn),!
搭建系統(tǒng)升級
我在知識星球《玩轉股票量化交易》中又新增了回測框架的一些功能。感興趣的讀者可以加入星球獲取,。
【2-1 搭建系統(tǒng)|比Matplotlib更好用的pyecharts打造GUI股票行情分析界面】 【2-4 搭建系統(tǒng)|行情軟件可沒有,!多股票投資組合用的GUI分析界面-附代碼】 【2-5 搭建系統(tǒng)|多維度下不同股票|周期|除權|復權走勢對比界面-附代碼】 【2-17 搭建系統(tǒng)|升級選股工具,使用同花順F10查看上市公司基本概況,!-附代碼】 【2-18 搭建系統(tǒng)|本地量化工具集成開源量化框架backtrader操作指南,!-附代碼】 【2-19 搭建系統(tǒng)|繼承backtrader的本地量化回測平臺如何玩轉多股輪動策略,!-附代碼】 更多更高階的量化學習內容可以查看這篇目錄介紹:
書籍《Python股票量化交易從入門到實踐》升級學習——《玩轉股票量化交易》
參考資料
很多讀者反饋wxPython相關的資料太匱乏了,,這里分享兩個鏈接。
wxpython官網使用文檔 專欄-如何用wxPython搭建Python量化交易GUI
讀者群動態(tài)
在移植回測框架的過程中所出現(xiàn)的問題,,主要集中在搭建環(huán)境這個環(huán)節(jié),,比如第三方庫的版本、Anaconda和Pycharm的安裝等等,,總體來說大伙的移植都算比較順利,,沒什么難度的。
|