Ta

您所在的位置:网站首页 如何看指数均线 Ta

Ta

2024-07-11 21:33| 来源: 网络整理| 查看: 265

笔者阅读Ta-Lib包的C源码后将其计算逻辑重构出python版本,同时给出了fmlabs中对指标的解释和计算公式, 方便技术分析和量化交易的爱好者读懂源码,弄清指标背后的计算逻辑,故尽可能保留C源码中的写法,非特别复杂的计算不使用python的向量化 若有计算逻辑不正确的地方欢迎各位指出,后续可能会将完整项目上传Github

C源码下载地址:https://ta-lib.org/hdr_dw.html

TA_Lib指标目录 1.(交叉指标)Overlap Studies1.1 简单移动平均SMA(简单移动平均)MAVP (可变周期移动平均)TRIMA(三角移动平均) 1.2 指数移动平均EMA(指数移动平均)DEMA(双指数移动平均)TEMA(三指数移动平均)T3(三重双指数移动平均(复杂)) 1.3 加权移动平均WMA(加权移动平均)HT_TRENDLINE(希尔伯特顺时变换) 1.4自适应移动平均MAMA(梅萨自适应移动平均)KAMA(库夫曼自适应移动均线) 1.5 中间价格MIDPRICE ()MIDPOINT() 1.6方向判断BBAND(布林线)SAR - Parabolic SAR(抛物线指标)SAREXT(抛物线指标拓展) 参考

1.(交叉指标)Overlap Studies 1.1 简单移动平均 SMA(简单移动平均)

对close序列按照timeperiod长度进行滑动平均 python函数原型:

real = SMA(close, timeperiod=30)

公式(fmlabs.com):

移动平均线用于平滑数组中的数据,以帮助消除噪音和识别趋势。 简单移动平均线实际上是移动平均线的最简单形式。 每个输出值都是前 n 个值的平均值。 在简单移动平均线中,时间段内的每个值都具有相同的权重,时间段外的值不包括在平均值中。 这使得它对最近的数据变化的响应速度变慢,这对于过滤掉这些变化很有用。

S M A t = ∑ i = t − n t c l o s e [ i ] n SMA_{t} = \frac{{\sum_{i = t - n}^{t}close[i]}}{n} SMAt​=n∑i=t−nt​close[i]​ 源码(来自ta_SMA.c):

while(t 0: STATE = LONG else: STATE = SHORT ###定义SAR和EP的初始值 if STATE == LONG: EP = high[1] SAR_temp[1] = low[0] if startvalue == 0 else startvalue else: EP = low[1] SAR_temp[1] = high[0] if startvalue == 0 else -startvalue ### 定义AFlong 和 AFshort 的初始值 accelerationinitlong = min(accelerationinitlong, accelerationmaxlong) accelerationlong = min(accelerationlong, accelerationmaxlong) accelerationinitshort = min(accelerationinitshort, accelerationmaxshort) accelerationshort = min(accelerationshort, accelerationmaxshort) AFlong = accelerationinitlong AFshort = accelerationinitshort t = 0 while (t= LOW[t]: STATE = SHORT SAR_temp[t] = max(EP, HIGH[t], HIGH[t - 1]) if t > 1 else max(EP, HIGH[t]) ##转向偏移 SAR_temp[t] *= 1 + offsetonreverse ###short状态记录负向值 SAR[t] = -SAR_temp[t] #记录 AFshort = accelerationinitshort EP = LOW[t] SAR_temp[t + 1] = SAR_temp[t] + AFshort * (EP - SAR_temp[t]) SAR_temp[t + 1] = max(SAR_temp[t + 1], HIGH[t], HIGH[t - 1]) \ if t > 1 else max(SAR_temp[t + 1], HIGH[t]) else: ###long状态记录正向值 SAR[t] = SAR_temp[t]#记录 if HIGH[t] > EP: #更新EP,AFlong EP = HIGH[t] AFlong = AFlong + accelerationlong AFlong = AFlong if AF 1 else min(SAR_temp[t + 1], LOW[t]) else: if SAR_temp[t] 1 else min(EP, LOW[t]) ##转向偏移 SAR_temp[t] *= 1 + offsetonreverse ###long状态记录正向 SAR[t] = SAR_temp[t] #记录 AFlong = accelerationinitlong EP = HIGH[t] SAR_temp[t + 1] = SAR_temp[t] + AFlong * (EP - SAR_temp[t]) SAR_temp[t + 1] = min(SAR_temp[t + 1], LOW[t], LOW[t - 1]) \ if t > 1 else min(SAR_temp[t + 1], LOW[t]) else: ###short状态记录负值 SAR[t] = -SAR_temp[t]#记录 if LOW[t]


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3