
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
创新从一行代码开始!