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

766cd6275afe626d3db860017e9d7b72.png

(永久免费,扫码加入)

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

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

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

1.什么是双均线策略

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

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

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

策略的核心原则:

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

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

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

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

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

18bceed659b72d7a49bc532f06aae2b8.png

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

a4a26fc8a7b0bfe43d7408dee33df260.png

计算5日和10日均线的值

039b085bbc94214b5ac5bd0d8494281b.png

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

18f7bac42766b25e94c2fd0ebdb0bfaf.png

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

做多需要有2个条件:

1a67827c8ba62411afca0e5504bed00e.png

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

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

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

平仓也需要2个条件:

1c9cfd4db0e7c0f23b677e494c51b5ce.png

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

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

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

fac3787c06f6fa3c7aa5672e358ed586.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行的内容:

740a0574fe1335fb2d1129968d05237b.png

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

f65176dbfbb751741d596195ebe6f7a3.png

我们打印看一下结果:

0c283f4da9324fab85f4f239b5b8937a.png

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

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


最后推荐一下我的小册:

从小白的角度浅浅的介绍一下从零基础python入门,pandas库的使用,股票数据的基本分析,可视化股票分析,以及如何写一个简单的量化策略,如何去回测你的策略,计算仓位和资金曲线,如何优化你的策略。同时还涉及股票数据的爬虫,基金的爬虫等内容。同时也是对自己量化的反思和感悟,更好的鞭策自己提升功力!!!

c905019a4a618ff1afbba6b67140670f.png

欢迎订阅我们的小册 👉:(小白零基础用Python量化股票分析小册),原价199,现在早鸟价39,满100人涨10元。订阅之后觉得不好,48小时内无理由退款,放心食用!

ed2190ffce6c9527162db42443cc1549.png

(扫码订阅,永久买断)

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

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

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

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

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/224047.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【English】水果单词小小汇总~~

废物研究生,只要不搞科研干啥都是开心的,啊啊啊啊啊科研要命。作为一个水果怪(每天不吃水果就要命的那种哈哈哈哈)突然发现竟然就知道什么apple、banana、orange!惭愧惭愧,正好兴致正浓,来整理一…

Python 爬虫之下载视频(四)

爬取某投币视频平台的小视频 文章目录 爬取某投币视频平台的小视频前言一、基本内容二、基本思路三、代码编写1.引入库2.设置手机模式3.跳过手动点击等操作4.获取视频下载地址5.获取视频标题6.下载保存 总结 前言 这篇用来记录一下如何爬取这个平台的视频,比如一些…

NUAA-云计算-考试

19级期末 问题 答案: md格式 自己想办法看 # 随堂测验#### 一、请简述GFS 的系统架构和特点。**1. 系统架构**- GFS将整个系统节点分为三类角色:- Client(客户端):Client是GFS提供给应用程序的访问接口,以库文件的…

C语言如何生成随机数以及设置随机数的范围。(超详细)

文章目录 前言一、随机数的生成1.rand函数2.srand函数3.time函数4.生成随机数的代码如下: 二、设置随机数的范围总结 前言 博主将会这篇文章介绍c语言如何生成随机数以及设置随机数的范围。创作不易请大家点点赞,点点关注。 一、随机数的生成 1.rand函…

Ubuntu20.04纯命令配置PCL(点云库)

Ubuntu20.04纯命令配置PCL(点云库) 最近在学习点云库(PCL)的使用,第一步就是在自己的电脑安装配置PCL。 首先,对于ubuntu 16.04以上版本,可以直接使用命令进行安装,新建好一个文件夹…

IDEA中Git的常用使用方式

IDEA中Git的常用使用方式 1.初次拉取远程仓库项目代码到本地2.初次提交本地项目代码到远程仓库新分支方式一:提交时把.git目录删除掉,不保留以往修改记录方式二:提交时不删除.git目录,保留以往修改记录 3.日常拉取、提交、推送代码…

基于Hexo+GitHub Pages 的个人博客搭建

基于HexoGitHub Pages 的个人博客搭建 步骤一:安装 Node.js 和 Git步骤二:创建Github Pages 仓库步骤二:安装 Hexo步骤三:创建 Hexo 项目步骤四:配置 Hexo步骤五:创建新文章步骤六:生成静态文件…

vscode | python | remote-SSH | Debug 配置 + CLIP4Clip实验记录

安装Extension 本地安装Remote-SSH、python 远程服务器上安装Python 难点:主机和远程服务器上安装Python扩展失败,可能是网络、代理等原因导致解决方法: 主机在官方网站下载Python扩展:https://marketplace.visualstudio.com/it…

AI绘画训练一个扩散模型-上集

介绍 AI绘画,其中最常见方案基于扩散模型,Stable Diffusion 在此基础上,增加了 VAE 模块和 CLIP 模块,本文搞了一个测试Demo,分为上下两集,第一集是denoising_diffusion_pytorch ,第二集是diff…

数据库开发之图形化工具以及表操作的详细解析

2.3 图形化工具 2.3.1 介绍 前面我们讲解了DDL中关于数据库操作的SQL语句,在我们编写这些SQL时,都是在命令行当中完成的。大家在练习的时候应该也感受到了,在命令行当中来敲这些SQL语句很不方便,主要的原因有以下 3 点&#xff…

截断整型提升算数转换

文章目录 🚀前言🚀截断🚀整型提升✈️整型提升是怎样的 🚀算术转换 🚀前言 大家好啊!这里阿辉补一下前面操作符遗漏的地方——截断、整型提升和算数转换 看这一篇要先会前面阿辉讲的数据的存储否则可能看不…

Dijkstra(迪杰斯特拉)算法总结

知识概览 Dijkstra算法适用于解决所有边权都是正数的最短路问题。Dijkstra算法分为朴素的Dijkstra算法和堆优化版的Dijkstra算法。朴素的Dijkstra算法时间复杂度为,适用于稠密图。堆优化版的Dijkstra算法时间复杂度为,适用于稀疏图。稠密图的边数m和是一…

React学习计划-React16--React基础(五)脚手架创建项目、todoList案例、配置代理、消息订阅与发布

一、使用脚手架create-react-app创建项目 react脚手架 xxx脚手架:用来帮助程序员快速创建一个基于xxx库的模板项目 包含了所有需要的配置(语法检查、jsx编译、devServe…)下载好了所有相关的依赖可以直接运行一个简单的效果 react提供了一个…

产品设计 之 创建完美产品需求文档的4个核心要点

客户描述他们想要的产品和最终交付的产品之间的误解一般很大,设计者和客户的角度不同,理解的程度也不同,就需要一个统一的交流中介。这里包含PRD。 为了说明理解误差的问题。下面这张有趣的图画可以精准阐述。 第一张图片展示了客户所描述…

Matlab仿真OOK、2FSK、2PSK、QPSK、4QAM在加性高斯白噪声信道中的误码率与归一化信噪比的关系

本文为学习所用,严禁转载。 本文参考链接 https://zhuanlan.zhihu.com/p/667382398 QPSK代码及高斯白噪声如何产生 https://ww2.mathworks.cn/help/signal/ref/butter.html 滤波器 https://www.python100.com/html/4LEF79KQK398.html 低通滤波器 本实验使用matlab仿…

【linux提权】利用setuid进行简单提权

首先先来了解一下setuid漏洞: SUID (Set UID)是Linux中的一种特殊权限,其功能为用户运行某个程序时,如果该程序有SUID权限,那么程序运行为进程时,进程的属主不是发起者,而是程序文件所属的属主。但是SUID权限的设置只…

「微服务模式」七种微服务反模式

什么是微服务 流行语经常为进化的概念提供背景,并且需要一个良好的“标签”来促进对话。微服务是一个新的“标签”,它定义了我个人一直在发现和使用的领域。文章和会议描述了一些事情,我慢慢意识到,过去几年我一直在发展自己的个人…

2023航天推进理论基础考试划重点(W老师)-液体火箭发动机1

适用于期末周求生欲满满的西北工业大学学生。 1、液体火箭发动机的基本组成及功能是什么? 推力室组件、推进剂供应系统、阀门与调节器、发动机总装元件等组成。 2、液体火箭发动机的分类和应用是什么?3、液体火箭发动机系统、分系统的概念是什么&…

交友系统设计:哪种地理空间邻近算法更快?

小熊学Java:https://javaxiaobear.cn 交友与婚恋是人们最基本的需求之一。随着互联网时代的不断发展,移动社交软件已经成为了人们生活中必不可少的一部分。然而,熟人社交并不能完全满足年轻人的社交与情感需求,于是陌生人交友平台…

vue3(六)-基础入门之自定义组件与插槽、ref通信

一、全局组件 html: <div id"app"><mytemplace></mytemplace> </div>javascript: <script>const { createApp } Vueconst app createApp({})app.component(mytemplace, {template: <div><button>返回</button>…