一个以 AkShare 获取 A 股历史数据,结合 随机森林(RandomForest) 做涨跌概率预测,并提供:
- 单只股票回测(含仓位/止盈止损/净值曲线)
- 自动选股(遍历股票池输出候选标的) -(部分版本)新手实操交易建议导出(买入区间/止盈止损/仓位建议)
本仓库目前以多个版本脚本迭代为主(如 V15.0.py、V22.0.py、Last.py 等),你可以直接运行其中一个脚本体验功能。
- 自动拉取指定股票 2023-01-01 起的 后复权 日线数据
- 计算指标/特征(如 RSI、成交量倍率、趋势得分、ATR、乖离率、换手率等)
- 训练模型预测 “次日上涨概率”
- 按策略规则动态调整仓位,执行止盈/止损
- 输出:
- 训练/测试准确率(仅反映分类正确率,不等于收益率)
- 回测净值曲线、仓位图
- 最大回撤点、夏普、日胜率、交易统计等
- 遍历预设股票池(可在脚本里改)
- 对每只股票进行特征工程与预测,输出候选标的列表
- 结果会按上涨概率排序并导出 CSV
- 更轻量的特征(成交量倍率、趋势得分、ATR)
- 输出“目标仓位比例”“建议下单股数”“移动保护位(止损价)”“风险压力测试”等指令信息
- 同样会绘制策略净值曲线
仓库以脚本为主,版本号文件代表策略/功能迭代。
V22.0.py:增强版主脚本(回测 + 自动选股 + 图表输出 + 日志)Last.py:V13.5 指令面板版本(简化特征 + 仓位建议/保护位)V15.0.py/V16.0.py/V17.0.py/V20.0.py/V21.0.py/V23.0.py等:历史迭代版本(可自行对比)*_data_v2.csv:示例/缓存数据(仓库中看到多只股票的 CSV)*_strategy_result_YYYYMMDD.png/*_enhanced_strategy_result_YYYYMMDD.png:回测图表输出示例auto_selection_result_YYYYMMDD.csv/auto_selection_enhanced_result_YYYYMMDD.csv:选股结果输出示例选股结果_YYYYMMDD.csv、新手实操建议_YYYYMMDD.csv:结果/建议输出示例(仓库中已存在同名文件).gitignore、.idea/:工程配置
从 Last.py 与 V22.0.py 看,核心依赖为:
- Python 3.9+(建议 3.10/3.11)
- pandas
- numpy
- matplotlib
- scikit-learn
- akshare
Windows 终端中文显示:脚本里配置了
SimHei、Microsoft YaHei字体;如果你的环境没这些字体,图表中文可能乱码。
建议使用虚拟环境:
python -m venv .venv
# Windows
.venv\Scripts\activate
# macOS/Linux
source .venv/bin/activate安装依赖(仓库暂未看到 requirements.txt,你可以先手动装):
pip install -U pip
pip install pandas numpy matplotlib scikit-learn akshare如果你希望我把依赖整理成
requirements.txt/pyproject.toml,我也可以按你常用的 Python 版本补一份。
python V22.0.py启动后会提示选择功能:
1:单只股票增强版回测2:自动选股(增强版)
按提示输入股票代码(如 002415、600519)。
python Last.py按提示输入:
- 股票代码(如
601868) - 实盘总本金(元)
脚本会输出类似“量化策略指挥部”的面板,包括:
- AI 信心值(上涨概率)
- 趋势得分、成交倍率
- 目标持仓比例
- 建议下单股数(100 股整数倍)
- 移动保护位(止损价)与潜在亏损测算
以下说明以
V22.0.py/Last.py的实现为准(不同版本细节略有差异)。
- 通过 AkShare 接口
stock_zh_a_hist获取 A 股日线数据 - 使用 后复权(hfq) 以保证价格序列的连续性(更适合长期回测对比)
V22.0 中使用的核心特征包含(以脚本实际为准):
RSI:相对强弱指标MA5/MA20/MA60均线系统MA5_BIAS、MA20_BIAS:均线乖离率(超买超卖参考)Vol_Ratio:成交量倍率(成交量 / 成交量5日均值)Trend_Score:趋势得分(例如收盘在 MA60 上方记 1.0)ATR+ATR_Ratio:波动率与 ATR 占比换手率:若数据源缺失则容错为 0Vol_Change:成交量变化率Industry:行业因子(脚本内置股票-行业映射与数值化)
预测目标(分类标签):
Target = (次日收益率 > 0),即预测“明天涨不涨”。
- 训练集:2023-06-01 ~ 2023-12-31(用于学习近期规律)
- 测试集:2024-01-01 至今(用于回测/评估)
注意:这是一种固定切分方式。实际使用可考虑滚动训练/Walk-forward 等更贴近实盘的方法。
- 预测概率
Prob超过阈值后开仓(阈值在SELECTION_CONDITIONS['min_prob']中配置,默认 0.5) - 按趋势强弱给不同仓位(例如强趋势给到 0.8,弱趋势给到 0.3)
- 止盈:从入场后最高点回撤超过
1.5 * ATR触发 - 止损:亏损超过 2% 或跌破
entry - 2 * ATR触发 - 手续费:用
0.0012(0.12%)模拟(脚本中写明“印花税+佣金”,实际请以券商为准,并考虑滑点)
不同脚本可能输出不同文件名,常见包括:
-
stock_strategy_YYYYMMDD.log
策略日志(V22.0 使用 logging 输出,便于排查数据抓取/回测过程) -
{code}_enhanced_strategy_result_YYYYMMDD.png
回测净值曲线 + 仓位图(V22.0 会保存) -
auto_selection_enhanced_result_YYYYMMDD.csv
自动选股结果(包含最新价、上涨概率、趋势得分、RSI、最大回撤、预测准确率等字段) -
(可能)
trade_advice_YYYYMMDD.csv
新手实操建议(部分版本附带:买入区间、止盈止损、仓位建议等)
仓库根目录中也能看到一些已生成的示例输出,例如:
600519_enhanced_strategy_result_20260311.pngauto_selection_enhanced_result_20260311.csv选股结果_20260311.csv新手实操建议_20260311.csv
- 股票代码必须是 6 位纯数字(如
600519、002415) - 网络问题、AkShare 数据源暂时不可用、或该标的停牌等,都可能导致为空
- Windows 通常可用
SimHei、Microsoft YaHei - macOS/Linux 需要安装中文字体或修改 matplotlib 字体配置
- 分类准确率只说明“涨跌方向猜对了多少”,并不直接等价于“可交易收益”
- 交易策略还受仓位、止盈止损、手续费滑点、行情结构等影响
在 V22.0.py 顶部可以找到类似配置:
STOCK_POOL = [...]SELECTION_CONDITIONS = {...}按你的需求修改即可。
- 本项目仅用于 学习与研究(量化、机器学习、回测框架思路),不构成任何投资建议。
- 历史回测不代表未来表现,实盘可能出现连续亏损、滑点扩大、流动性不足、极端行情失效等情况。
- 请务必结合自身风险承受能力,谨慎使用;新手建议先小资金/模拟盘验证。
- AkShare 提供数据接口支持
- scikit-learn / pandas / numpy / matplotlib 等开源生态