Skip to content

一个基于Python的股票技术指标参数优化与历史回测系统,通过算法搜索最优参数组合,辅助确定股票交易策略的最佳参数配置。

Notifications You must be signed in to change notification settings

cn-vhql/AIparameter

Repository files navigation

📈 股票指标参数优化与回测系统

一个基于Python的股票技术指标参数优化与历史回测系统,通过算法搜索最优参数组合,辅助确定股票交易策略的最佳参数配置。系统集成了完整的风险管理功能,支持13种技术指标的智能参数优化。

✨ 功能特性

📊 数据获取与处理

  • 多数据源支持: 使用akshare接口获取A股历史行情数据,支持前复权处理
  • 多时间周期: 支持日线、周线、月线多种时间周期选择
  • 数据验证: 自动数据清洗和异常处理,确保数据质量

📈 技术指标系统

  • 13种技术指标: 基于TA-Lib实现完整的技术指标体系
    • 趋势类: MACD、均线、ADX、动量指标、抛物线SAR
    • 震荡类: RSI、KDJ、威廉指标、CCI、乖离率
    • 波动率类: 布林带、ATR
    • 成交量类: OBV
  • 智能信号生成: 每个指标都有专门的买卖信号生成逻辑
  • 参数优化: 支持参数范围的智能优化和自动调整

⚙️ 参数优化引擎

  • 网格搜索优化: 全局搜索参数空间,找到最优参数组合
  • 遗传算法优化: 智能优化算法,适合复杂参数空间搜索
  • 并行计算支持: 多核并行处理,大幅提升优化效率
  • 进度可视化: 实时显示优化进度和结果统计

🛡️ 风险管理系统

  • 智能仓位管理: 基于风险暴露计算最优仓位大小
  • 自动止损止盈: 动态止损止盈,保护资本安全
  • 风险等级评估: 实时评估交易风险等级,自动调整策略
  • 风险违规监控: 完整的风险违规记录和预警机制

🔧 增强回测引擎

  • 完整交易逻辑: 包含买卖信号、仓位管理、风险控制等
  • 手续费滑点: 真实的交易成本模拟(万三手续费、万分之一滑点)
  • 绩效计算: 全面的回测绩效指标计算
  • 交易记录: 详细的交易记录和风险控制日志

🎨 用户界面

  • 现代化界面: 基于Streamlit的专业Web界面
  • 交互式配置: 直观的参数配置和指标选择
  • 实时反馈: 优化进度显示和结果可视化
  • 风险控制开关: 用户可选择启用或禁用风险控制功能

🛠️ 技术架构

核心技术栈

  • 编程语言: Python 3.11
  • 前端框架: Streamlit
  • 数据获取: akshare
  • 技术指标: TA-Lib
  • 优化算法: scikit-learn, DEAP (遗传算法)
  • 可视化: Plotly
  • 并行计算: joblib

系统架构

stock_parameter_optimizer/
├── app.py                          # 主应用程序入口
├── requirements.txt                  # 项目依赖
├── README.md                        # 项目文档
├── config/                         # 配置文件
│   └── INDICATOR_PARAMS.py         # 指标参数配置
├── data/                           # 数据获取模块
│   ├── __init__.py
│   └── data_fetcher.py             # 股票数据获取器
├── indicators/                      # 技术指标模块
│   ├── __init__.py
│   └── technical_indicators.py      # 技术指标计算器
├── backtest/                        # 回测引擎模块
│   ├── __init__.py
│   └── backtest_engine.py           # 回测引擎
├── optimization/                   # 参数优化模块
│   ├── __init__.py
│   ├── optimizer.py                  # 参数优化器
│   └── param_evaluator.py           # 参数评估包装
├── risk_management/                # 风险管理模块
│   ├── __init__.py
│   └── risk_manager.py               # 风险管理器
└── utils/                          # 工具模块
    ├── __init__.py
    └── project_utils.py               # 项目工具类

🚀 快速开始

1. 环境准备

# 克隆项目
git clone [项目地址]
cd stock_parameter_optimizer

# 安装依赖
pip install -r requirements.txt

2. 启动应用

streamlit run app.py

3. 访问界面

在浏览器中打开: http://localhost:8501

4. 基本使用流程

  1. 配置参数: 输入股票代码(如:000001.SZ)
  2. 选择指标: 从13种技术指标中选择要优化的指标
  3. 设置范围: 配置参数搜索范围
  4. 选择算法: 选择网格搜索或遗传算法
  5. 风险控制: 选择是否启用风险控制功能
  6. 开始优化: 点击"🚀 开始参数优化"按钮

📊 支持的技术指标

趋势类指标

指标 买入信号 卖出信号 适用场景
MACD MACD线上穿信号线(金叉) MACD线下穿信号线(死叉) 趋势明显的市场
均线 价格上穿均线 价格下穿均线 趋势跟踪,过滤噪音
ADX 无直接信号(趋势强度判断) 无直接信号(趋势强度判断) 趋势强度确认
动量指标 动量上穿零轴 动量下穿零轴 价格动量分析
抛物线SAR 价格上穿SAR线 价格下穿SAR线 趋势跟踪止损

震荡类指标

