Python实现某只股票的MACD、KDJ指标的单双金叉点判定

目录

  • 金叉理论介绍
  • 数据获取
  • 数据分析代码

金叉理论介绍

在股票K线图中,短期的收盘价均线向上穿越长期均线即为金叉,但如果长期均线向下或变缓,同时短期均线向上穿越就不能称之为金叉。
对于MACD指标,若差离值线由下向上突破移动平均线,即DIF值前一天小于DEA值,当天大于DEA值,可视为金叉;对于KDJ指标,若K线由下向上突破D线,即K值前一天小于D值,当天大于J值,可视为金叉。

参考链接:baike.baidu.com/item/%E5%9D%87%E7%BA%BF%E9%87%91%E5%8F%89
zhuanlan.zhihu.com/p/110334826#

数据获取

选取某一只股票,在一些常见的数据库(如锐思数据库)中下载该股票各交易日的最高价、最低价、收盘价数据(如下图所示),整理成csv格式文件

Python实现某只股票的MACD、KDJ指标的单双金叉点判定_第1张图片

数据分析代码

指标计算代码参考了这位博主首页的两篇相关文章
https://blog.csdn.net/yifengdongying?type=blog

import pandas as pd

'''---- 读入源数据 ----'''
data=pd.read_csv('sourceData.csv',sep=',',encoding='unicode_escape',header='infer')#此处文件名需要根据自己的路径进行修改

'''--- MACD指标计算 ---'''
data['ema12']=data['Clpr'].ewm(span=12).mean()
data['ema26']=data['Clpr'].ewm(span=26).mean()
data['DIFF']=data['ema12']-data['ema26']
data['DEA']=data['DIFF'].ewm(span=9).mean()
data['MACD']=2*(data['DIFF']-data['DEA'])

'''--- KDJ指标计算 ---'''
data['low9']=data['Lopr'].rolling(9).min()
data['high9']=data['Hipr'].rolling(9).max()
data['rsv']=(data['Clpr']-data['low9'])/(data['high9']-data['low9'])
data['K']=data['rsv'].ewm(com=2).mean()
data['D']=data['K'].ewm(com=2).mean()
data['J']=3.0*data['K']-2.0*data['D']

'''--- 金叉情况判断 ---'''
# 创建金叉情况标记列
data['MACD_jincha']='0'
data['KDJ_jincha']='0'
data['MACD_KDJ_jincha']='None'
for i in range(9,len(data)):
    # 从第9条数据开始遍历(前一天开始有kdj值,保持统一)
    # 如果DIFF线上穿DEA线,MACD指标金叉    
    if data['DIFF'][i-1]<data['DEA'][i-1] and data['DIFF'][i]>data['DEA'][i]:
        data['MACD_jincha'][i]='1'
for j in range(9,len(data)):     
    # 从第9条数据开始遍历(前一天开始有kdj值)
    # 如果K线上穿D线,KDJ指标金叉      
    if data['K'][j-1]<data['D'][j-1] and data['K'][j]>data['D'][j]:
        data['KDJ_jincha'][j]='1'
for k in range(9,len(data)):
    # 优先判断双指标金叉,其次判断单指标金叉
    if data['MACD_jincha'][k]=='1' and data['KDJ_jincha'][k]=='1':
        print(data['Date'][k]+'双指标金叉')
        data['MACD_KDJ_jincha'][k]='Double'     
    elif data['MACD_jincha'][k]=='1' or data['KDJ_jincha'][k]=='1':
        #print(data['Date'][k]+'单指标金叉')
        data['MACD_KDJ_jincha'][k]='Single'

#导出结果数据
data.to_csv('resultData.csv') 

结果示例如下。经过在股票软件上观察日K线图,可以做数据分析结果的进一步检验。
Python实现某只股票的MACD、KDJ指标的单双金叉点判定_第2张图片

你可能感兴趣的:(Python,python,金叉点)