
量化策略開發有個高門檻:你得懂交易邏輯,還得會寫程式碼。Claude 把這個門檻降低了一半——你只需要懂交易邏輯,程式碼的部分可以讓它來。
這篇文章記錄我用 Claude 從零開始寫一個完整量化訊號系統的過程。
我的策略背景
我跑的是突破類趨勢策略,核心邏輯是唐奇安通道(Donchian Channel):
- 當價格突破過去 N 根 K 線的最高價 → 買入
- 當價格跌破過去 M 根 K 線的最低價 → 賣出
聽起來簡單,但要做成能在 8 個品種、3 個時間週期上自動跑的系統,並且每半小時推送訊號到 Telegram,需要不少工程量。
第一步:跟 Claude 描述策略邏輯
我的輸入很簡單:
“幫我寫一個 Python 指令碼,用 yfinance 拉 BTC 的 1 小時 K 線,實現唐奇安通道突破策略:價格突破過去 20 根最高價買入,跌破過去 10 根最低價賣出。每次訊號變化時透過 openclaw 發 Telegram 訊息。”
Claude 給出的初版程式碼覆蓋了:
- yfinance 資料拉取
- 訊號計算邏輯
- 狀態持久化(避免重複推送)
- openclaw CLI 呼叫傳送訊息
這一步花了約 10 分鐘。
第二步:迭代改進
初版策略的問題:在震盪行情裡頻繁觸發虛假訊號,來回買賣虧手續費。
我告訴 Claude:
“在震盪行情(ADX 低、ATR 收縮)時,跳過買入訊號;只在趨勢行情(ADX > 22,價格在 EMA200 上方)才執行。加入 ATR 追蹤止損。”
Claude 加入了以下改進:
- ADX 狀態判斷:區分趨勢市/震盪市
- ATR 追蹤止損:持倉期間動態調整止損位
- 自適應引數:不同品種用不同的 ATR 倍數(加密貨幣 k=2.55,大宗商品 k=1.8)
整個迭代過程:我描述問題 → Claude 改程式碼 → 我回測驗證 → 繼續改。大約 3 輪迭代後策略穩定。
第三步:多品種 + 多時間週期
把策略從單品種擴充套件到多品種時,有一個工程挑戰:同時拉 8 個品種的資料很慢,而且 yfinance 有頻率限制。
解決方案是增量快取,Claude 幫我設計了一個"探針"機制:
def probe_last_bar_ts(symbol, interval):
"""只拉最近幾根 K 線,判斷是否有新 bar"""
# 如果時間戳沒變化,直接跳過,不重新計算訊號
...
這樣每次執行時,沒有新資料的品種直接跳過,效能提升 5-10 倍。
最終收益表現
下圖是 2024 年以來,唐奇突破策略 vs 混合版(加入 ATR/ADX 過濾)的回測對比:

混合版在震盪行情(BTC 2024 上半年)明顯減少了交易頻率,手續費損耗更低;趨勢行情(BTC 2024 Q4 大漲)跟隨效果接近。
BTC 4H 時間週期的訊號標註效果:

我學到的幾件事
1. 用自然語言描述"異常"讓 Claude 修復
不要說"最佳化策略效能",要說"在 BTC 2024 年 3 月震盪區間裡,策略在兩週內觸發了 12 次買賣,虧了約 3% 手續費,怎麼減少這種情況"。
具體的問題描述比模糊的最佳化目標有效 10 倍。
2. 讓 Claude 先解釋再寫程式碼
對於複雜邏輯(比如自適應狀態機),先讓 Claude 用文字解釋實現思路,確認邏輯對了再讓它寫程式碼。節省很多 debug 時間。
3. 回測資料要真實
讓 Claude 幫你模擬回測,結果看起來很美。但真正執行前,一定要用真實的歷史資料(yfinance 足夠用)跑一遍,對得上再上實盤。
工具鏈
- 資料:yfinance(免費,覆蓋股票/期貨/加密貨幣)
- 計算:pandas、numpy
- 推送:OpenClaw CLI(
openclaw message send) - 定時:Linux cron,每 30 分鐘執行一次
- 託管:跑在區域網的 Linux 機器上,也可以跑在 VPS
策略程式碼或者回測方法有問題,歡迎來 Telegram 找我。
⚠️ 本文僅記錄個人實踐,不構成投資建議。量化策略過去表現不代表未來,實盤需做好風控。
📷 封面圖 · Flux Schnell AI 生成 · panshi.io 品牌風格