繁簡切換您正在訪問的是FX168財經網,本網站所提供的內容及信息均遵守中華人民共和國香港特別行政區當地法律法規。

FX168财经网>人物频道>帖子

量化交易(JoinQuant数据)-MACD/EMA/DIFF/DEA算法-Python代码实现

作者/daddll 2019-08-20 16:00 0 来源: FX168财经网人物频道
import talib
import datetime
import jqdata
import numpy as np
import matplotlib.pyplot as plt
import matplotlib.finance as mpf
'''
默认股票代码格式(000915)转换为聚宽代码格式(000915.XSHG)
author:aaron-clark-aic 18/07/2018
'''
def standardStocks(stocks):
    _stocks = list(get_all_securities('stock').index)
    _standardStocks = []
    for i in stocks:
        _standardStocks =_standardStocks+[code for code in _stocks if code.upper().startswith(i)]
    return _standardStocks
'''
EMA_today=α * Price_today + ( 1 - α ) * EMA_yesterday
α=2/(N+1)
算法需要特别注意边界的转折处,前n的计算和n+1完全不同

author:aaron-clark-aic 23/07/2018
'''
def ema(c_list,n=12):
    y_list=[]
    _n = 1    
    for c in c_list: 
        if c == c_list[0]:
            y = c
        elif _n<n:
            y= c*2/(_n+1) + (1- 2/(_n+1))*y_list[-1] 
        else:
            y=c*2/(n+1)+(1-2/(n+1))*y_list[-1]
        y_list.append(y)
        _n = _n+1        
    return y_list

'''
DIFF线 (Difference)收盘价短期、长期指数平滑移动平均线间的差

author:aaron_clark_aic 23/07/2018
'''
def diff(c_list,short=12,long=26):
    _diff = list(map(lambda x:x[0]-x[1],zip(ema(c_list,short),ema(c_list,long))))
    return _diff

'''
DEA线 (Difference Exponential Average)DIFF线的M日指数平滑移动平均线

author:aaron_clark_aic 23/07/2018
'''
def dea(c_list,m=9):
    return ema(diff(c_list),n=m)

'''
MACD线 DIFF线与DEA线的差,柱状线

author:aaron_clark_aic 23/07/2018
'''
def bar(c_list):
    _bar = list(map(lambda x:2*(x[0]-x[1]),zip(diff(c_list),dea(c_list))))
    return _bar

'''
没有绘制蜡烛图部分,可以叠加绘制
MACD线也即是在使用MACD指标时在图表上看到的MACD柱状线,常用于分析股票的买入、卖出时机。当MACD线(macd柱)位于0坐标上沿,
即由负变正时为买入时机;当MACD线(macd柱)位于0坐标下沿,即由正变负时为卖出时机。DIF黄色,DEA蓝色。

author:aaron_clark_aic 23/07/2018
'''
def macd(security=standardStocks(['000915']),start_date=(datetime.date.today()-datetime.timedelta(days=200)),end_date=datetime.date.today()):
    _data = get_price(security = security,start_date=start_date,end_date=end_date,fields=['close'])
    _close = np.hstack(_data['close'].values)
    _diff = diff(_close)
    _dea = dea(_close)
    _bar = bar(_close)
    plt.plot(range(len(_diff)),_diff,"y",lw=0.5)
    plt.plot(range(len(_dea)),_dea,"b",lw=0.5)
    plt.bar(range(len(_bar)),_bar,0.1)
    plt.show()
macd()
分享到:
举报财经168客户端下载

全部回复

0/140

投稿 您想发表你的观点和看法?

更多人气分析师

  • 张亦巧

    人气2144文章4145粉丝45

    暂无个人简介信息

  • 梁孟梵

    人气2152文章3177粉丝39

    qq:2294906466 了解群指导添加微信mfmacd

  • 指导老师

    人气1856文章4423粉丝52

    暂无个人简介信息

  • 李冉晴

    人气2296文章3821粉丝34

    李冉晴,专业现贷实盘分析师。

  • 刘钥钥1

    人气2016文章3119粉丝34

    专业从事现货黄金、现货白银模似实盘操作分析指导

  • 张迎妤

    人气1896文章3305粉丝34

    个人专注于行情技术分析,消息面解读剖析,给予您第一时间方向...

  • 金泰铬J

    人气2320文章3925粉丝51

    投资问答解咨询金泰铬V/信tgtg67即可获取每日的实时资讯、行情...

  • 金算盘

    人气2696文章7761粉丝125

    高级分析师,混过名校,厮杀于股市和期货、证券市场多年,专注...

  • 金帝财神

    人气4728文章8329粉丝118

    本文由资深分析师金帝财神微信:934295330,指导黄金,白银,...