README_ETF_MA_Analysis.md 4.8 KB

ETF月线级别均线分析工具

概述

基于 deep_itm_bull_spread_strategy.py 的ETF获取逻辑,创建了一个专门的ETF价格与移动平均线距离分析工具。该工具用于分析ETF月收盘价与移动平均线的距离关系。

功能特性

1. ETF数据获取

  • 支持的ETF
    • 50ETF (510050.XSHG) - 上证50ETF
    • 300ETF (510300.XSHG) - 沪深300ETF
    • 创业板ETF (159915.XSHE) - 创业板ETF

2. 技术分析

  • 移动平均线计算:5日、10日、20日均线
  • 月线级别分析:将日线数据转换为月线数据
  • 距离计算:计算月收盘价与各均线的绝对距离和百分比距离

3. 数据可视化

  • 生成距离趋势图表
  • 显示每个ETF的距离变化曲线
  • 包含统计信息标注

4. 数据导出

  • 导出详细的CSV分析结果
  • 包含价格、均线、距离等完整数据

文件说明

主要文件

  • etf_monthly_ma_analysis.py - 完整的分析工具(包含分析功能和直接运行代码)
  • README_ETF_MA_Analysis.md - 本说明文档

生成文件

运行后会生成以下文件:

  • ETF月线距离分析_开始日期_结束日期.png - 分析图表
  • ETF_月线分析_ETF名称_开始日期_结束日期.csv - 每个ETF的详细数据

使用方法

直接运行(推荐)

# 在聚宽环境中直接运行
python etf_monthly_ma_analysis.py

文件中已经预设了分析参数,直接运行即可开始分析。如需修改时间范围,编辑文件底部的参数:

# 修改这里的参数来自定义分析
analyzer = ETFMonthlyMAAnalysis(
    start_date='2024-01-01',  # 修改开始日期
    end_date='2024-10-31'     # 修改结束日期
)

自定义使用

如果需要在其他脚本中使用,可以导入并自定义:

from etf_monthly_ma_analysis import ETFMonthlyMAAnalysis

# 创建分析器
analyzer = ETFMonthlyMAAnalysis(
    start_date='2024-06-01', 
    end_date='2024-12-31'
)

# 运行完整分析
analyzer.run_complete_analysis(
    save_chart=True,  # 保存图表
    export_csv=True   # 导出CSV
)

输出示例

控制台输出

==========================================
详细分析结果
==========================================

50ETF 分析结果:
------------------------------
MA5:
  平均距离: 0.0234 元
  距离标准差: 0.0456 元
  平均百分比距离: 1.23%
  高于均线次数: 6
  低于均线次数: 4
  高于均线比例: 60.0%

MA10:
  平均距离: 0.0156 元
  ...

图表输出

  • 多子图显示每个ETF的距离趋势
  • 包含统计信息文本框
  • 支持保存为PNG文件

CSV数据格式

年月 close MA5 MA10 MA20 Distance_MA5 Distance_MA5_Pct ...
2024-01 2.845 2.834 2.821 2.808 0.011 0.39% ...
2024-02 2.892 2.856 2.843 2.835 0.036 1.26% ...

配置参数

时间范围

analyzer = ETFMonthlyMAAnalysis(
    start_date='2024-01-01',  # 开始日期
    end_date='2024-12-31'     # 结束日期
)

移动平均线周期

可在类初始化时修改 self.ma_periods = [5, 10, 20]

ETF符号

可在类初始化时修改 self.etf_symbols 字典

技术原理

数据获取

  • 使用聚宽的 get_price() 函数获取ETF日线数据
  • 包含开盘价、最高价、最低价、收盘价、成交量

月线转换

  • 使用 pandas 的 resample('M') 方法
  • 月开盘价:取月内第一个交易日开盘价
  • 月收盘价:取月内最后一个交易日收盘价
  • 月最高/最低价:取月内极值

距离计算

  • 绝对距离距离 = 月收盘价 - 移动平均线
  • 百分比距离百分比距离 = (月收盘价 - 移动平均线) / 移动平均线 × 100%

统计分析

  • 计算距离的均值、标准差、最大值、最小值
  • 统计正向/负向距离的次数
  • 计算高于均线的比例

注意事项

  1. 环境要求:需要在聚宽(JoinQuant)环境中运行
  2. 数据依赖:依赖聚宽的 jqdata 包和 get_price() 函数
  3. 时间范围:建议选择至少6个月以上的时间范围以获得有意义的分析结果
  4. 市场假期:工具会自动处理交易日历,跳过市场假期

应用场景

  1. 趋势分析:观察ETF价格相对于均线的长期趋势
  2. 买卖时机:通过距离分析判断潜在的买卖机会
  3. 风险评估:通过距离的波动性评估风险
  4. 策略回测:为期权策略提供基础的技术分析数据

扩展功能

可以基于此工具进一步开发:

  • 添加更多技术指标(RSI、MACD等)
  • 增加更多均线周期
  • 添加自动化交易信号生成
  • 集成到现有的期权策略中

版本历史

  • v1.0 - 初始版本,基于深度实值牛差策略的ETF获取逻辑