talib实现的MACD
talib实现的MACD与国内软件厂商实现的不太一致,需要自行定义和调整。提供通达信、同花顺 MACD Talib实现。
同花顺和通达信等软件中的SMA,是KDJ_CN和RSI_CN的基础依赖
注意:使用前引用talib
首先实现SMA,然后才是其它MACD、KDJ等:
-
import talib
-
def SMA_CN(close, timeperiod):
-
close = np.nan_to_num(close)
-
return reduce(lambda x, y: ((timeperiod - 1) * x + y) / timeperiod, close)
-
import talib
-
def MACD_CN(close, fastperiod, slowperiod, signalperiod):
-
macdDIFF, macdDEA, macd = talib.MACDEXT(close, fastperiod=fastperiod, fastmatype=1,slowperiod=slowperiod, slowmatype=1, signalperiod=signalperiod, signalmatype=1)
-
macd = macd * 2
-
return macdDIFF, macdDEA, macd
-
import talib
-
def RSI_CN(close, timeperiod) :
-
diff = map(lambda x, y : x - y, close[1:], close[:-1])
-
diffGt0 = map(lambda x : 0 if x < 0 else x, diff)
-
diffABS = map(lambda x : abs(x), diff)
-
diff = np.array(diff)
-
diffGt0 = np.array(diffGt0)
-
diffABS = np.array(diffABS)
-
diff = np.append(diff[0], diff)
-
diffGt0 = np.append(diffGt0[0], diffGt0)
-
diffABS = np.append(diffABS[0], diffABS)
-
rsi = map(lambda x : SMA_CN(diffGt0[:x], timeperiod) / SMA_CN(diffABS[:x], timeperiod) * 100, range(1, len(diffGt0) + 1) )
-
-
return np.array(rsi)
-
import talib
-
def KDJ_CN(high, low, close, fastk_period, slowk_period, fastd_period):
-
kValue, dValue = talib.STOCHF(high, low, close, fastk_period, fastd_period=1, fastd_matype=0)
-
-
kValue = np.array(map(lambda x : SMA_CN(kValue[:x], slowk_period), range(1, len(kValue) + 1)))
-
dValue = np.array(map(lambda x : SMA_CN(kValue[:x], fastd_period), range(1, len(kValue) + 1)))
-
-
jValue = 3 * kValue - 2 * dValue
-
-
func = lambda arr : np.array([0 if x < 0 else (100 if x > 100 else x) for x in arr])
-
-
kValue = func(kValue)
-
dValue = func(dValue)
-
jValue = func(jValue)
-
return kValue, dValue, jValue
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!