StockStats 以极其简洁的方式计算各种股票技术指标
StockStats 详细部署与使用教程
StockStats 是一个强大的 Python 库,它通过包装 pandas.DataFrame,让你能够以极其简洁的方式计算各种股票技术指标。本教程将带你完成从安装到实战的完整流程。
1. 环境准备与安装
首先,确保你的 Python 环境版本为 3.9 或更高,这是 StockStats 的基本要求。
推荐使用 pip 进行安装,它会自动处理依赖项(如 pandas 和 numpy):
1 | pip install stockstats |
(可选)从源码安装:如果你想尝试最新开发版,可以克隆仓库并安装:
1 | git clone https://github.com/jealous/stockstats.git |
安装完成后,可以通过一个简单测试来验证:
1 | import pandas as pd |
2. 核心概念:StockDataFrame
StockDataFrame 是库的核心。它像一个增强版的 DataFrame,但你无需显式调用计算函数,只需通过特定的列名来“索取”指标,值会在第一次访问时自动计算并缓存。
初始化方式:
使用
wrap函数(最常用):1
2
3
4
5from stockstats import wrap
import pandas as pd
# 假设 df 是你从 CSV、yfinance 等来源加载的 DataFrame
df = pd.read_csv('your_stock_data.csv')
stock_df = wrap(df)使用
StockDataFrame.retype方法:1
2from stockstats import StockDataFrame
stock_df = StockDataFrame.retype(df)
数据要求:你的原始 DataFrame 必须包含以下列(大小写不敏感):
close(必需): 收盘价high(必需): 最高价low(必需): 最低价volume(必需): 成交量date(可选): 日期,会被用作索引
提示:如果使用
yfinance下载数据,建议添加参数multi_level_index=False来避免多级索引引发的问题。data = yf.download('AAPL', multi_level_index=False)
3. 指标计算:列名模式速查
这是 StockStats 最巧妙的部分。你需要记住几种列名模式,就能访问绝大多数指标。
模式一:<indicator>_<window> (单参数指标)
当你只需要为指标指定一个窗口(周期)时使用。例如计算 RSI:
1 | # 使用默认窗口 (14) |
模式二:<column>_<window>_<indicator> (基于特定列的指标)
当你想对特定列(如 high, low, close)应用指标时使用:
1 | # 基于收盘价的20周期简单移动平均 |
模式三:多列输出的指标
一些指标会生成多个列(如 MACD、布林带),首次访问时需使用 get 方法:
1 | # 初始化 MACD 相关的所有列 |
模式四:信号与比较
StockStats 还能直接生成买卖信号列:
1 | # 检测金叉:10日均线上穿50日均线 |
4. 动手实战:一个完整示例
下面是一个完整流程,展示如何获取数据、计算指标并生成交易信号。
1 | import pandas as pd |
5. 配置与高级用法
修改默认参数:部分指标的默认窗口(如 RSI 的14)可通过类方法全局修改。修改后,需删除已计算的列才能生效。
1
2
3
4
5from stockstats import StockDataFrame
# 将 RSI 默认窗口改为 10
StockDataFrame.set_dft_window('rsi', 10)
# 将 MACD 的默认参数改为 (10, 30, 5)
StockDataFrame.set_dft_window('macd', (10, 30, 5))init_all()方法:可以一次性初始化大量常用指标(如 KDJ, BOLL, MFI),但这会生成非常多列,请谨慎使用。将结果转回普通 DataFrame:使用
unwrap函数:1
2from stockstats import unwrap
plain_df = unwrap(stock_df)
通过本教程,你应该已经掌握了 StockStats 的安装、核心概念和基本用法。它通过简洁的列名模式,让你能够快速进行技术分析,非常适合用于量化策略的快速原型开发。






