# backtest **Repository Path**: wkl-king/backtest ## Basic Information - **Project Name**: backtest - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-02-28 - **Last Updated**: 2026-03-12 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 智能股票回测系统 ## 项目概述 智能股票回测系统是一个基于Python和Streamlit的量化交易策略回测工具,主要用于测试和验证基于技术指标的股票交易策略。系统支持回测、实时扫描和选股功能,并提供详细的交易分析和可视化结果。 ## 功能特点 - **策略回测**:基于布林带和移动平均线的交易策略回测 - **实时扫描**:定时扫描股票,执行买入卖出操作 - **智能选股**:根据技术指标和基本面筛选符合条件的股票 - **详细分析**:提供资产曲线、交易统计和K线图等分析工具 - **钉钉通知**:交易操作实时通知 - **数据缓存**:使用SQLite数据库缓存股票数据,提高效率 ## 安装要求 ### 环境要求 - Python 3.7+ - pip ### 依赖包 **方法一:使用requirements.txt安装** ```bash pip install -r requirements.txt ``` **方法二:手动安装** ```bash pip install streamlit pandas numpy matplotlib plotly requests ``` ### 数据接口 - 使用tushare pro API获取股票数据 - 需要在`pro_api_skill.py`中配置tushare pro的token ## 运行步骤 1. **配置API** - 在`pro_api_skill.py`中设置tushare pro的token 2. **启动应用** ```bash streamlit run app_streamlit.py ``` 3. **访问应用** - 打开浏览器,访问终端中显示的URL(通常是 http://localhost:8501) ## 使用说明 ### 1. 策略参数设置 在侧边栏设置以下参数: - **初始资金**:回测的初始资金 - **最大仓位比例**:单只股票的最大持仓比例 - **使用趋势过滤**:是否使用60日均线作为趋势过滤 - **布林带参数**:中轨时间窗口和标准差倍数 ### 2. 回测设置 - **股票代码**:输入要回测的股票代码,逗号分隔 - **开始日期**:回测的开始日期 - **结束日期**:回测的结束日期 - **显示成交量**:是否在K线图中显示成交量 ### 3. 钉钉通知设置 - **钉钉机器人Webhook URL**:用于接收交易通知的钉钉机器人URL ### 4. 定时扫描设置 - **启用定时扫描**:开启后将在每天9:20、13:30、19:00执行扫描 ### 5. 选股配置 - **启用选股功能**:开启选股功能 - **选股日期**:选择选股的日期 - **收盘价筛选**:设置股票收盘价的范围 - **量比筛选**:设置股票量比的范围 - **执行选股**:点击按钮执行选股 ### 6. 运行回测 - 点击"运行回测"按钮开始回测 - 回测完成后,系统将显示: - 回测结果(初始资金、最终资金、总收益率、最大回撤等) - 资产曲线 - K线图(包含买入卖出标记) - 交易详情 - 股票交易统计 - 选股结果 ## 策略说明 ### 买入逻辑 1. **技术指标条件**:价格上穿布林带中轨 - 当前收盘价 > 布林带中轨 - 前一天收盘价 ≤ 布林带中轨 2. **趋势过滤条件**(可选): - 当启用趋势过滤时,要求价格在60日均线上方 3. **资金条件**: - 有足够现金执行买入 4. **仓位管理**: - 首次开仓:无特殊限制 - 加仓:确保加仓后总持仓不超过单只股票最大限额 5. **买入执行**: - 固定买入1手(100股) - 记录交易并发送钉钉通知 ### 卖出逻辑 1. **连续涨停开板止盈**: - 连续两天涨停 - 第三天未涨停 - 且当前盈利 ≥ 10% 2. **时间止损**: - 持有超过60个交易日未达标 3. **卖出执行**: - 卖出全部持仓 - 计算收益并记录交易 - 发送钉钉通知 ## 注意事项 1. **数据接口**:系统使用tushare pro API获取数据,需要有效的token 2. **交易时间**:定时扫描仅在工作日的指定时间执行 3. **风险控制**:系统设置了最大仓位比例,控制单只股票的风险 4. **通知功能**:钉钉通知需要正确配置Webhook URL 5. **数据缓存**:系统会缓存股票数据到SQLite数据库,提高后续运行速度 6. **选股结果**:选股结果会保存在session state中,可在回测结果页面查看 ## 系统架构 - **stock_backtest.py**:核心回测和交易逻辑 - **app_streamlit.py**:Streamlit用户界面 - **pro_api_skill.py**:tushare pro API配置 - **stock_backtest.db**:SQLite数据库,用于缓存数据和存储配置 ## 扩展建议 1. **策略优化**:可以添加更多技术指标和交易策略 2. **风险管理**:可以增加更复杂的风险管理策略 3. **回测报告**:可以生成更详细的回测报告 4. **多策略对比**:可以支持多个策略的同时回测和对比 5. **实盘对接**:可以考虑对接券商API,实现自动交易 --- **免责声明**:本系统仅用于学习和研究目的,不构成任何投资建议。投资有风险,入市需谨慎。