📌 项目地址:sngyai/Sequoia-X | ⭐ 5,998 颗星 | 🔧 Python | 📜 未标注
先说它是什么
A 股收盘后的形态选股工具。每天自动拉全市场日 K 数据,跑六个技术形态策略,把符合条件的股票推送到飞书群。整个流程 2~3 分钟。
它的前身是老牌开源项目 Sequoia,V2 从零重构,架构上换了几个关键部件。我更想聊的是这几个部件为什么这么选,因为对任何自己做数据项目的人都有参考价值。
三个工程决策
数据源用 baostock,放弃东方财富。 老版本用户都被东财反爬折磨过。baostock 免费、无需注册、无限流,这三条对个人项目几乎是硬需求。代价是只有日 K 数据——但形态选股本来就只看日线,这个取舍很干净。
复权用后复权(hfq)。 这是最容易被忽略的一条。后复权的历史价格不因除权改变,数据落库后永远不用重算,天然适合增量更新。前复权每逢除权除息,全量历史都得跟着变,做增量存储会很痛苦。README 里专门写了这一点,说明作者是真踩过坑。
存储用本地 SQLite(data/sequoia_v2.db),零数据库依赖,库文件拷到别的机器直接能跑。增量更新走 8 进程并行,全市场约 12 分钟完成首次回填,日常更新 2~3 分钟。
六个内置策略
| 策略 | 逻辑 |
|---|---|
| TurtleTrade | 20日新高 + 成交额过亿 + 阳线防诱多,按涨幅排序 |
| MaVolume | 均线 + 放量突破 |
| HighTightFlag | 高而窄的旗形整理突破 |
| LimitUpShakeout | 涨停洗盘回踩确认 |
| UptrendLimitDown | 上升趋势中的跌停反包 |
| RpsBreakout | 欧奈尔 RPS 相对强度突破 |
全是突破类形态,风格统一。每个策略一个文件,放在 sequoia_x/strategy/ 下,继承统一的抽象基类。想加自己的形态,照着任意一个文件写子类就行。
代码结构是标准 OOP 工程分层:core 放配置(Pydantic-settings)和日志(rich),data 放数据引擎,strategy 放策略,notify 放飞书推送。tests/ 里还配了 hypothesis 属性测试——个人量化项目里写测试的不多见,这一点加分。
上手四步
要求 Python >= 3.10。
# 1. 装依赖,推荐 uv
uv sync
# 或者 pip install .
# 2. 配置飞书推送
cp .env.example .env
# 编辑 .env,填写飞书 Webhook URL
# 3. 首次回填历史数据(约12分钟)
python main.py --backfill
# 4. 日常运行
python main.py
配个 crontab 就全自动了:
15 19 * * 1-5 cd /root/Sequoia-X && .venv/bin/python main.py >> log.txt 2>&1
定位要说清楚
它不是回测框架。没有收益统计,不下单,不做仓位管理,就干一件事:每天把符合形态的股票筛出来告诉你。和 vn.py、backtrader 那套是两个物种,别拿来对比。
几个实际限制:
- 飞书推送是内置的唯一通知渠道,不用飞书的话得自己改
sequoia_x/notify/feishu.py - baostock 是免费服务,没有 SLA,数据偶尔延迟
- 策略输出只代表”符合形态”,和会不会涨没有必然关系,这一点项目自己也没做过回测验证
谁该看这个项目
两类人。一是懂点 Python、有自己形态逻辑的个人投资者,拿来当每日扫描工具,改造成本很低。二是想做金融数据管道的人——baostock + 后复权 + SQLite + 多进程增量这套组合,哪怕不做选股,也值得抄走。