X
A 股量化選股 · Python 3.10+

建立收盤後 A 股
自動選股與
飛書推送流程

Sequoia-X V2 是面向 A 股市場的 Python 量化選股系統。它把日 K 行情寫入本地 SQLite,依序執行技術形態與公告掃描策略,再將命中結果路由至飛書 Webhook。

6.6k
GitHub Stars
7
主程式載入策略
2
執行模式
MIT
README 授權聲明
01
系統定位

A 股行情、策略掃描與
通知管線

Sequoia-X V2 將 A 股收盤後選股拆成資料、策略與通知三層。資料引擎從 baostock 取得後復權日 K,寫入 data/sequoia_v2.db;策略讀取本地行情後回傳股票代碼。

日常模式先補齊最新行情,再執行主程式登錄的策略。策略有結果時,FeishuNotifier 產生互動卡片,並依 webhook_key 選擇策略專屬 Webhook;未設定專屬值時使用預設 Webhook。

回填模式用於首次建立或補齊歷史資料;日常模式處理增量同步、策略運算與通知。兩種模式共用同一份設定與 SQLite 資料庫。

Sequoia-X · 日常執行流程
行情同步→ SQLite→ 策略掃描→ 股票名稱查詢→ 飛書卡片
A-Share Quantitative Stock Selection System V2
— sngyai/Sequoia-X README
02
Python 3.10+

安裝套件並建立
行情資料庫

準備 Python 3.10 以上環境。複製 repository 後,使用 uv sync 或 pip install . 安裝 pyproject.toml 宣告的依賴。

git clone https://github.com/sngyai/Sequoia-X.git cd Sequoia-X # 二選一 uv sync pip install .

環境變數與飛書 Webhook

複製範例設定並編輯 .env。FEISHU_WEBHOOK_URL 是必填 fallback;策略專屬值使用 STRATEGY_WEBHOOK_* 前綴。

cp .env.example .env # 編輯 .env,填入飛書 Webhook URL # 首次執行:回填歷史日 K python main.py --backfill # 日常執行:更新行情、掃描策略、推送結果 python main.py
首次必須回填。本地資料庫沒有股票資料時,日常模式會記錄警告並寫入 0 筆;先執行 python main.py --backfill。不要把真實 Webhook token 提交至版本控制。
03
七個主程式策略

技術形態與公告事件的
掃描入口

main.py 目前建立七個 BaseStrategy 子類。README 的策略表列出六個技術策略;目前程式碼另載入 PrivatePlacementStrategy,用 akshare 查詢近期定向增發資料。

Trend · 01
MaVolume
均線與成交量
掃描 5 日均線上穿 20 日均線,並要求當日成交量高於 20 日均量的 1.5 倍。
Breakout · 02
TurtleTrade
20 日突破
檢查收盤價突破前 20 日高點、成交額門檻與陽線條件,再依流通市值排序。
Pattern · 03
HighTightFlag
高窄旗形
尋找 40 日強動量、10 日收斂、高位抗跌與縮量同時成立的股票。
Pattern · 04
LimitUpShakeout
漲停後洗盤
檢查昨日漲停,以及今日收陰、放量且最低價未跌破昨日收盤的組合。
Reversal · 05
UptrendLimitDown
上升趨勢跌停
在 20 日均線高於 60 日均線的條件下,尋找放量跌停訊號。
Strength · 06
RpsBreakout
相對強度突破
計算 120 日報酬橫向排名,保留 RPS 90 以上且接近滾動高點的標的。
Event · 07
PrivatePlacement
定向增發公告
透過 akshare 取得全部增發資料,篩選最近七天的定向增發股票代碼。

策略選擇表

觀察目標策略資料需求
均線、成交量與價格突破MaVolume、TurtleTrade至少 20–21 根日 K
整理、洗盤與跌停型態HighTightFlag、LimitUpShakeout、UptrendLimitDown依策略為 3–60 根日 K
全市場相對強度RpsBreakout120 日價格序列
近期定向增發PrivatePlacementakshare 公告資料
04
資料與擴充結構

可重跑的資料流程與
策略介面

系統以本地資料庫作為策略共同輸入。回填、增量更新、策略掃描與通知分別由獨立模組負責。

RULE 01

先建立本地歷史資料

--backfill 逐一補齊股票日 K;已更新至當日的股票會跳過,因此中斷後可以重新執行。

來源 · sequoia_x/data/engine.py
RULE 02

後復權資料集中保存

baostock 查詢使用 adjustflag="1"。OHLCV 與成交額寫入 SQLite 的 stock_daily 表。

