生生不息

生生不息

AI使用TA-Lib计算布林带指标

2025-06-23
AI使用TA-Lib计算布林带指标

提示词

一个以日期为index的DataFrame,包含一列股票的收盘价,现在需要用TA-Lib计算其布林带并进行可视化。

答案

import pandas as pd
import talib
import matplotlib.pyplot as plt
import mplfinance as mpf

# 假设df是包含日期索引和收盘价的DataFrame
# 示例数据加载(若需要真实数据可替换为yfinance获取)
# df = pd.read_csv('stock_data.csv', index_col='Date', parse_dates=True)
close = df['收盘']

# 使用TA-Lib计算布林带
period = 20
std_dev = 2
upper, middle, lower = talib.BBANDS(
    close.values, 
    timeperiod=period,
    nbdevup=std_dev,
    nbdevdn=std_dev,
    matype=0  # 0=SMA,1=EMA等
)

# 将结果存入DataFrame
df['Upper'] = upper
df['Middle'] = middle
df['Lower'] = lower

# 过滤无效数据
valid_data = df.dropna()
plt.figure(figsize=(14, 7))
plt.title(f'{df.columns[0]} Price with Bollinger Bands ({period} days, {std_dev}σ)', fontsize=14)

# 绘制收盘价曲线
plt.plot(valid_data.index, valid_data['收盘'], 
         label='Close Price', color='#1f77b4', linewidth=1.2)

# 绘制布林带
plt.plot(valid_data.index, valid_data['Upper'], 
         label='Upper Band', color='red', linestyle='--', linewidth=1)
plt.plot(valid_data.index, valid_data['Middle'], 
         label='Middle Band', color='orange', linewidth=1.5)
plt.plot(valid_data.index, valid_data['Lower'], 
         label='Lower Band', color='green', linestyle='--', linewidth=1)

# 填充布林带区域增强可视化
plt.fill_between(valid_data.index, 
                 valid_data['Upper'], 
                 valid_data['Lower'], 
                 color='gray', alpha=0.1)

# 添加辅助元素
plt.xlabel('Date', fontsize=12)
plt.ylabel('Price', fontsize=12)
plt.grid(True, alpha=0.3)
plt.legend(loc='upper left', fontsize=10)
plt.tight_layout()
plt.show()

我增加了自己的数据和修改了表格列名的代码,其余都是ai写的。

图像: