通达信,同花顺中国式SMA指标,EMA指数平均,MACD,RSI的最简python代码实现

通达信,同花顺指标中的中国式SMA,EMA的python实现

同花顺,通达信指标计算有个非常重要的函数SMA,和EMA,下面仅仅用python库panadas和numpy的内置函数实现

import numpy as np; import pandas as pd

def EMA(S,N):     #为了精度 S>4*N  EMA至少需要120周期       
    return pd.Series(S).ewm(span=N, adjust=False).mean().values    

def SMA(S, N, M=1):    #中国式的SMA,至少需要120周期才精确        
    K = pd.Series(S).rolling(N).mean()    #先求出平均值
    for i in range(N+1, len(S)):  K[i] = (M * S[i] + (N -M) * K[i-1]) / N  # 因为要取K[i-1],所以 range(N+1, len(S))        
    return K
    
  • EMA实现的很成功,pandas内置函数,速度快,SMA需要循环才能实现,不是最优的解决方案,下面采用pandas的内置函数来实现!
def SMA(S, N, M=1):        # 1)高效的方法
    return pd.Series(S).ewm(alpha=M/N, adjust=True).mean().values  

def SMA(S, N, M=1):        # 2)高效写法2
    return pd.Series(S).ewm(com=N-M, adjust=True).mean().values  

def SMA(S, N, M=1):        # 3)高效写法3
    return pd.Series(S).ewm(span=2N/M-1, adjust=True).mean().values  

def SMA(S, N, M=1):        # 4)python2的pandas没有ewm,用ewma实现
    return pd.ewma(S,com=N-M,adjust=True)  

#以上4种写法得到的数值是一样的
  • 有了这两个关键函数,就可以用它们构造出MACD指标和RSI指标,代码非常简单
def MACD(CLOSE,SHORT=12,LONG=26,M=9):    # EMA的关系,S取120日,和雪球小数点2位相同
    DIF = EMA(CLOSE,SHORT)-EMA(CLOSE,LONG);  
    DEA = EMA(DIF,M);      MACD=(DIF-DEA)*2
    return DIF,DEA,MACD
    
def RSI(CLOSE, N=24):      
    DIF = CLOSE-REF(CLOSE,1) 
    return SMA(MAX(DIF,0), N) / SMA(ABS(DIF), N) * 100   

以上函数实现的macd,rsi指标和雪球,同花顺,通达信等软件对照完全一致

更多的细节已经开源在github上https://github.com/mpquant/MyTT

  • 9
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
MACD(Moving Average Convergence Divergence)和RSI(Relative Strength Index)都是常见的技术分析指标,用于辅助投资者判断股票的买入和卖出时机。而通达信是一种常用的股票行情软件,在其中可以编写代码实现MACD和RSI指标的共振。 在通达信中,可以通过编写公式来计算MACD和RSI指标的数值。首先,我们需要定义并计算MACD指标的数值。MACD指标由两条线组成,即DIF线和DEA线。DIF线为快速线,通过计算12日EMA指数移动平均线)与26日EMA的差值得出。而DEA线为慢速线,通过计算DIF线的9日EMA得出。最后,MACD的数值为DIF线与DEA线的差值。 接下来,我们可以定义并计算RSI指标的数值。RSI指标是一个相对强弱指标,通过计算一段时间内股价涨幅与跌幅的平均值来得出。通常选取14日为计算周期。RSI的数值在0到100之间,超过70时表示股票处于超买状态,低于30时表示股票处于超卖状态。 为了实现MACD和RSI指标的共振,我们可以编写代码来监测两个指标的数值是否同时达到一定的条件。比如,当MACD的数值大于0且RSI的数值小于30时,表示股票处于MACD向上金叉和RSI超卖状态,可能是买入的好时机。当MACD的数值小于0且RSI的数值大于70时,表示股票处于MACD向下死叉和RSI超买状态,可能是卖出的好时机。 通过以上的描述,可以见到MACD和RSI指标共振的代码实现是通过监测两个指标的数值以及相关条件的判断来实现的。在通达信中,可以根据需求自定义代码实现这一功能,帮助投资者更准确地进行买卖决策。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值