📊 布林带是什么?
布林带(Bollinger Bands)由三条线组成:
- 📍 中轨:20日均线
- 📍 上轨:中轨 + 2倍标准差
- 📍 下轨:中轨 – 2倍标准差
就像一个”通道”,股价大部分时候在通道内运行。
🎯 布林带的作用
1. 判断价格高低
- 📈 股价碰到上轨 → 可能贵了,要跌
- 📉 股价碰到下轨 → 可能便宜了,要涨
2. 判断趋势
- 📊 通道向上 → 上涨趋势
- 📉 通道向下 → 下跌趋势
- ➡️ 通道平行 → 横盘震荡
3. 突破信号
- 🚀 突破上轨 → 强势上涨
- 💨 突破下轨 → 加速下跌
👨💻 用Python计算布林带
import pandas as pd
prices = [100, 102, 101, 105, 103, 107, 110, 108, 112, 115]
df = pd.DataFrame({"收盘": prices})
# 计算布林带
df["MA20"] = df["收盘"].rolling(20).mean() # 中轨
df["STD"] = df["收盘"].rolling(20).std() # 标准差
df["UPPER"] = df["MA20"] + 2 * df["STD"] # 上轨
df["LOWER"] = df["MA20"] - 2 * df["STD"] # 下轨
print(df)
📈 完整例子
import akshare as ak
import pandas as pd
import matplotlib.pyplot as plt
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False
# 获取数据
df = ak.stock_zh_a_hist(symbol="600519", adjust="qfq")
df = df.tail(60)
# 计算布林带
df["MA20"] = df["收盘"].rolling(20).mean()
df["STD"] = df["收盘"].rolling(20).std()
df["UPPER"] = df["MA20"] + 2 * df["STD"]
df["LOWER"] = df["MA20"] - 2 * df["STD"]
# 画图
plt.figure(figsize=(12, 6))
plt.plot(df["日期"], df["收盘"], label="收盘价", color="black")
plt.plot(df["日期"], df["MA20"], label="中轨", color="blue")
plt.plot(df["日期"], df["UPPER"], label="上轨", color="red", linestyle="--")
plt.plot(df["日期"], df["LOWER"], label="下轨", color="green", linestyle="--")
plt.fill_between(df["日期"], df["UPPER"], df["LOWER"], alpha=0.1, color="blue")
plt.title("茅台股价与布林带")
plt.legend()
plt.xticks(rotation=45)
plt.grid(True)
plt.show()
💡 布林带策略
# 突破上轨买入
if close > upper:
print("突破上轨,强势!")
# 跌破下轨卖出
if close ma20 and close
⚠️ 注意事项
- 📊 适合震荡行情
- ⚠️ 趋势行情中可能失效
- 💡 配合成交量一起看更准
📚 下一课
学会了布林带,我们来学成交量——看看这笔交易真不真实!