第三課 構(gòu)建第一個(gè)策略:雙均線策略 -- 零基礎(chǔ)量化投資小課堂
上一節(jié)課我們講了如何獲取股票或者其他資產(chǎn)的價(jià)格數(shù)據(jù),今天就要?jiǎng)狱c(diǎn)真格的了。
本節(jié)目標(biāo):構(gòu)建并且回測一個(gè)雙均線交叉的策略。
回測就是指把歷史的價(jià)格數(shù)據(jù)都拿出來,在你想要買的地方買入,想賣的地方賣出,看看最后你是賺錢了還是虧錢了,一般情況下回測需要考慮的東西很多,比如手續(xù)費(fèi),印花稅,漲跌停限制,停牌限制等,但初級階段我們可以只考慮最簡單的部分,就是價(jià)格。
均線一般來說能夠過濾不必要的波動,識別出來價(jià)格的趨勢,很多賺錢的策略其實(shí)就是簡單的均線的變體。
最廣為人知的雙均線系統(tǒng)就是當(dāng)短期均線向上穿過長期均線的時(shí)候買入,向下穿過長期均線的時(shí)候賣出。在金融學(xué)邏輯上這個(gè)有一定的說服力,長期均線代表更多人的平均持倉成本,跌破這個(gè)價(jià)格的時(shí)候有部分人更容易賣出。
今天我們會用到的python包叫backtrader,關(guān)于它更多的信息可以去網(wǎng)上搜索。這里我們只需要知道它是一個(gè)用于回測股票策略的工具即可。
首先還是安裝它

然后,按照backtrader官方的教程,定義我們的策略主體,代碼太長放在文后,這里說明一下關(guān)鍵部分,不想看的可以直接跳過,文末有封裝好的一行代碼可運(yùn)行版:
這里我們使用人家封裝好的工具表達(dá)出來了五日均線和十日均線。self.sma5和self.sma10分別代表五日和十日均線,當(dāng)然,你也可以通過修改period=后面的數(shù)字自己定義多少日均線都行。
有了這兩條線之后,我們就可以定義剛才說的買入和賣出信號了
這里我們用大于號和小于號表達(dá)出了均線的上穿和下穿。當(dāng)然,這里你也可以隨便和代碼玩耍,任何你想要的條件都可以。
之后再完善一下代碼細(xì)節(jié),把上節(jié)課下載好的滬深300的價(jià)格數(shù)據(jù)輸入進(jìn)去,鼠標(biāo)點(diǎn)擊運(yùn)行,即可輸出一張回測結(jié)果的圖:
這張圖里最上面的紅線是現(xiàn)金,藍(lán)線是總資產(chǎn),中間的藍(lán)點(diǎn)和紅點(diǎn)是賺錢還是虧錢,下面圖里的綠色箭頭代表買入的點(diǎn)位,紅色箭頭代表賣出的點(diǎn)位。
同時(shí)我們每一筆交易的情況也會在下方輸出:

我們發(fā)現(xiàn)實(shí)際上這個(gè)簡單的均線交叉策略幫我們?nèi)〉昧硕嗳f的收益,效果不錯(cuò)!當(dāng)然這很可能是運(yùn)氣哦。
進(jìn)階作業(yè):
更改均線參數(shù),獲取更高收益
嘗試修改代碼,把每次全倉買入賣出改為半倉買入賣出
下面貼上直接點(diǎn)擊運(yùn)行就可以運(yùn)行的全代碼:
歡迎關(guān)注同名微信公眾號【量化的韭菜】或知識星球獲取更多內(nèi)容?