python-MACD指标编写

简介: python-MACD指标编写

注:最近写指标,采用pandas重新编写了macd指标的算法,主要是调用ewm这个指数平滑的函数,效率大大提高。

def cal_macd_system(data,short_,long_,m):
    '''
    data是包含高开低收成交量的标准dataframe
    short_,long_,m分别是macd的三个参数
    返回值是包含原始数据和diff,dea,macd三个列的dataframe
    '''
    data['diff']=data['close'].ewm(adjust=False,alpha=2/(short_+1),ignore_na=True).mean()-\
                data['close'].ewm(adjust=False,alpha=2/(long_+1),ignore_na=True).mean()
    data['dea']=data['diff'].ewm(adjust=False,alpha=2/(m+1),ignore_na=True).mean()
    data['macd']=2*(data['diff']-data['dea'])
    return data



两种算法的结果不变,但是第一种的效率大大大的提高。


以后指标系列文章所用的示范数据都是来源于网易财经-000001上证指数,2010年到2017年5月数据

###经热心朋友casinozyz指正,该macd算法修改为如下,稍后会做一个更有效率的版本.(以前吹得牛逼2019-01-04已经实现)

import pandas as pd
import numpy as np
import datetime
import time
#获取数据
df=pd.read_csv('C:/Users/HXWD/Desktop/000001.csv',encoding='gbk')
df.columns=['date','code','name','close','high','low','open','preclose',
'change','change_per','volume','amt']
df=df[['date','open','high','low','close','volume','amt']]
df.head()
def get_EMA(df,N):
    for i in range(len(df)):
        if i==0:
            df.ix[i,'ema']=df.ix[i,'close']
        if i>0:
            df.ix[i,'ema']=(2*df.ix[i,'close']+(N-1)*df.ix[i-1,'ema'])/(N+1)
    ema=list(df['ema'])
    return ema
def get_MACD(df,short=12,long=26,M=9):
    a=get_EMA(df,short)
    b=get_EMA(df,long)
    df['diff']=pd.Series(a)-pd.Series(b)
    #print(df['diff'])
    for i in range(len(df)):
        if i==0:
            df.ix[i,'dea']=df.ix[i,'diff']
        if i>0:
            df.ix[i,'dea']=(2*df.ix[i,'diff']+(M-1)*df.ix[i-1,'dea'])/(M+1)
    df['macd']=2*(df['diff']-df['dea'])
    return df
get_MACD(df,12,26,9)
df



目录
相关文章
|
6月前
|
机器学习/深度学习 算法 Python
【Python机器学习】分类算法任务、分类模型评价指标详解(图文解释)
【Python机器学习】分类算法任务、分类模型评价指标详解(图文解释)
194 0
|
3月前
|
数据采集 算法 数据可视化
基于Python的k-means聚类分析算法的实现与应用,可以用在电商评论、招聘信息等各个领域的文本聚类及指标聚类,效果很好
本文介绍了基于Python实现的k-means聚类分析算法,并通过微博考研话题的数据清洗、聚类数量评估、聚类分析实现与结果可视化等步骤,展示了该算法在文本聚类领域的应用效果。
113 1
|
1月前
|
机器学习/深度学习 数据挖掘 Serverless
手把手教你全面评估机器学习模型性能:从选择正确评价指标到使用Python与Scikit-learn进行实战演练的详细指南
【10月更文挑战第10天】评估机器学习模型性能是开发流程的关键,涉及准确性、可解释性、运行速度等多方面考量。不同任务(如分类、回归)采用不同评价指标,如准确率、F1分数、MSE等。示例代码展示了使用Scikit-learn库评估逻辑回归模型的过程,包括数据准备、模型训练、性能评估及交叉验证。
75 1
|
6月前
|
Serverless 云计算 Python
基本技术指标 Python 实现(1)
基本技术指标 Python 实现
277 3
|
6月前
|
Python
基本技术指标 Python 实现(2)
基本技术指标 Python 实现
165 1
|
6月前
|
机器学习/深度学习 算法 Python
【Python机器学习专栏】Python中的机器学习评估与度量指标
【4月更文挑战第30天】本文介绍了Python中机器学习模型的评估方法和度量指标。主要包括留出法、交叉验证和自助法等评估方法,以及准确率、精确率、召回率、F1分数、AUC-ROC曲线、MSE、RMSE和R方值等度量指标。选择合适的评估标准对于理解模型性能和适应不同任务至关重要。
199 0
|
6月前
|
Python
基本技术指标 Python 实现(4)
基本技术指标 Python 实现
96 0
|
6月前
|
项目管理 Python
基本技术指标 Python 实现(3)
基本技术指标 Python 实现
158 0
|
6月前
|
数据挖掘 Python
python数据分析——业务指标量化
业务指标量化是衡量企业运营效果的重要手段,通过具体的数据和数值,可以更加直观地了解企业的运营状况,为企业决策提供有力的数据支持。
146 1
|
6月前
|
监控 搜索推荐 数据挖掘
python数据分析——业务指标分析
业务指标分析是企业运营中不可或缺的一环,通过对各项关键指标的深入剖析,我们能够更好地了解企业的运营状况,发现潜在问题,进而制定相应的策略来优化业务流程、提升经营效率。 在业务指标分析中,我们首先要明确分析的目的和范围。是为了评估整体业务健康状况,还是针对某一具体环节进行优化?明确了目的后,我们需要收集相关的数据,这些数据可能来源于不同的业务系统和数据库,因此数据的整合和清洗也是分析过程中的重要步骤。 接下来,我们要选择合适的分析方法。比如,对于销售数据,我们可以采用时间序列分析来观察销售趋势;对于用户行为数据,我们可以使用用户画像和路径分析来洞察用户需求和行为习惯。
204 1
下一篇
无影云桌面