Python股票双均线策略

使用Python的第三方模块 pandas , matplotlibtushare (获取股票数据的接口)来绘制双均线并找出金叉与死叉。

双移动平均线_百度百科

金叉_百度百科

死亡交叉(股市术语)_百度百科

  • *首先绘制双均线我们要先得到股票的数据,示例中我用code=600006(东风汽车)的股票代码来演示操作过程。

首先对获取的数据进行一些处理,具体为:

  1. 改变date列的数据类型
  2. 删除没有用的code列

如果想的话,还可以把数据持久化存储

df=ts.get_k_data(code='600006',start='2018-01-01') #通过接口获取茅台股票数据
df.drop(labels='code',axis=1,inplace=True) #可以删除没有用的列
df.to_csv('maotai.csv')  #可将数据进行持久化存储
df=pd.read_csv('maotai.csv')  #使用pandas模块读取数据
df['date']=pd.to_datetime(df['date']) #更改date列的数据类型
df.set_index('date',inplace=True) #把行索引设置为date列,且直接在源数据上进行改动

绘制双均线(这里以5天均线和30天均线为例):

ma5=df['close'].rolling(5).mean()   #求5日均线
ma30=df['close'].rolling(30).mean() #30日均线
plt.plot(ma5[30:800])
plt.plot(ma30[30:800]) #参数可以自己设定

Python股票双均线策略
  • *求2018年至今该股票的金叉与死叉

先对数据进行切片操作(因为长均线为30天,因此我们的数据前30个值为空,需要删除)

ma5=ma5[30:]
ma30=ma30[30:]
df=df[30:]

判断金叉与死叉:

s1=ma5ma30
death=s1 & s2.shift(1) #判定死叉的条件
death_date=df.loc[death].index #死叉的所有时间
golden=~(s1|s2.shift()) #判定金叉的条件
golden_date=df.loc[golden].index #金叉的所有时间

s1是我们判断ma5小于ma30的情况,返回布尔类型的数据

s2是ma5大于ma30的情况,同样也是返回布尔类型的数据

判断死叉:

Python股票双均线策略

通过图片我们可以看出把s2整体向下移动一格,他与s1重叠的True即使我们想要得到的死叉点。

即:death=s1 & s2.shift(1)

判断金叉:

Python股票双均线策略

同样我们可以判断出:s1 | s2.shift(1)得到的False即使我们想要得到的金叉点,但是由于相关判断条件的因素,我们需要将True与False进行反转,即:golden=~(s1|s2.shift())

如此我们便得到了金叉与死叉。

完整代码如下:

-*- coding: utf-8 -*-
import pandas as pd
import tushare as ts
import matplotlib.pyplot as plt

df=ts.get_k_data(code='600006',start='2018-01-01') #通过接口获取茅台股票数据
df.drop(labels='code',axis=1,inplace=True) #可以删除没有用的列
df.to_csv('maotai.csv')  #可将数据进行持久化存储
df=pd.read_csv('maotai.csv')  #使用pandas模块读取数据
df['date']=pd.to_datetime(df['date']) #更改date列的数据类型
df.set_index('date',inplace=True) #把行索引设置为date列,且直接在源数据上进行改动

'''绘制5日均线图与30日均线图来示范'''

ma5=df['close'].rolling(5).mean()   #求5日均线
ma30=df['close'].rolling(30).mean() #30日均线
plt.plot(ma5[30:800])
plt.plot(ma30[30:800]) #参数可以自己设定

"""求2018年至今该股票的金叉与死叉"""
'''因为我们长均线是30日均线所以我们要先对df,ma5,ma30进行切片操作'''
ma5=ma5[30:]
ma30=ma30[30:]
df=df[30:]

s1=ma5ma30
death=s1 & s2.shift(1) #判定死叉的条件
death_date=df.loc[death].index #死叉的所有时间
golden=~(s1|s2.shift()) #判定金叉的条件
golden_date=df.loc[golden].index #金叉的所有时间
if __name__=='__main__':
    print(death_date)
    print(golden_date)

