[TA-Lib] #4:利用TA-Lib进行移动平均线分析 - 检测市场趋势并捕捉黄金交叉与死亡交叉

TA-Lib是金融市场分析的重要工具,协助计算多种指标。要介绍TA-Lib,请参阅[TA-Lib] #1 探索技术分析与TA-Lib的基本概念,安装说明请查看[TA-Lib] #2: 技术分析的TA-Lib安装。有关使用yahooquery检索价格数据的指南,请参见[Python] Yahooquery:获取和管理过去股票和财务数据

移动平均线的计算及代码示例

python
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

使用TA-Lib进行市场趋势分析

利用移动平均线可以分析市场的整体趋势。

python
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天的市场趋势。如果移动平均线连续增加,趋势被归类为上升;如果减少,则为下降。

python
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天的短期、中期和长期移动平均线来分析市场趋势。

  • 通过确认每个移动平均线是否连续上升,确定上升趋势。如果短期、中期和长期移动平均线都在上升,则被视为强劲上升趋势;如果只有短期上升,则是短期上升趋势;如果只有长期上升,则是长期上升趋势。
  • 如果出现下降趋势,根据下降的短期、中期、长期移动平均线,趋势可以进一步分类。
  • 如果趋势不明确,即短期、中期、长期移动平均线中只有部分上升或下降,可能需要进一步分析。

这种方法通过考虑每个移动平均线的变化,提供了理解整体市场情况的优势,并能精确分析和细分上升和下降趋势。不同的时期和移动平均线指标可以用于更精细的分析,允许在投资策略中灵活应用。

利用 TA-Lib 分析金叉与死叉

金叉

展示了腾讯过去一年的金叉和死叉的股价图表
该图表展示了腾讯近一年的价格走势,标记了金叉和死叉发生的点。这些信号有助于预测股市趋势的反转。

金叉是指短期移动平均线突破长期移动平均线之上。以下代码演示了如何找到金叉。

python
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} 天")

死叉

死叉是指短期移动平均线跌破长期移动平均线之下。以下代码是如何找到死叉的示例。

python
# 查找死叉
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 进行市场分析,可以为投资者提供关键信息。从简单的移动平均线到诸如金叉和死叉等复杂指标,多种方法可分析市场趋势和变化。这些洞察有助于更精确地规划和执行投资策略,以及理解微妙的市场动态。


常见问题解答

  1. 我如何安装 TA-Lib?
  2. 除了移动平均线,我还可以使用 TA-Lib 计算哪些其他指标?
    • TA-Lib 提供超过150种技术指标,包括布林带、RSI、MACD 等。请继续关注本系列,我们计划详细介绍这些其他指标。
  3. 我如何知道何时发生金叉或死叉?
    • 金叉和死叉是短期移动平均线分别突破或跌破长期移动平均线时发生的。您可以使用所提供的代码示例来识别这些信号。
  4. 对于新手投资者,还有哪些技术指标可能有用?
    • 对于新手投资者,RSI(相对强弱指数)、MACD(移动平均汇散)和布林带等可能有价值。这些措施衡量价格的相对强度和波动性,因此与移动平均线一同使用可以帮助分析市场的各个方面。
  5. 仅使用移动平均线分析有何局限性?应如何与其他分析方法结合使用?
    • 虽然移动平均线在识别一般市场趋势方面有用,但在分析复杂的市场情况或特定事件方面可能存在局限性。建议将它们与基本分析、其他技术指标、经济指标等相结合,以构建全面的投资策略。结合各种分析方法,可以更准确地理解和预测市场的多方面内容。
© Copyright 2023 CLONE CODING