TA-Lib是金融市场分析的重要工具,协助计算多种指标。要介绍TA-Lib,请参阅[TA-Lib] #1 探索技术分析与TA-Lib的基本概念,安装说明请查看[TA-Lib] #2: 技术分析的TA-Lib安装。有关使用yahooquery检索价格数据的指南,请参见[Python] Yahooquery:获取和管理过去股票和财务数据。
from yahooquery import Ticker
import talib
import pandas as pd
# 获取腾讯股票数据
tencent = Ticker("0700.HK")
price_data = tencent.history(period="2y")
close_prices = price_data['close'].values
# 计算简单移动平均线
sma = talib.SMA(close_prices, timeperiod=20)
# 计算指数移动平均线
ema = talib.EMA(close_prices, timeperiod=20)
# 计算加权移动平均线
wma = talib.WMA(close_prices, timeperiod=20)
# 展示结果
result = pd.DataFrame({
'收盘价': close_prices,
'SMA': sma,
'EMA': ema,
'WMA': wma
})
print(result.tail())
收盘价 SMA EMA WMA
488 339.799988 341.659998 340.809800 341.780951
489 335.799988 340.959998 340.332675 341.222854
490 333.200012 339.989998 339.653374 340.483808
491 332.600006 339.799998 338.981625 339.780000
492 328.799988 339.589998 338.011945 338.732379
利用移动平均线可以分析市场的整体趋势。
last_5_sma = sma[-5:]
# 上升趋势确认
if all(last_5_sma[i] < last_5_sma[i + 1] for i in range(4)):
print("市场呈现上升趋势。")
# 下降趋势确认
elif all(last_5_sma[i] > last_5_sma[i + 1] for i in range(4)):
print("市场呈现下降趋势。")
else:
print("市场趋势稳定。")
在此示例中,使用移动平均线分析过去5天的市场趋势。如果移动平均线连续增加,趋势被归类为上升;如果减少,则为下降。
sma5 = talib.SMA(close_prices, timeperiod=5)
sma20 = talib.SMA(close_prices, timeperiod=20)
sma60 = talib.SMA(close_prices, timeperiod=60)
# 假设:过去5天的短期、中期、长期移动平均线
short_ma_last_5 = sma5[-5:]
mid_ma_last_5 = sma20[-5:]
long_ma_last_5 = sma60[-5:]
# 确认各移动平均线连续上升
is_short_ma_rising = all(x < y for x, y in zip(short_ma_last_5, short_ma_last_5[1:]))
is_mid_ma_rising = all(x < y for x, y in zip(mid_ma_last_5, mid_ma_last_5[1:]))
is_long_ma_rising = all(x < y for x, y in zip(long_ma_last_5, long_ma_last_5[1:]))
# 趋势分析
if is_short_ma_rising and is_mid_ma_rising and is_long_ma_rising:
print("强劲上升趋势")
elif is_short_ma_rising:
print("短期上升趋势")
elif is_long_ma_rising:
print("长期上升趋势")
else:
print("趋势不明确")
此示例通过比较过去5天的短期、中期和长期移动平均线来分析市场趋势。
这种方法通过考虑每个移动平均线的变化,提供了理解整体市场情况的优势,并能精确分析和细分上升和下降趋势。不同的时期和移动平均线指标可以用于更精细的分析,允许在投资策略中灵活应用。
金叉是指短期移动平均线突破长期移动平均线之上。以下代码演示了如何找到金叉。
short_sma = talib.SMA(close_prices, timeperiod=20)
long_sma = talib.SMA(close_prices, timeperiod=60)
# 查找金叉
for i in range(1, len(close_prices)):
if short_sma[i] > long_sma[i] and short_sma[i-1] <= long_sma[i-1]:
print(f"发现金叉:第 {i} 天")
死叉是指短期移动平均线跌破长期移动平均线之下。以下代码是如何找到死叉的示例。
# 查找死叉
for i in range(1, len(close_prices)):
if short_sma[i] < long_sma[i] and short_sma[i-1] >= long_sma[i-1]:
print(f"发现死叉:第 {i} 天")
借助移动平均线和 TA-Lib 进行市场分析,可以为投资者提供关键信息。从简单的移动平均线到诸如金叉和死叉等复杂指标,多种方法可分析市场趋势和变化。这些洞察有助于更精确地规划和执行投资策略,以及理解微妙的市场动态。
[TA-Lib] #7: 了解并应用RSI(相对强度指数) |
---|
[TA-Lib] #6: 利用TA-Lib分析和计算MACD |
[TA-Lib] #5 MACD - 分析 MACD 指标及其在市场趋势中的作用 |
[TA-Lib] #4:利用TA-Lib进行移动平均线分析 - 检测市场趋势并捕捉黄金交叉与死亡交叉 |
[TA-Lib] #3: 理解市场趋势 - 短期、中期、长期移动平均线及黄金交叉与死亡交叉 |
CloneCoding
创新从一行代码开始!