📌 项目地址sngyai/Sequoia-X | ⭐ 5,998 颗星 | 🔧 Python | 📜 未标注

先说它是什么

A 股收盘后的形态选股工具。每天自动拉全市场日 K 数据,跑六个技术形态策略,把符合条件的股票推送到飞书群。整个流程 2~3 分钟。

它的前身是老牌开源项目 Sequoia,V2 从零重构,架构上换了几个关键部件。我更想聊的是这几个部件为什么这么选,因为对任何自己做数据项目的人都有参考价值。

三个工程决策

数据源用 baostock,放弃东方财富。 老版本用户都被东财反爬折磨过。baostock 免费、无需注册、无限流,这三条对个人项目几乎是硬需求。代价是只有日 K 数据——但形态选股本来就只看日线,这个取舍很干净。

复权用后复权(hfq)。 这是最容易被忽略的一条。后复权的历史价格不因除权改变,数据落库后永远不用重算,天然适合增量更新。前复权每逢除权除息,全量历史都得跟着变,做增量存储会很痛苦。README 里专门写了这一点,说明作者是真踩过坑。

存储用本地 SQLitedata/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 + 多进程增量这套组合,哪怕不做选股,也值得抄走。

这篇文章对你有帮助吗?

发表回复