Computer monitor displaying code in a dark room.

量化策略開發有個高門檻:你得懂交易邏輯,還得會寫程式碼。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 加入了以下改進:

  1. ADX 狀態判斷:區分趨勢市/震盪市
  2. ATR 追蹤止損:持倉期間動態調整止損位
  3. 自適應引數:不同品種用不同的 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 時間週期的訊號標註效果:

BTC 混合版策略訊號圖

我學到的幾件事

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 品牌風格