绝对干货3000字,手把手带你用Python实现一个量化炒股策略,小白也能看得懂!

共 4486字,需浏览 9分钟

 ·

2021-09-15 13:51


我一直都知道我会变得富有。

我认为自己从来没对此产生过一丝怀疑。    ——巴菲特

菜鸟学Python”,第“520”篇原创


玩Python这么久了,菜鸟哥写过Python基础教程,写过技巧经验,写过爬虫,数据库,数据分析,趣味案例等等。已经不知不觉写了500多篇了,今天我们来写一个量化的小策略,一起领略一下Python的强大魅力。


01.金融股市基础知识介绍
金融工具主要包括了股票,期货,黄金,外汇,基金等几种手段。对于个人来讲,基金和股票是大家接触到最多的金融工具。基金是指将自己的钱财交付给基金经理,由基金经理帮助我们来实现理财。这样的理财方式优点就是比较稳妥,但是收益一般较小。而股票则是个人通过购买上市公司的股份,来获得该公司的收益,从而获得利益。

这里,我们按照地区来对股票进行分类。

按照地区分类,股票分为了A股,B股等几种常见的股票类型,其中“T+1”指的是当天买入的股票,要到下一个交易日才能卖出,同时A股还设置了涨跌幅,避免了股票过快的上涨和下跌。

上图中展现的就是K线图,其中,收盘价高于开盘价的被称为阳线,反之则被称为为阴线。在很多的股票软件上,我们都可以看到K线图的身影。
MA线(均线):MA线指的是移动平均线,它是由一段时间的开盘价(也可以是收盘价)之和除以这段时间的交易日总天数得到的数据连接成一条线得到的,例如日线MA5指的是前5个交易日的开盘价的和除以5。

可以看到,计算的交易日越长,MA线呈现出更加平滑的状态,波动幅度也就越小。根据计算的交易日数量的不同,又可分为日均线指标,季均线指标以及年均线指标。
  • 5天和10天的是短线操作的参照指标,叫做日均线指标;

  • 30天和60天的是中期均线指标,叫做季均线指标;

  • 120天和240天的是长期均线指标,叫做年均线指标。


02.量化策略
对金融以及股票的基础知识有了一个了解之后,接下来就进入到我们的量化投资主题。所谓的量化投资是利用计算机技术并且用一定的数学模型去实践投资理念,实现投资策略的过程。而量化投资也有以下的几点优势:
  • 能够避免主观情绪,人性的弱点和认知偏差,更加客观
  • 能够同时包括多角度的观察和多层次的模型
  • 及时跟踪市场变化,不断发现新的统计模型,寻找交易机会。
  • 在决定投资策略后,通过回测验证量化策略的效果。
所谓的一个量化策略,就是指通过一套固定的逻辑来分析、判断和决策,自动化的进行股票交易
而量化策略的周期也包含了五个部分:
 A:产生策略想法,学习相关的知识;
 B:利用程序实现量化策略;
 C:进行量化策略的回测/模拟交易
 D:实盘交易
 E:根据表现来判断是优化策略还是放弃策略。

03.实战分析

接下来,我们就先简单的实现一个策略,看一下效果如何。

本次的量化策略,我们针对的是茅台的股票(代码:600519)。这里,菜鸟哥向大家介绍一个非常好用的库Tushare。我们可以借助Tushare库来获取到指定股票的开盘价,收盘价,最高价以及最低价的信息。

为了养成良好的量化策略周期意识,我们按照量化策略的周期,来进行策略的执行。

1).策略的制定

我们的策略很简单,从2015年1月1日开始,每月的第一个交易日都买入100股的股票,每年的最后一个交易日卖出所有的股票,到今天为止,收益是多少钱?

2).程序实现量化策略

明确策略之后,接下来就是对于策略的实现,程序用到的库如下图所示。

首先,我们利用Tushare库来获取茅台股票的信息,然后通过pandas保存到本地,并进行读取。

上图的程序中,需要注意的是在读取csv文件时,将date列作为我们的索引,同时将date列按照日期格式进行读取,并只读取开盘价,收盘价等四列内容,因为我们后续的策略只需要用到这四列的内容。读取到内容可以看到,茅台股票的第一个交易日是从2001年的8月27日开始。
通过对于策略的分析,我们首先需要将股票的数据缩小到2015年以后,然后获取到每月第一个交易日的信息,以及每年最后一个交易日的信息。程序如下图所示。

