讀了那麼多書,炒了那麼多股,對於交易,很多人都有了自己的思路和投資風格,這個時候,如果你會一點python,那麼一隻腳就已經邁入了量化投資的大門!
第一步幹什麼呢?首先,你當然需要有一個策略思路啦!
我們以一個簡單的雙均線日線策略為例:
每天回測。
買入條件:對短均線上穿長均線的股票實施買入操作
賣出條件:對短均線下穿長均線的股票實施賣出操作
長均線我們選取10日均線,短均線選取5日均線,5日均線上穿10日均線金叉買入,死叉賣出,是最常見的短線操作策略之一。
有了策略思路,
第二步我們就要想辦法實現了!是時候祭出QuantDesk了!
丟個下載地址給各位看官:
http://www.yunkuanke.com/#/download
那麼這個策略到底要怎麼寫呢?
根據上面的策略思路,我們應該先算選股指標,並根據選股指標進行買入賣出操作。但是在算選股指標時,我們需要做一些準備工作,才能保證指標能夠被計算出來。所以這個
流程可以分三步:- 準備工作
導入需要的python包、設置參數。
細心的人會發現,策略的第一行一般都是用:# -*- coding:utf-8 -*-開頭,這一行代碼必不可少。這是因為PY文件當中是不支持中文的,就算註釋也不可以用中文,為了解決這個問題,就需要把文件編碼類型改為UTF-8的類型,輸入這個代碼就可以讓PY源文件裡面有中文了。
1) 導入需要的工具包
這一步是在計算選股指標之前,導入需要用到的工具包,比如,你在算指標的時候需要用到計算開平方之類的數學算法,鍵盤上的加減乘除幫不到你,這時候就需要math包,在寫這部分代碼的時候可以估計一下下面都需要用到哪些包,如果有遺漏,寫到後面還可以回頭補充。
2)設置參數
Config部分設置參數:比如平臺的用戶名和密碼、初始資金、交易開始和結束的時間、手續費等等:
Window_long代表長均線(10日均線)
Window_short代表短均線(5日均線)
Initial是設置整個回測開始前需要的操作,intPerDay是每日開始前需要的操作,因為在這個策略裡都不需要作什麼,所以我們設置了pass。
2.計算選股指標並執行買入賣出操作
Strategy後面寫的就是你的選股策略了,在判斷買入和賣出股票之前,我們需要明確幾件事:
- 現在是股票交易時間嗎?(判斷交易時間)
if sdk.isAssetTradingTime(AssetType.Stock):
- 我可以買哪些股票呢?(獲取股票列表)
stock_list = sdk.getStockList()
- 分別計算昨天的長短均線和前天的長短均線
long_ma1 = close_price_series[-window_long:, :].mean(axis=0)
short_ma1 = close_price_series[-window_short:, :].mean(axis=0)
long_ma2 = close_price_series[-(window_long+1):-1, :].mean(axis=0)
short_ma2 = close_price_series[-(window_short+1):-1, :].mean(axis=0)
1)判斷需要賣出的股票,生成賣出股票列表
第一次交易時,因為只有初始資金,所以沒有可以賣出的股票,程序會自動跳到下一步。從第二個交易日開始,程序會自動判斷,持倉的股票是否要賣出:
- 我能賣哪些股票?(生成賣出股票列表)
檢測持倉,看手中持有的股票是否有10日線上穿5日線,如果有符合條件的股票,就加入賣出列表。
- 我能賣多少股?
已經獲取了可以賣出的股票列表,那麼每隻股票的持倉量是多少呢?所以,我們調取持倉量,並將可賣持倉賦值給相應的posDict股票代碼,使股票代碼與持倉量一一對應。
- 生成賣出訂單
賣出股票需要知道三件事:股票代碼、賣出量和賣出價,目前我們已知符合賣出條件的股票代碼與持倉量,這一步要確定賣出量和賣出價。
Quotes獲取盤口信息,有了盤口信息就能獲取價格,我們設置:符合賣出條件的股票以開盤價賣出,並且賣出所有可賣持倉
2)判斷需要買入的股票,生成買入股票列表
- 我能買哪些股票?(生成買入股票列表)
首先檢測股票池中的股票是否有符合買入條件的(5日線上穿10日線),如果有,則加入買入股票列表buy_list
- 資金怎麼分配?
avg_cash這一行,首先獲取賬戶資金,然後平均分配給需要買入的股票。
- 生成買入訂單
買入股票需要知道三件事:股票代碼、買入量和買入價,目前我們已知符合買入條件的股票代碼與每隻個股的資金量,這一步要確定買入量和買入價。
Quotes獲取盤口信息,我們知道了股票的價格,我們設置開盤價買入(buy_price )
有了資金和價格,可以算出買多少股(buy_volume)
- 最後,執行買入操作
3.導入SDK
最後一步,調用我們的SDK,整個策略編寫完成
回測
利用QuantDesk平臺進行回測:
回測完成後,在平臺上可以看到很詳細的分析報告
-END-
閱讀更多 量子金服 的文章