TA-Lib学习研究笔记(八)——Momentum Indicators 上
Momentum Indicators 动量指标,是最重要的股票分析指标,能够通过数据量化分析价格、成交量,预测股票走势和强度,大部分指标都在股票软件中提供。
1. ADX-Average Directional Movement Index
函数名:ADX
名称:平均趋向指数
简介:使用ADX指标,指标判断盘整、振荡和单边趋势。
特点:
- ADX无法告诉你趋势的发展方向。
- 如果趋势存在,ADX可以衡量趋势的强度。不论上升趋势或下降趋势,ADX看起来都一样。
- ADX的读数越大,趋势越明显。衡量趋势强度时,需要比较几天的ADX 读数,观察ADX究竟是上升或下降。ADX读数上升,代表趋势转强;如果ADX读数下降,意味着趋势转弱。
- 当ADX曲线向上攀升,趋势越来越强,应该会持续发展。如果ADX曲线下滑,代表趋势开始转弱,反转的可能性增加。
- 单就ADX本身来说,由于指标落后价格走势,所以算不上是很好的指标,不适合单就ADX进行操作。可是,如果与其他指标配合运用,ADX可以确认市场是否存在趋势,并衡量趋势的强度。
指标应用:
- +DI与–DI表示多空相反的二个动向,当据此绘出的两条曲线彼此纠结相缠时,代表上涨力道与下跌力道相当,多空势均力敌。当 +DI与–DI彼此穿越时,由下往上的一方其力道开始压过由上往下的另一方,此时出现买卖讯号。
- ADX可作为趋势行情的判断依据,当行情明显朝多空任一方向进行时,ADX数值都会显著上升,趋势走强。若行情呈现盘整格局时,ADX会低于 +DI与–DI二条线。若ADX数值低于20,则不论DI表现如何,均显示市场没有明显趋势。
- ADX持续偏高时,代表“超买”(Overbought)或“超卖”(Oversold)的现象,行情反转的机会将增加,此时则不适宜顺势操作。当ADX数值从上升趋势转为下跌时,则代表行情即将反转;若ADX数值由下跌趋势转为上升时,行情将止跌回升。
- 总言之,DMI指标包含4条线:+DI、-DI、ADX和ADXR。+DI代表买盘的强度、-DI代表卖盘的强度;ADX代表趋势的强度、ADXR则为ADX的移动平均。
语法:
real = ADX(high, low, close, timeperiod=14)
df['ADX'] = tlb.ADX(df['high'],df['low'],df['close'], timeperiod=14)
df['PLUS_DI'] = tlb.PLUS_DI(df['high'],df['low'],df['close'], timeperiod=14)
df['MINUS_DI'] = tlb.MINUS_DI(df['high'],df['low'],df['close'], timeperiod=14)
# 做图
# ,'close'
df[['ADX','PLUS_DI','MINUS_DI','close']].plot(figsize=(6, 4),title='ADX',grid=True)
plt.legend() # 设置图示
plt.show()
2. ADXR-Average Directional Movement Index Rating
函数名:ADXR
名称:平均趋向指数的趋向指数
简介:使用ADXR指标,指标判断ADX趋势。
语法:
real = ADXR(high, low, close, timeperiod=14)
df['ADX'] = tlb.ADX(df['high'],df['low'],df['close'], timeperiod=14)
df['ADXR'] = tlb.ADXR(df['high'],df['low'],df['close'], timeperiod=14)
#df['PLUS_DI'] = tlb.PLUS_DI(df['high'],df['low'],df['close'], timeperiod=14)
#df['MINUS_DI'] = tlb.MINUS_DI(df['high'],df['low'],df['close'], timeperiod=14)
# 做图
#df[['ADX','ADXR','PLUS_DI','MINUS_DI','close']].plot(figsize=(6, 4),title='ADXR',grid=True)
df[['ADX','ADXR','close']].plot(figsize=(6, 4),title='ADXR',grid=True)
plt.legend() # 设置图示
plt.show()
3. APO-Absolute Price Oscillator
函数名:APO
名称:绝对价格振荡器
简介:该函数接收几个参数并返回一个表示振荡器的实数序列。
参数说明:
- close: 这是表示收盘价的序列。通常,这是一个 Pandas Series 或 NumPy 数组,其中包含了金融时间序列的收盘价。
- fastperiod: 这是一个整数,表示短期EMA(指数移动平均线)的时间周期。在这个例子中,它被设置为12。
- slowperiod: 这是一个整数,表示长期EMA的时间周期。在这个例子中,它被设置为26。
- matype: 这是一个整数,用于指定EMA的计算类型。TA-Lib支持多种类型的移动平均线计算,matype 参数允许你选择其中的一种。在这个例子中,matype 被设置为0,表示使用简单的EMA计算。
语法:
real = APO(close, fastperiod=12, slowperiod=26, matype=0)
df['APO'] = tlb.APO(df['close'], fastperiod=12, slowperiod=26, matype=0)
# 做图
df[['APO','close']].plot(subplots=True,figsize=(6, 4),title='APO',grid=True)
plt.legend() # 设置图示
plt.show()
4. AROON-Aroon
函数名:AROON
名称:阿隆指标
简介:该指标是通过计算自价格达到近期最高值和最低值以来所经过的期间数,阿隆指标帮助你预测价格趋势到趋势区域(或者反过来,从趋势区域到趋势)的变化。
指数应用:
1、极值0和100
当UP线达到100时,市场处于强势;如果维持在70100之间,表示一个上升趋势。同样,如果Down线达到0,表示处于弱势,如果维持在030之间,表示处于下跌趋势。如果两条线同处于极值水平,则表明一个更强的趋势。
2、平行运动
如果两条线平行运动时,表明市场趋势被打破。可以预期该状况将持续下去,只到由极值水平或交叉穿行西安市出方向性运动为止。
3、交叉穿行
当下行线上穿上行线时,表明潜在弱势,预期价格开始趋于下跌。反之,表明潜在强势,预期价格趋于走高。
语法:
aroondown, aroonup = AROON(high, low, timeperiod=14)
df['aroondown'],df['aroonup'] = tlb.AROON(df['high'],df['low'], timeperiod=14)
# 做图
df[['aroondown','aroonup','close']].plot(figsize=(6, 4),title='AROON',grid=True)
plt.legend() # 设置图示
plt.show()
5. AROONOSC-Aroon Oscillator
函数名:AROONOSC
名称:阿隆振荡
语法:
real = AROONOSC(high, low, timeperiod=14)
df['AROONOSC'] = tlb.AROONOSC(df['high'],df['low'], timeperiod=14)
# 做图
df[['AROONOSC','close']].plot(subplots=True,figsize=(6, 4),title='AROONOSC',grid=True)
plt.legend() # 设置图示
plt.show()
6. BOP-Balance Of Power
函数名:BOP
名称:均势指标
简介:是一种投资策略,其核心思想是在选择投资标的时,要关注市场上的“力量平衡”,即买方力量和卖方力量之间的关系。在股市中,买方力量和卖方力量的对比将直接影响股价的走势。当买方力量大于卖方力量时,股价将上涨;相反,当卖方力量大于买方力量时,股价将下跌。
语法:
real = BOP(open, high, low, close)
df['BOP'] = tlb.BOP(df['open'],df['high'],df['low'],df['close'])
# 做图
df[['BOP','close']].plot(subplots=True,figsize=(6, 4),title='BOP',grid=True)
plt.legend() # 设置图示
plt.show()
7. CCI-Commodity Channel Index
函数名:CCI
名称:顺势指标
简介:CCI指标专门测量股价是否已超出常态分布范围
指标应用:
- 1.当CCI指标曲线在+100线~-100线的常态区间里运行时,CCI指标参考意义不大,可以用KDJ等其它技术指标进行研判。
- 2.当CCI指标曲线从上向下突破+100线而重新进入常态区间时,表明市场价格的上涨阶段可能结束,将进入一个比较长时间的震荡整理阶段,应及时平多做空。
- 3.当CCI指标曲线从上向下突破-100线而进入另一个非常态区间(超卖区)时,表明市场价格的弱势状态已经形成,将进入一个比较长的寻底过程,可以持有空单等待更高利润。如果CCI指标曲线在超卖区运行了相当长的一段时间后开始掉头向上,表明价格的短期底部初步探明,可以少量建仓。CCI指标曲线在超卖区运行的时间越长,确认短期的底部的准确度越高。
- 4.CCI指标曲线从下向上突破-100线而重新进入常态区间时,表明市场价格的探底阶段可能结束,有可能进入一个盘整阶段,可以逢低少量做多。
- 5.CCI指标曲线从下向上突破+100线而进入非常态区间(超买区)时,表明市场价格已经脱离常态而进入强势状态,如果伴随较大的市场交投,应及时介入成功率将很大。
- 6.CCI指标曲线从下向上突破+100线而进入非常态区间(超买区)后,只要CCI指标曲线一直朝上运行,表明价格依然保持强势可以继续持有待涨。但是,如果在远离+100线的地方开始掉头向下时,则表明市场价格的强势状态将可能难以维持,涨势可能转弱,应考虑卖出。如果前期的短期涨幅过高同时价格回落时交投活跃,则应该果断逢高卖出或做空。
- CCI主要是在超买和超卖区域发生作用,对急涨急跌的行情检测性相对准确。非常适用于股票、外汇、贵金属等市场的短期操作。
语法:
real = CCI(high, low, close, timeperiod=14)
df['CCI'] = tlb.CCI(df['high'],df['low'],df['close'], timeperiod=14)
# 做图
df[['CCI','close']].plot(subplots=True,figsize=(6, 4),title='CCI',grid=True)
plt.legend() # 设置图示
plt.show()
8. CMO-Chande Momentum Oscillator
函数名:CMO
名称:钱德动量摆动指标
简介:与其他动量指标摆动指标如相对强弱指标(RSI)和随机指标(KDJ)不同,钱德动量指标在计算公式的分子中采用上涨日和下跌日的数据。
计算公式:CMO=(Su-Sd)*100/(Su+Sd)
其中:Su是今日收盘价与昨日收盘价(上涨日)差值加总。若当日下跌,则增加值为0;Sd是今日收盘价与做日收盘价(下跌日)差值的绝对值加总。若当日上涨,则增加值为0;
指标应用:
- 本指标类似RSI指标。
- 当本指标下穿-50水平时是买入信号,上穿+50水平是卖出信号。
- 钱德动量摆动指标的取值介于-100和100之间。
- 本指标也能给出良好的背离信号。
- 当股票价格创出新低而本指标未能创出新低时,出现牛市背离;
- 当股票价格创出新高而本指标未能创出新高时,当出现熊市背离时。
- 可以用移动均值对该指标进行平滑。
语法:
real = CMO(close, timeperiod=14)
df['CMO'] = tlb.CMO(df['close'], timeperiod=14)
# 做图
df[['CMO','close']].plot(subplots=True,figsize=(6, 4),title='CMO',grid=True)
plt.legend() # 设置图示
plt.show()
9. DX- Directional Movement Index
函数名:DX
名称:动向指标或趋向指标
简介:通过分析股票价格在涨跌过程中买卖双方力量均衡点的变化情况,即多空双方的力量的变化受价格波动的影响而发生由均衡到失衡的循环过程,从而提供对趋势判断依据的一种技术指标。
语法:
real = DX(high, low, close, timeperiod=14)
df['DX'] = tlb.DX(df['high'],df['low'],df['close'], timeperiod=14)
# 做图
df[['DX','close']].plot(subplots=True,figsize=(6, 4),title='DX',grid=True)
plt.legend() # 设置图示
plt.show()
10. MACD-Moving Average Convergence/Divergence
函数名:MACD
名称:平滑异同移动平均线
简介:利用收盘价的短期(常用为12日)指数移动平均线与长期(常用为26日)指数移动平均线之间的聚合与分离状况,对买进、卖出时机作出研判的技术指标。
参数说明:
close: 这是表示收盘价的序列。通常,这是一个 Pandas Series 或 NumPy 数组,其中包含了金融时间序列的收盘价。
fastperiod: 这是短期 EMA(指数移动平均线)的时间周期。在示例中,它被设置为 12。
slowperiod: 这是长期 EMA 的时间周期。在示例中,它被设置为 26。
signalperiod: 这是 MACD 线(信号线)的时间周期。在示例中,它被设置为 9。
输出参数说明:
输出三个值:dif(差离值)、dem(离散移动平均线)和 histogram(直方图)。这些值分别表示了 MACD 指标的计算结果,其中 dif 是两个 EMA 的差离值,dem 是 dif 的离散移动平均线,而 histogram 是 dif 和 dem 的差离值。
通过观察这些值的变化趋势,您可以判断股票的趋势以及潜在的买卖信号。一般来说,当 DIF 线向上穿过 DEMA 线时,被视为买入信号;而当 DIF 线向下穿过 DEMA 线时,被视为卖出信号。直方图的值表示了 MACD 指标相对于零线的偏离程度,可以辅助判断趋势的强度和可能的转折点。
语法:
dif, dem, histogram = MACD(close, fastperiod=12, slowperiod=26, signalperiod=9)
df['dif'],df['dem'],df['histogram'] = tlb.MACD(df['close'], fastperiod=12, slowperiod=26, signalperiod=9)
# 做图
df[['dif','dem','histogram','close']].plot(subplots=True,figsize=(6, 4),title='MACD',grid=True)
plt.legend() # 设置图示
plt.show()