接下来就是对于策略的实现,程序如下图所示:


  • 程序的第5行是从2015年开始进行循环;

  • 第6行计算的是当年买股票所花的成本;

  • 第7行计算的则是一年所购买的股票总量。

  • 如果当年不是2021年的话,就在当年最后一个交易日将一年所买到的股票全部卖出,并计算所赚的收益(8-12);

  • 第14行和第15行代码分别给出的是2021年的股票收益以及将2021年购买股票所花的钱加到总开销上去;

程序最后输出的结果可以看到。自2015年开始到现在,买股票花费了618.7万元,收益则是达到了92.5万元。

这一个最为简单的策略,也能够得到正的收益,这也是得益于茅台股票的好行情,要是换一个股票,很可能这种简单的策略就会得到负的收益。


双均线策略

在简单的策略验证完成后,接下来,我们就来实现一个经典的量化策略:双均线策略。

双均线策略可以概括为两句话:

金叉:短期均线上穿长期均线,买入信号

死叉:短期均线下穿长期均线,卖出信号

那么何为金叉,何为死叉呢?我们来看下面这张图。

上图中,MA5在8月5日附近从下向上穿过MA60的线,这叫做上穿长期均线,两条线的交汇称为金叉,是买入的信号;在8月26日左右,MA5在从上向下穿过MA60的线,叫做下穿长期均线,两条线的交汇称为死叉,是卖出的信号。
而金叉和死叉利用的就是短期均线的波动幅度大于长期均线。同时,金叉和死叉的日期一定是按照101010的方式出现的,即金叉后面一定是死叉,然后后面又是金叉。否则的话,两条线是不可能存在交点的,大家可以仔细想想是不是这个道理呢?


04.模拟交易

明确了双均线策略的原理后,接下来就是量化策略的制定。
初始资金10万元,从2015年1月1日开始,每碰到一次金叉,就尽可能的买入股票(按照100股为计算单位,例如买100股,200股,300股),每碰到一个死叉就将所有的股票卖出,到今天为止,收益是多少钱?
我们还是以茅台股票为例。为了让大家更加清楚程序,菜鸟哥使用python语法来实现量化的策略,不去使用高阶的pandas函数。
首先,我们的短期均线采用ma5,长期均线采用ma30。下图程序就是ma5以及ma30的节点计算。

程序中的第3行和第6行,分别以前5天以及前30天的交易日数据来计算均线数值,并保存到df当中。然后我们画出ma5和ma30以及收盘价的曲线,来直观的观察金叉和死叉。
图中展示的是2015年4月到8月一段时间内的ma5和ma30的曲线。接下来我们通过程序来将金叉和死叉的日期提取出来。

程序中,通过判断前一个交易日与后一个交易日中,ma5和ma30的数值对比来判断交易日是否为金叉或者是死叉,然后将它们的时间分别添加到相应的列表中去。
最后,我们根据策略来进行模拟交易,程序如下图所示。

第6行程序按照一个金叉一个死叉的规律,将金叉日期和死叉日期进行了融合;
然后针对每一个交叉点(第8行),计算当日的股价(第9行);
如果当天是金叉,则尽可能多的买入股票,并将本金减去买入的股票金额,同时计算买入了多少股。(10-13行)
如果当天是死叉,则将全部的股票卖出,并将本金加上卖出股票所赚的钱,同时将持股数量清零。(14-16行)
最后是计算到今天的交易日为止,卖出所有股票,将所有的资金进行计算后,减去最初的本金10万元后,就是赚取的金钱(18-20行)。
可以看到,利用双均线策略的量化交易,从2015年至今,依靠10万元本金,就能赚取57万元。相比于第一个随意指定的策略,收益提高了很多。体现了量化交易策略的重要性和强大的能力。
5.总结

菜鸟哥今天从基础的金融和股票的知识介绍,再到量化策略的定,手把手的带领大家进行了一个经典的量化策略的实现。上面的分享只是给大家展现了Python的强大魅力,并不能作为投资参考。

投资是一个艺术也是一门学问,其实量化菜鸟哥已经玩了有2年了,感受也是五味杂陈,量化是一把双刃剑,后面我会写一篇感悟篇。今天只是从技术上给大家的一个分享,好了,欢迎大家在留言区吱一声,记得给个三连,你的支持,才是我原创的动力

大家也可以在留言区说说你想要了解的内容,也是我创作的一个方向。目前我和一些小伙伴组建了一个投资星球,一起讨论交流心得,我们已经默默的佛系运作了2个月。感兴趣也可以看看,不强求加入。





推荐阅读:

入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径


干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 |   从万众期待到口碑扑街!唐探3令人失望  | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影


趣味:弹球游戏  | 九宫格  | 漂亮的花 | 两百行Python《天天酷跑》游戏!


AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影


小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!|  再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!


年度爆款文案


点阅读原文,领AI全套资料

浏览 11
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报