本项目是一个基于Python和akshare的A股量化选股系统,核心策略是”碗口反弹”,并提供Web界面和钉钉通知功能。本教程将指导你在Linux服务器(或具备Python环境的本地机器)上,从零开始完成部署和配置。

系统架构与核心功能概览

在开始部署前,先了解系统的核心组成部分,有助于后续配置。

  • 核心策略碗口反弹策略,结合KDJ指标、趋势线和成交量异动进行选股。系统会自动过滤ST、退市等风险股票。
  • B1完美图形匹配:一个特色功能,通过将当前股票走势与10个历史成功案例进行三维相似度匹配,为选股结果排序。
  • 两大模块
    1. 数据与策略引擎:负责获取股票数据、计算技术指标、执行选股逻辑。主要由Python脚本和strategy/utils/目录下的模块构成。
    2. Web展示端:基于Flask的Web界面,用于可视化查看数据和选股结果。
  • 通知与自动化:通过钉钉机器人发送选股结果和K线图,并支持通过crontab设置定时任务。

第一步:环境准备与项目获取

  1. 基础环境要求

    • 操作系统:Linux (推荐Ubuntu 20.04+)、macOS或Windows (需支持Python)。
    • Python版本Python 3.8或更高版本
    • 关键依赖pip(Python包管理工具)、git(用于克隆项目)。
  2. 克隆项目仓库

    1
    2
    git clone https://github.com/Dzy-HW-XD/a-share-quant-selector.git
    cd a-share-quant-selector
  3. 安装Python依赖包
    项目所需依赖已定义在requirements.txt中。建议在虚拟环境中进行安装,以避免包冲突。

    1
    2
    3
    4
    5
    6
    7
    # 创建并激活虚拟环境 (可选但强烈推荐)
    python3 -m venv venv
    source venv/bin/activate # Linux/macOS
    # venv\Scripts\activate # Windows

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

第二步:数据初始化与首次抓取

系统需要历史数据才能进行选股分析。首次运行必须执行数据初始化。

1
2
# 首次全量抓取6年历史数据 (耗时较长,建议后台运行)
python3 main.py init
  • 数据存储:抓取的数据会以CSV格式保存在项目根目录下的data/文件夹中。
  • 网络要求:此过程需要稳定的网络连接以访问akshare的数据源。

第三步:配置钉钉通知 (可选但推荐)

如果你希望选股结果自动推送到钉钉群,需要进行此配置。否则,可以跳过此步,仅通过Web界面查看结果。

  1. 获取钉钉机器人Webhook和Secret

    • 在你的钉钉群中添加一个”自定义机器人”。
    • 安全设置选择”加签”,并获取Secret。
    • 获取机器人的Webhook地址。
  2. 编辑配置文件

    • 项目中的配置文件位于config/config.yaml
    • 使用文本编辑器(如vimnano)打开该文件,找到钉钉相关配置项,填写你获取的webhooksecret
    1
    2
    3
    4
    # config/config.yaml (示例)
    dingtalk:
    webhook: "https://oapi.dingtalk.com/robot/send?access_token=你的token"
    secret: "你的加签secret"

第四步:执行选股与运行Web界面

完成配置后,即可运行选股程序并启动Web界面。

  1. 执行选股

    1
    2
    3
    4
    5
    6
    7
    8
    # 完整流程:更新数据 -> 选股 -> 发送钉钉通知 (如果配置了)
    python3 main.py run

    # 快速测试 (只处理前500只股票,用于验证)
    python3 main.py run --max-stocks 500

    # 启用B1完美图形匹配
    python3 main.py run --b1-match
  2. 启动Web管理界面

    1
    2
    # 默认监听5000端口
    python3 main.py web
    • 启动后,在浏览器中访问 http://你的服务器IP:5000 即可看到Web界面,可以在此查看股票列表、K线图和选股结果。

第五步:设置定时任务 (实现自动化)

为了每日自动运行选股,可以将main.py run命令添加到crontab定时任务中。

1
2
3
4
5
# 编辑当前用户的crontab
crontab -e

# 添加一行:每天股市收盘后(如15:05)执行,仅工作日(周一至周五)
5 15 * * 1-5 cd /path/to/your/a-share-quant-selector && /usr/bin/python3 main.py run >> /var/log/quant-selector.log 2>&1

重要提醒:请务必将/path/to/your/a-share-quant-selector替换为你的实际项目路径,并确保python3命令路径正确(可通过which python3查看)。

常见问题与故障排查

Q1: 数据更新或选股时出现网络错误?

  • 原因:akshare数据源或网络不稳定。
  • 解决:这是常见问题,可以稍后重试。系统本身有基本的重试机制,但若持续失败,可考虑手动重新运行python3 main.py update

Q2: 钉钉没有收到通知?

  • 检查:确认config/config.yaml中的webhooksecret配置完全正确。检查项目日志输出,看是否有钉钉API返回的错误信息(如限流错误)。系统内置了限流保护,如果消息过多,发送可能会有延迟。

Q3: Web界面无法访问?

  • 检查:确认Flask服务是否正常运行,以及服务器的防火墙是否开放了5000端口。如果在云服务器上,需在安全组规则中放行该端口。

Q4: 如何调整选股策略参数?

  • 方法:直接编辑config/strategy_params.yaml文件。例如,可以调整J_VAL(KDJ超卖阈值)、N(成交量倍数)等参数。修改后重新运行python3 main.py run即可生效。

至此,你已经完成了A股量化选股系统的部署。这个系统为你提供了一个可扩展的量化研究和自动化选股框架。请牢记,本项目仅供学习研究使用,所有选股结果均不构成投资建议,股市有风险,投资需谨慎。你可以基于此框架,探索和调整属于自己的策略。