指标 买入信号 卖出信号 适用场景
RSI RSI < 30(超卖) RSI > 70(超买) 震荡市场
KDJ K线上穿D线且J值 < 20 K线下穿D线且J值 > 80 短期交易
威廉指标 威廉 < -80(超卖) 威廉 > -20(超买) 短期反转
CCI CCI < -100(超卖) CCI > 100(超买) 周期性分析
乖离率 乖离率 < -6% 乖离率 > 6% 价格回归分析

波动率与成交量指标

指标 买入信号 卖出信号 适用场景
布林带 价格跌破下轨 价格突破上轨 波动率分析
ATR 无直接信号(辅助指标) 无直接信号(辅助指标) 仓位管理参考
OBV OBV连续上升突破高点 OBV连续下降跌破低点 量价确认

⚙️ 参数优化配置

网格搜索参数范围

指标 参数 默认范围 说明
MACD fastperiod 5-20 快线周期
MACD slowperiod 15-40 慢线周期
MACD signalperiod 3-15 信号线周期
RSI timeperiod 6-30 计算周期
KDJ fastk_period 5-15 K值周期
KDJ slowk_period 2-5 K值平滑周期
KDJ slowd_period 2-5 D值平滑周期

遗传算法参数

  • 种群大小: 20-50
  • 进化代数: 5-20
  • 交叉概率: 0.6-0.8
  • 变异概率: 0.1-0.3

🛡️ 风险控制功能

智能仓位管理

  • 风险仓位计算: 基于ATR和风险暴露计算最优仓位
  • 动态调整: 高风险交易自动减半仓位
  • 风险等级评估: 低/中/高/极高风险等级分类

自动止损止盈

  • 止损机制: 价格跌破买入价5%时自动卖出
  • 止盈机制: 价格达到预期收益目标时自动卖出
  • 风险回报比: 基于风险调整卖出决策

风险监控

  • 实时评估: 实时评估交易风险等级
  • 违规记录: 详细记录风险违规情况
  • 预警机制:极高风险情况自动预警

📈 回测引擎功能

交易执行

  • 信号执行: 基于技术指标规则生成买卖信号
  • 仓位管理: 支持全仓买卖交易
  • 成本模拟: 真实的手续费和滑点成本模拟

绩效指标

  • 收益指标: 年化收益率、总收益率、净利润
  • 风险指标: 最大回撤、年化波动率
  • 风险调整指标: 夏普比率、索提诺比率
  • 交易指标: 胜率、交易次数、平均持仓天数

可视化展示

  • 净值曲线: 策略收益vs基准收益对比
  • 交易信号: 买卖信号在价格图上的标记
  • 绩效报告: 详细的回测绩效分析报告

🎨 界面功能

侧边栏配置

  • 📊 回测参数设置: 股票代码、时间周期、回测范围
  • 📈 技术指标选择: 13种技术指标选择和说明
  • 🛡️ 风险控制设置: 风险控制开关和详细说明
  • ⚙️ 优化设置: 算法选择和配置
  • 🔧 参数范围设置: 动态参数范围配置

主界面展示

  • 📊 数据预览: 股票行情K线图
  • 🎯 最优参数: 最优参数组合显示
  • 📈 回测曲线: 策略收益vs基准收益曲线
  • 📋 优化结果: 所有参数组合的详细结果表

交互功能

  • 🎯 实时进度: 参数优化进度条和状态显示
  • 📋 指标说明: 可展开的技术指标详细说明
  • 🛡️ 风险说明: 可展开的风险控制功能说明

🔧 扩展开发

添加新指标

  1. indicators/technical_indicators.py 中添加指标计算方法
  2. config/INDICATOR_PARAMS.py 中添加参数配置
  3. app.py 中添加指标说明文字

添加新算法

  1. optimization/optimizer.py 中实现新算法
  2. app.py 中添加算法选项
  3. 更新前端界面配置

自定义风险策略

  1. risk_management/risk_manager.py 中实现新策略
  2. backtest/backtest_engine.py 中集成风险控制
  3. 更新风险控制配置选项

📊 性能优化

计算性能

  • 并行处理: 支持多核CPU并行计算
  • 内存优化: 分批处理大数据集,避免内存溢出
  • 缓存机制: 智能缓存计算结果,提升效率

适用场景

  • 数据规模: 支持3年内日线数据的优化
  • 参数空间: 支持上千种参数组合的搜索
  • 计算时间: 优化时间控制在可接受范围内

🐛 常见问题

Q: 支持哪些股票市场?

A: 目前支持A股市场,股票代码格式为000001.SZ或600036.SH。

Q: 风险控制是必须的吗?

A: 不是必需的,用户可以选择开启或关闭风险控制功能。

Q: 优化结果可靠吗?

A: 系统使用历史数据进行优化,结果仅供参考,实际交易需谨慎。

Q: 系统性能如何?

A: 支持并行计算,对于1年数据和合理参数范围,优化时间在分钟级别。

📄 许可证

GPL License

🤝 贡献指南

欢迎提交Issue和Pull Request来改进项目!

代码规范

  • 遵循PEP 8代码规范
  • 添加适当的注释和文档
  • 确保代码测试通过

📞 技术支持

如有问题或建议,请通过以下方式联系:


注意: 本系统仅供学习和研究使用,不构成投资建议。实际交易请谨慎评估风险。

About

一个基于Python的股票技术指标参数优化与历史回测系统,通过算法搜索最优参数组合,辅助确定股票交易策略的最佳参数配置。

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages