量化策略怎麼寫?最詳解說來了!

量化策略怎麼寫?最詳解說來了!

讀了那麼多書,炒了那麼多股,對於交易,很多人都有了自己的思路和投資風格,這個時候,如果你會一點python,那麼一隻腳就已經邁入了量化投資的大門!

第一步幹什麼呢?首先,你當然需要有一個策略思路啦!

我們以一個簡單的雙均線日線策略為例:

每天回測

買入條件:對短均線上穿長均線的股票實施買入操作

賣出條件:對短均線下穿長均線的股票實施賣出操作

長均線我們選取10日均線,短均線選取5日均線,5日均線上穿10日均線金叉買入,死叉賣出,是最常見的短線操作策略之一。

有了策略思路,

第二步我們就要想辦法實現了!

是時候祭出QuantDesk了!

丟個下載地址給各位看官:

http://www.yunkuanke.com/#/download

量化策略怎麼寫?最詳解說來了!

量化策略怎麼寫?最詳解說來了!

那麼這個策略到底要怎麼寫呢?

根據上面的策略思路,我們應該先算選股指標,並根據選股指標進行買入賣出操作。但是在算選股指標時,我們需要做一些準備工作,才能保證指標能夠被計算出來。所以這個

流程可以分三步:

量化策略怎麼寫?最詳解說來了!

  1. 準備工作

導入需要的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-


分享到:


相關文章: