talib实现与通达信、同花顺一致的MACD、KDJ指标

本文详细介绍了如何使用Talib库在Python中调整通达信和同花顺风格的MACD、SMA和KDJ技术指标,并提供了对应的代码示例。适合理解和定制技术指标的开发者参考。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

### 同花顺缠论指标的使用方法实现方式 #### 1. 缠论指标简介 缠论是一种基于分型、笔、线段等概念的技术分析理论,广泛应用于股票市场的趋势判断买卖信号捕捉。在同花顺软件中,可以通过内置功能或者自定义编写的方式实现缠论指标的应用。 #### 2. 使用方法 在同花顺软件中,用户可以直接调用已有的技术指标模块,也可以通过编写公式脚本来实现个性化需求。以下是具体的操作说明: - **内置功能** 如果同花顺已经提供了默认的缠论指标,则可以在K线图界面右侧的功能栏找到对应的选项并启用[^1]。通常情况下,这类指标会显示中枢区间以及买卖点提示。 - **自定义公式** 对于更复杂的场景,可以利用同花顺支持的公式编辑器来自定义缠论指标逻辑。这需要熟悉其特有的语法结构,并结合具体的算法设计完成开发工作[^3]。 #### 3. Python 实现代码示例 虽然原生环境可能不完全依赖外部编程语言处理数据流,但如果想借助第三方库如 TA-Lib 来模拟整个过程的话,下面给出了一种通用解决方案供参考学习之用: ```python import talib as ta import numpy as np def calculate_zhongshu(high, low, close): """ 计算中枢 """ high = np.array(high) low = np.array(low) close = np.array(close) ma_high = ta.MA(high, timeperiod=20) # 高位均线 ma_low = ta.MA(low, timeperiod=20) # 低位均线 zhongshu_upper = (ma_high + ma_low)/2 * 1.05 # 上轨放大系数调整 zhongshu_lower = (ma_high + ma_low)/2 * 0.95 # 下轨缩小系数调整 return zhongshu_upper, zhongshu_lower if __name__ == "__main__": highs = [random.uniform(90, 110) for _ in range(100)] # 假定随机生成价格序列 lows = [random.uniform(80, 100) for _ in range(100)] closes = [(highs[i]+lows[i])/2 for i in range(len(lows))] upper_band, lower_band = calculate_zhongshu(highs, lows, closes) print("Upper Band:",upper_band[-1],"Lower Band:",lower_band[-1]) ``` 此段程序主要演示了如何运用简单的移动平均模型构建近似意义上的“中枢”区域边界值计算流程[^1]。 #### 4. 注意事项 当尝试引入新的插件或扩展包时,请务必确认当前运行环境中具备相应权限支持条件再执行安装部署动作。另外需要注意的是某些特定版本间的兼容性问题可能会引发不可预期的结果因此建议优先选用官方推荐资源链接获取最新稳定版文件进行测试验证[^2]。
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值