Impulse MACD python实现笔记

#简单理解为将最高价和最低价分别平滑后,如果src价格在介于其中就为0,当价格向上或者向下突破才认为有波动

import talib 
import numpy as np 
def get_inpulse_macd(highs, lows, closes,lengthMA = 34,lengthSignal = 9):
    def calc_zlema_once(src, length):  #寻找突破动能,
        ema1 = talib.EMA(src, length)
        ema2 = talib.EMA(ema1, length)
        ds = ema1 - ema2
        return ema1 + ds
    src = (highs + lows + closes) / 3  #
    mis = calc_zlema_once(src,lengthMA)
    his = talib.SMA(src[:lengthMA],lengthMA)
    los = talib.SMA(src[:lengthMA],lengthMA)
    his_rest = np.zeros(len(src) - lengthMA)
    los_rest = np.zeros(len(src) - lengthMA)
    his = np.concatenate((his, his_rest),axis=0)
    los = np.concatenate((los, los_rest),axis=0)
    mds = np.zeros(len(src))
    for i in range(lengthMA, len(src)):  #最高最低价平滑处理,SMMA 也可以认为是EMA,这俩公式貌似没有啥区别吧
        his[i] =  (his[i-1] * (lengthMA - 1 ) + highs[i] ) /lengthMA
        los[i] =  (los[i-1] * (lengthMA - 1 ) + lows[i] )  /lengthMA
    m_h = mis - his
    m_o = mis - los
    mds[mis>his] = m_h[mis>his]
    mds[mis<los] = m_o[mis<los]
    sbs = talib.SMA(mds, lengthSignal)
    shs = mds - sbs
    return shs, mds

为开源贡献力量

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值