Sequoia-X 详细部署教程

Sequoia-X 是一个面向 A 股市场的自动化选股系统,基于 Python 构建,能够每天收盘后自动运行多种技术形态策略,并将选股结果推送至飞书。本教程将指导您完成从环境准备到日常运行的完整部署流程。


1. 系统要求与准备工作

环境要求

  • Python:版本 ≥ 3.10
  • 操作系统:Windows、macOS 或 Linux(建议使用 Linux 服务器以实现自动化运行)
  • 网络:能够访问互联网以下载数据

核心依赖说明

项目基于以下组件构建:

  • 数据源baostock —— 免费、无需注册、无请求限制。
  • 数据处理:使用 SQLite 进行本地数据存储。
  • 依赖管理:推荐使用 uv(快速 Python 包管理器),也可使用 pip

2. 安装步骤

第一步:克隆项目

打开终端,执行以下命令将项目克隆到本地:

1
2
git clone https://github.com/sngyai/Sequoia-X.git
cd Sequoia-X

第二步:安装 Python 依赖

项目提供了两种依赖安装方式,推荐使用 uv,速度更快。

方式一:使用 uv(推荐)

1
2
3
4
# 安装 uv(如果尚未安装)
pip install uv
# 使用 uv 同步依赖,会自动创建虚拟环境
uv sync

方式二:使用 pip

1
2
# 安装项目及其依赖
pip install .

注意:建议在 Python 虚拟环境中执行上述命令,以避免包冲突。

第三步:配置环境变量

项目依赖环境变量进行配置,需复制示例文件并修改。

1
cp .env.example .env

然后编辑 .env 文件,至少需要填写飞书 Webhook URL,这是接收选股结果的通知渠道。

飞书 Webhook 获取方式

  1. 在飞书群组中,点击群设置 → 群机器人添加机器人自定义机器人
  2. 创建后,复制机器人的 Webhook 地址
  3. 将复制的地址填入 .env 文件中的 FEISHU_WEBHOOK_URL 变量。

3. 初始化数据

Sequoia-X 需要本地存储全市场股票的历史日K线数据,首次运行前必须执行**回填(Backfill)**操作。

执行历史数据回填

1
python main.py --backfill
  • 耗时:约 12 分钟,会拉取约 5200 只 A 股的历史后复权日K线数据。
  • 存储:数据将存储在本地 data/sequoia_v2.db SQLite 数据库中。此步骤仅在首次部署时执行一次。
  • 注意:过程中请保持网络稳定。代码已包含重试机制,若因网络问题中断可重新运行。

4. 日常运行

数据回填完成后,即可执行日常选股操作。

手动运行

在项目根目录下执行:

1
python main.py

系统将自动执行以下流程(约 2-3 分钟):

  1. 增量更新:使用 8 个进程并行拉取当天最新的日K线数据。
  2. 运行策略:依次执行所有内置策略进行选股。
  3. 推送通知:将筛选出的股票列表通过飞书 Webhook 发送到您的群组。

自动运行(推荐)

您可以设置计划任务,让系统在每个交易日的收盘后自动运行。

使用 Crontab(Linux/macOS)
编辑 crontab 文件(crontab -e),添加以下内容,设置在交易日(周一至周五)的 19:15 执行:

1
15 19 * * 1-5 cd /root/Sequoia-X && /usr/bin/python main.py >> logs.txt 2>&1
  • 请将 /root/Sequoia-X 替换为您的项目实际路径。
  • /usr/bin/python 替换为您实际 Python 的路径(可使用 which python 查看)。
  • 日志会追加到 logs.txt 文件中,方便排查问题。

5. 策略与模式说明

内置策略

项目内置了6种技术形态选股策略,您无需配置即可全部运行:

策略名称 简要说明
TurtleTrade 海龟突破策略:20日新高 + 成交额过亿 + 阳线确认。
MaVolume 均线放量突破策略。
HighTightFlag “高而窄的旗形”整理突破形态。
LimitUpShakeout 涨停后洗盘回踩确认。
UptrendLimitDown 上升趋势中的跌停反包形态。
RpsBreakout 欧奈尔RPS相对强度突破。
  • 选股结果会按涨幅流通市值等指标排序。

两种运行模式

  1. 日常模式 (python main.py):增量更新数据 + 运行策略 + 推送结果。
  2. 回填模式 (python main.py --backfill):全市场历史数据一次性灌入,用于初始化。

6. 常见问题与故障排查

  • Q: 执行 --backfill 时中断或报错怎么办?
    • A: 代码已内置重试和自动重连机制。如果因网络问题中断,可以直接重新运行 python main.py --backfill 命令,它会自动继续未完成的部分。
  • Q: 如何更新到最新版本?
    • A: 进入项目目录,执行 git pull 拉取最新代码,然后根据更新说明决定是否需要重新安装依赖(uv syncpip install .)。
  • Q: 选股结果没有推送到飞书?
    • A: 请检查:
      1. .env 文件中的 FEISHU_WEBHOOK_URL 是否正确。
      2. 网络是否可以访问飞书 Webhook 地址。
      3. 查看运行日志(终端输出或 logs.txt)中是否有相关错误信息。
  • Q: 数据库文件可以迁移吗?
    • A: 可以。data/sequoia_v2.db 是标准 SQLite 文件,您可以直接将其拷贝到其他机器上使用,无需重新回填。

7. 总结与建议

通过以上步骤,您已成功部署了一个全自动的A股选股系统。它每天在收盘后默默运行,将符合技术形态的股票准时推送到您的飞书,大大节省了复盘筛选时间。

进阶建议

  • 定制策略:您可以参考 sequoia_x/strategy/ 目录下的策略基类 (base.py),编写并添加自定义的选股策略。
  • 优化触发:除了飞书,您也可以修改 sequoia_x/notify/ 模块,接入钉钉、企业微信等其他通知渠道。

许可证:本项目采用 MIT 许可证,可自由使用和修改。