炒股软件上那些花花绿绿的线,到底是怎么算出来的?
我第一次看到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标题]