Original: https://blog.csdn.net/qq_60926106/article/details/125639195
Author: Windy.Zhhh
Title: Python股票双均线策略

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/751470/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 基于CNN网络的轴承故障诊断

    内容参考:《基于卷积神经网络的轴承故障 诊断算法研究》–张伟 代码参考:https://github.com/AaronCosmos/wdcnn_bearning_fault_di…

    Python 2023年8月2日
    075
  • 解决cuda突然不能用了的方法[完美解决]

    一、问题描述 之前配置过一个pytoch的虚拟环境,并且调用cuda也可用,但是在做项目的时候,想下载一些工具包,下载时出现了一些问题,上网解决时候告诉我利用conda updat…

    Python 2023年9月7日
    0189
  • Flask框架web开发(黑马程序员版本)学习笔记

    -00- 初识Flask中文文档:http://docs.jinkan.org/docs/flask/英文文档:http://flask.pocoo.org/docs/0.12/ …

    Python 2023年8月10日
    063
  • 从CTF比赛题看任意文件读取的危害

    最近在CTF_HUB上看到任意文件读取的一道web渗透测试题,详见ctfhub 中web afr-3,突然想到2020年参加网鼎杯白虎组,有个picdown的题目大同小异,手法相似…

    Python 2023年8月15日
    051
  • Django毕业设计题目推荐电影推荐系统

    🍅文末获取联系🍅 目录 一、项目介绍 二、开题报告 三、截图 四、源码获取 一、项目介绍 计算机毕业设计python毕设项目之django电影推荐系统-IT实战课堂_哔哩哔哩_bi…

    Python 2023年8月3日
    065
  • Python自动化——pytest常用插件详解

    前言 Pytest是Python的一种单元测试框架,与unittest相比,使用起来更简洁、效率更高,也是目前大部分使用python编写测试用例的小伙伴们的第一选择了。 除了框架本…

    Python 2023年9月10日
    047
  • 4-03-1 Pandas – 折线图、柱状图、直方图、箱型图

    4.3 Pandas 内置可视化方法 Pandas 本身也提供几个简单的数据可视化图形,可以完成简单的变化-折线图、等级-柱状图、分布-直方图、箱型图、相互关系-散点图、分群-安德…

    Python 2023年8月6日
    094
  • 变量与常量

    1.什么是变量 变量是指可以变化的量,量指的是事物的状态,比如年龄,金钱、身高等等 2.为什么要有变量 为了能够让计算机像人一样记忆某一种事物的状态,并且这个状态是可以发生变化的。…

    Python 2023年11月1日
    066
  • C# 多线程访问之 SemaphoreSlim(信号量)【进阶篇】

    SemaphoreSlim 是对 可同时访问某一共享资源或资源池的线程数加以限制的 Semaphore的轻量替代,也可在等待时间预计很短的情况下用于在 单个进程内等待。 由于 Se…

    Python 2023年10月15日
    056
  • 100行python代码实现细胞自动机(康威生命游戏)

    英国数学家约翰·何顿·康威在1970年发明了细胞自动机,它属于一种仿真程序,通过设定一些基本的规则来模拟和显示的图像的自我进化,看起来颇似生命的出生和繁衍过程,故称为”…

    Python 2023年9月18日
    036
  • NumPy基础

    先贴个链接 numpy官方函数文档 numpy函数文档民间汉化 numpy最大的特点是n维数组对象ndarray,它可以容纳各种类型数据,是最重要的操作对象 创建 以下代码使用ar…

    Python 2023年8月26日
    055
  • 都2022年了,Python Web框架你不会只知道Django和Flask吧?

    写在前面 本文的诞生非常偶然,这两天一个小小小学弟问橡皮擦一个陈年旧问题,Python 基础学完了,想学习一个 Python Web 框架,是先学习 Django 呢,还是学习 F…

    Python 2023年8月9日
    072
  • python用matplot绘制柱形图数据统计班级的平均分

    import csvimport matplotlib.pyplot as plt path = r”score.csv” stream = open(pa…

    Python 2023年6月10日
    093
  • Python pandas库|任凭弱水三千,我只取一瓢饮(6)

    上一篇链接: Python pandas库|任凭弱水三千,我只取一瓢饮(5)_Hann Yang的博客-CSDN博客 DataFrame 类方法(211个,其中包含18个子类、2个…

    Python 2023年10月27日
    032
  • Python Pandas缺失值处理

    在一些数据分析业务中,数据缺失是我们经常遇见的问题,缺失值会导致数据质量的下降,从而影响模型预测的准确性,这对于机器学习和数据挖掘影响尤为严重。因此妥善的处理缺失值能够使模型预测更…

    Python 2023年8月16日
    052
  • linux一切皆文件之块设备文件(四)

    一、知识准备 1、在linux中,一切皆为文件,所有不同种类的类型都被抽象成文件(比如:块设备,socket套接字,pipe队列)2、操作这些不同的类型就像操作文件一样,比如增删改…

    Python 2023年6月10日
    072
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球