來源 · sequoia_x/data/engine.py
RULE 03

增量同步限制在缺少日期

日常模式比較每檔股票的最後日期,只為缺少的區間建立任務,最多使用八個 worker。

來源 · sequoia_x/data/engine.py
RULE 04

策略共用抽象介面

新增策略時繼承 BaseStrategy、實作 run() 並設定 webhook_key,再加入 main.py 的策略清單。

來源 · sequoia_x/strategy/base.py · main.py
RULE 05

Webhook 依策略路由

設定 STRATEGY_WEBHOOK_* 可將不同策略送至不同機器人;缺少專屬值時回退至 FEISHU_WEBHOOK_URL。

來源 · .env.example · core/config.py
RULE 06

失敗留在日誌

資料查詢、策略計算與飛書請求各自捕捉錯誤。飛書 HTTP 200 之外,回應內的 code 也必須為 0。

來源 · data/engine.py · notify/feishu.py
05
首次回填至排程

建立資料庫並執行
每日掃描

以下流程沿用 README 的安裝與執行命令。先完成一次回填,再測試日常模式與 crontab。

~/Sequoia-X · initialization
$ uv sync 依 pyproject.toml 建立 Python 環境
$ cp .env.example .env 編輯 .env;填入 FEISHU_WEBHOOK_URL,視需要設定策略專屬 Webhook
$ python main.py --backfill 取得全市場股票代碼,將後復權歷史日 K 寫入 SQLite
$ python main.py 同步缺少的交易日 → 執行策略 → 有結果時推送飛書卡片
$ crontab -e 15 19 * * 1-5 cd /root/Sequoia-X && .venv/bin/python main.py >> log.txt 2>&1 排程範例:週一至週五 19:15 執行;部署時替換為實際路徑
python main.py --backfill
python main.py
— sngyai/Sequoia-X README · 兩種執行模式

可觀察的完成條件

data/sequoia_v2.db 已建立且含有 stock_daily 資料;日常模式完成後,日誌顯示各策略的命中數。只有策略回傳非空清單時才會送出飛書卡片。

06
運行與風險邊界

資料限制、憑證管理與
投資判斷

  • 此工具輸出候選清單,不是投資建議。Repository 沒有提供回測績效、交易成本模型或報酬保證;下單前必須另行驗證市場、風險與資金條件。
  • 日常模式依賴既有資料庫。沒有完成首次回填時,增量同步會寫入 0 筆並跳過有效掃描。
  • 飛書預設 Webhook 是必填設定。Settings 缺少 FEISHU_WEBHOOK_URL 時會產生驗證錯誤;只想本地掃描仍需調整程式或提供有效設定。
  • Webhook URL 屬於憑證。把真實 token 留在本機 .env,不要貼入報告、日誌或 commit。
  • 資料品質受外部來源影響。歷史行情來自 baostock,定增公告來自 akshare 封裝的東方財富資料;API 失敗與市場休市都可能導致空結果。
  • 門檻是程式中的固定規則。漲跌停比例、視窗與成交量倍數未按股票板塊動態調整;套用前先檢查規則是否符合目標市場。
  • 排程路徑只是 README 範例。將 /root/Sequoia-X 與 Python 路徑改成部署機器的實際位置,並確認時區與交易日安排。
  • 授權資訊需要二次確認。README 標示 MIT,但目前 repository 根目錄沒有獨立 LICENSE 檔;再散布或商業使用前先向維護者確認適用條款。
07
擴充與維運

新增策略、測試與
部署檢查

先以現有策略完成資料與通知驗證,再新增選股邏輯。每個策略維持單一 run() 入口,輸出股票代碼清單。

進階工作地圖

1. 建立策略子類。繼承 BaseStrategy,注入 DataEngine 與 Settings,實作 run()。

2. 設定通知路由。為策略指定 webhook_key,並在 .env 加入相符的 STRATEGY_WEBHOOK_*。

3. 登錄主程式。在 main.py 匯入並加入策略清單;空結果會略過通知。

4. 補齊測試。使用 pytest 驗證策略、資料引擎、設定與通知;開發依賴另含 Hypothesis 與 pytest-mock。

5. 監控排程。保留 stdout 與 stderr 日誌,檢查行情寫入數、各策略命中數及飛書回應。

延伸閱讀

① README.md:運行模式、安裝步驟、資料來源與排程範例。
② data/engine.py:SQLite schema、回填與增量同步。
③ strategy/base.py:策略擴充介面與回傳契約。

python main.py
— sngyai/Sequoia-X README · 日常模式