当前位置:首页>python>Python技术指标

Python技术指标

  • 2026-09-23 08:20:20
Python技术指标

炒股软件上那些花花绿绿的线,到底是怎么算出来的?

我第一次看到MACD、RSI、布林带这些指标的时候,完全是一脸懵。

后来学了Python,才发现——原来这些指标都是固定的公式,软件帮你算好了而已。

今天分享一下怎么用Python计算这三个最常用的技术指标。

---

01 RSI指标:衡量股价是"超买"还是"超卖"

RSI的中文名叫"相对强弱指数",用来判断一只股票是涨过头了还是跌过头了。

公式很简单:

RSI = 100 - (100 / (1 + RS))
RS = 平均涨幅 / 平均跌幅

通常RSI超过70就算"超买"(可能即将下跌),低于30就算"超卖"(可能即将反弹)。

Python代码:

import pandas as pd


import numpy as np

def calculate_rsi(prices, period=14):
   """计算RSI指标"""
   # 计算价格变化
   delta = prices.diff()

   # 分离涨跌
   gain = delta.where(delta > 0, 0)
   loss = -delta.where(delta < 0, 0)

   # 计算平均涨跌幅(使用指数移动平均)
   avg_gain = gain.ewm(com=period-1, min_periods=period).mean()
   avg_loss = loss.ewm(com=period-1, min_periods=period).mean()

   # 计算RS和RSI
   rs = avg_gain / avg_loss
   rsi = 100 - (100 / (1 + rs))

   return rsi

# 假设你有股票收盘价数据 close
# rsi = calculate_rsi(close)
# print(rsi.tail(10))

我第一次算出自己的RSI时,印象最深的是——

原来"超买"不代表立刻跌,"超卖"也不代表立刻涨。

它只是一个参考,不是圣杯。

---

02 MACD指标:判断趋势的利器

MACD大概是散户最熟悉的指标之一了,全称是"移动平均收敛散度"。

它由三部分组成:
- DIF线:短期EMA(12日)- 长期EMA(26日)
- DEA线:DIF的9日EMA
- MACD柱:(DIF - DEA) × 2

Python代码:

def calculate_macd(prices, fast=12, slow=26, signal=9):


   """计算MACD指标"""


   # 计算快速和慢速指数移动平均


   ema_fast = prices.ewm(span=fast, adjust=False).mean()


   ema_slow = prices.ewm(span=slow, adjust=False).mean()

   # DIF线
   dif = ema_fast - ema_slow

   # DEA线
   dea = dif.ewm(span=signal, adjust=False).mean()

   # MACD柱
   macd = (dif - dea) * 2

   return dif, dea, macd

# dif, dea, macd = calculate_macd(close)
# 当DIF线上穿DEA线时,可能是买入信号

我学MACD最大的收获是——

金叉不一定是买点,死叉不一定是卖点。

得结合趋势位置来看,同样的形态,在不同位置含义完全不一样。

---

03 布林带:看价格的"合理区间"

布林带由三条线组成:
- 中轨:20日均线
- 上轨:中轨 + 2倍标准差
- 下轨:中轨 - 2倍标准差

简单理解就是:价格在正常情况下会在"布林带"内波动,突破上轨可能超买,跌破下轨可能超卖。

Python代码:

def calculate_bollinger_bands(prices, period=20, std_dev=2):


   """计算布林带"""


   # 中轨:移动平均


   mid = prices.rolling(window=period).mean()

   # 标准差
   std = prices.rolling(window=period).std()

   # 上轨和下轨
   upper = mid + (std * std_dev)
   lower = mid - (std * std_dev)

   return upper, mid, lower

# upper, mid, lower = calculate_bollinger_bands(close)
# 当价格触及上轨时,可能面临压力

---

04 一个散户的真心话

用Python把这些指标算出来之后,我对技术分析的理解深了很多。

以前看软件上的指标,觉得是黑科技。

现在知道了,它就是一组固定的数字,用Excel都能算。

但这不意味着指标没用——

关键是理解指标背后的逻辑,而不是死记硬背金叉买、死叉卖。

我现在的做法是:

1. 用Python把数据都算出来
2. 结合市场整体趋势判断
3. 把技术指标当作参考,不是决策的唯一依据

---

写在最后

今天分享了RSI、MACD、布林带三个技术指标的Python计算方法。

代码不重要,背后的逻辑才重要。

你用技术指标分析股票吗?有什么心得或教训?欢迎评论区聊聊!

往期推荐:
- [文章3标题]
- [文章4标题]

最新文章

随机文章