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

提示词
一个以日期为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写的。
图像:
- 0
- 0
-
赞助
支付宝
微信
-
分享