第三课 构建第一个策略:双均线策略 -- 零基础量化投资小课堂
上一节课我们讲了如何获取股票或者其他资产的价格数据,今天就要动点真格的了。
本节目标:构建并且回测一个双均线交叉的策略。
回测就是指把历史的价格数据都拿出来,在你想要买的地方买入,想卖的地方卖出,看看最后你是赚钱了还是亏钱了,一般情况下回测需要考虑的东西很多,比如手续费,印花税,涨跌停限制,停牌限制等,但初级阶段我们可以只考虑最简单的部分,就是价格。
均线一般来说能够过滤不必要的波动,识别出来价格的趋势,很多赚钱的策略其实就是简单的均线的变体。
最广为人知的双均线系统就是当短期均线向上穿过长期均线的时候买入,向下穿过长期均线的时候卖出。在金融学逻辑上这个有一定的说服力,长期均线代表更多人的平均持仓成本,跌破这个价格的时候有部分人更容易卖出。
今天我们会用到的python包叫backtrader,关于它更多的信息可以去网上搜索。这里我们只需要知道它是一个用于回测股票策略的工具即可。
首先还是安装它

然后,按照backtrader官方的教程,定义我们的策略主体,代码太长放在文后,这里说明一下关键部分,不想看的可以直接跳过,文末有封装好的一行代码可运行版:
这里我们使用人家封装好的工具表达出来了五日均线和十日均线。self.sma5和self.sma10分别代表五日和十日均线,当然,你也可以通过修改period=后面的数字自己定义多少日均线都行。
有了这两条线之后,我们就可以定义刚才说的买入和卖出信号了
这里我们用大于号和小于号表达出了均线的上穿和下穿。当然,这里你也可以随便和代码玩耍,任何你想要的条件都可以。
之后再完善一下代码细节,把上节课下载好的沪深300的价格数据输入进去,鼠标点击运行,即可输出一张回测结果的图:
这张图里最上面的红线是现金,蓝线是总资产,中间的蓝点和红点是赚钱还是亏钱,下面图里的绿色箭头代表买入的点位,红色箭头代表卖出的点位。
同时我们每一笔交易的情况也会在下方输出:

我们发现实际上这个简单的均线交叉策略帮我们取得了二十多万的收益,效果不错!当然这很可能是运气哦。
进阶作业:
更改均线参数,获取更高收益
尝试修改代码,把每次全仓买入卖出改为半仓买入卖出
下面贴上直接点击运行就可以运行的全代码:
欢迎关注同名微信公众号【量化的韭菜】或知识星球获取更多内容