如何用Python写一个双均线策略!

a4dfba0c493c5ff99fef96d9b3a6a18a.png

(永久免费,扫码加入)

本篇是量化系列的内容,已经购买小册的不要看了。

我的小册:(小白零基础用Python量化股票分析小册) ,原价299,限时特价2杯咖啡,满100人涨10元。

双均线策略应该是所有的股票软件,股票网站都必备的一个策略。无论是在同花顺,还是券商软件都有这个策略。我们简单介绍一下这个策略的来龙去脉,以及如何写这个策略的信号。

1.什么是双均线策略

两条移动平均线(Moving Average, MA):一条短期均线和一条长期均线。这两条线通常是基于不同时间段的股票收盘价计算出来的平均值。

短期均线:这通常是近期(如10天或20天)的移动平均线,反映了股票短期价格走势。

长期均线:这是基于较长时间段(如60天或100天)的移动平均线,展示了股票的长期趋势。

策略的核心原则:

金叉:当短期均线从下向上穿过长期均线时,这通常被视为买入信号。这表明短期趋势正在转向上升,可能预示着价格上涨。

死叉:当短期均线从上向下穿过长期均线时,这通常被认为是卖出信号。这意味着短期趋势开始下降,可能预示着价格下跌。

股票上行就是金叉买,死叉卖,因为不涉及做空,对于A股只有买入和平仓 比较简单。其他的市场是有做空机制,会更复杂一些。

2. 如何写双均线策略的信号

解释了规则之后,我们来实际用Python代码写一下这个策略,我们还是用创业板的头牌特锐德2023 从1月到12月的数据来演示:

f5c8f608dee4c37fa567f753b66d12da.png

我们来导入数据,写一下代码:

e8f2dbb280be6a63146282ebc6466887.png

计算5日和10日均线的值

22c02fa4272b25ef3dca538851f2ab3d.png

直接用rolling函数计算均线值,其实也可以用talib计算(这个我们会放在进阶教程里面讲),接着我们来写一下信号:

e495cf090dbe376ed79f76223942774d.png

首先我们把策略信号Signal 初始化为空值

做多需要有2个条件:

650a9e80f90794307de91702e621d1f7.png

比如上图,红色表示5日均线快线,蓝色表示10日均线 慢线

当天的5日快线大于10日慢线的时候(表示股价开始上行),同时我们要确认前一天的K线 5日快线低于10日慢线的,满足这2个条件,我们才能认为是要开仓的信号,然后我们在隔天的开盘下单买入,或者晚上用前一天的收盘价买入。

在量化领域 习惯用long 表示多头,即买入。

平仓也需要2个条件:

7204e012d293c76f7e65466316faa435.png

上图,红色表示5日均线快线,蓝色表示10日均线 慢线

当天的5日快线低于10日慢线的时候(表示股价开始下行),同时我们要确认前一天的K线 5日快线大于在10慢线的,满足这2个条件,我们才能认为是要平仓的信号,然后我们在隔天的开盘下单平仓,或者晚上用前一天的收盘价平。

在量化领域 习惯用short 表示空头,即卖出,运算上面的代码,我们打印出来看一下信号:

a6f3a731de9cba143f7b7d730cc843e5.png

1). 特锐德  2023-11-30  19.17  18.990000  19.015000     NaN221  特锐德  2023-12-01  18.93  19.034000  18.990000     1.0

解读一下,12月1号 ma-fast 19.034 大于 ma-slow 18.99 ,而前一天 11月30号 ma-fast 18.99 是小于ma-slow 19.01 ,所以当天收盘之后,我们的策略发出了1的信号,就是做多;

2). 特锐德  2023-12-05  18.63  18.944000  18.903000     NaN224  特锐德  2023-12-06  18.73  18.860000  18.903000     0.0

解读一下,12月6号ma-fast 18.73 小于 ma-slow 18.90,而前一天 12月5号 ma-fast 18.63 大于 ma-slow 18.94,所以当天收盘之后,我们的策略发出信号0,即平仓

3.对信号进行处理

大家有没有发现有很多信号,都是NaN 就是空值,非常不利于我们观察,我们看一下前20行的内容:

a6338d7f60fa61a40571084b1a35d7d5.png

这个信号从1月3号到1月9号都是空值NaN,从1月9号之后应该是开多了,但是也是空值,到了2-22应该平仓了,平仓之后的日子应该是空仓,但是也是空值NaN。所以这个信号是需要处理的。

0a776cca7e4a8bbca89d909d588b36b5.png

我们打印看一下结果:

2cded9f38e44abc45384bb6b090335bb.png

我们把Signal这一列做了空值向前填充,fillna(method='ffill'),就是比如1月10号之后,开仓了,那么之后每天应该都是1,除非遇到新的信号出现,否则应该跟前面信号保持一致。然后最开始几天1月3号到9号直接用0填充。

这个就是基本的双均线策略,双均线算是所有策略的一个基本入门款,非常适合完全不懂量化的同学来研究,我们后面很多复杂的内容,也是基于这个策略展开的,大家务必要好好掌握。我们下一篇见!

4f167a2cdfb419c7b8ccffb9cea248ae.jpeg

最后推荐一下我们团队写的量化小册的内容,45篇内容!从Python安装,入门,数据分析,爬取股票基金的历史+实时数据,以及如何写一个简单量化策略,策略回测,如何看资金曲线统统都有介绍!非常超值!

欢迎订阅:原价299 早鸟价2杯咖啡钱,即可永久阅读。满400人又要涨价了,现在的价格非常非常低,只要2杯奶茶,就可以终身订阅+课程源码,还有永久陪伴群。48小时无理由退款,放心食用!

8c34a4e26dbff74944372221f6245b10.png

推荐阅读:
量化: 如何用Python爬取创业板历史+实时股票数据!|实战股票分析篇利用Pandas 9招挖掘五粮液股价!|实战股票数据分析篇 Pandas滚动操作 |量化股票第一步,用Python画股票K线,双均线图,可视化你的股票数据!|如何用Python爬取全部800多只ETF基金数据!|如何用Python写一个双均线策略 |如何用Python开发一个多策略机器人!上篇!|Python量化系列-用布林策略买五粮液能赚多少钱?|只要4秒钟!用Python 获取上证指数34年的历史日线数据!
入门: 最全的零基础学Python的问题  | 零基础学了8个月的Python  | 实战项目 |学Python就是这条捷径

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

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

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

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

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值