雲圖剝頭皮策略:一目均衡表+三重過濾、Python 實現與 223% 回測拆解|Quant Strategies Ep 9 筆記

第 9 課・共 18 課

⚠️ 本站內容僅作教育用途,不構成投資建議。投資涉及風險,作出任何投資決定前請諮詢持牌專業人士。
目錄

Algo-trading with Saleh 的 Saleh 在片中公開一個他自稱私人的剝頭皮策略 Cloud Scalper:以一目均衡表雲圖判斷趨勢,用 Python(Jesse 框架)實現,標題的「223%」是他特定設定下的回測教學案例數字,並非實盤成績。他特別強調全程沒有跑參數優化,認為這降低了過度擬合的機會——這個說法是否成立,正是本課值得拆解的地方。

學習重點

詳細筆記

核心邏輯:雲圖兩重確認

Saleh 先在 TradingView 上講解主指標一目均衡表 Ichimoku Cloud,並把跟策略無關的遲行線(他指「這條綠線沒用」)移除。這個指標的特點是一圖多用:轉換線與基準線分別由 9 期與 26 期的高低價中點算成,反映短期與中期動力;先行帶 A、B 則把更長期的中點向前投射 26 期,兩線之間的著色區域就是「雲圖」,兼具趨勢方向與支持阻力的含義。入場規則分兩層:第一層,轉換線 Conversion Line(藍線)要在基準線 Base Line(紅線)之上,代表短期動力向上。但他明言不會即時入場,要等第二層確認——由先行帶 A 與先行帶 B 圍成的雲圖本身也轉為上升排列(A 在 B 之上)。兩者同時成立,才是有效升勢;短倉條件完全相反。

他預期讀者會問:「早些入場不是賺更多嗎?」他的回應是:圖表上這是容易的例外,實戰中大量假突破會被第二重確認擋下。這是典型「用滯後換取勝率」的取捨——確認越足,入場越遲,但假訊號越少。

TradingView 上的一目均衡表雲圖

截圖出自原片(Algo-trading with Saleh):BTC-USDT 15 分鐘圖上的一目均衡表——轉換線(藍)、基準線(紅)與先行帶圍成的雲圖。

Python 實現:Jesse 框架的策略骨架

轉到 Jesse 建立策略,命名 CloudScalper,並改用 VS Code 編寫(他認為比儀表板內建編輯器好用)。趨勢判斷寫成一個屬性:調用 ta.ichimoku_cloud 時他刻意不傳任何參數,全部用預設值,理由是「策略越簡單,過度擬合機會越低」(摘錄自原片教學):

@property
def trend(self):
    cloud = ta.ichimoku_cloud(self.candles)
    if cloud.conversion > cloud.base and cloud.span_a > cloud.span_b:
        return 1
    elif cloud.conversion < cloud.base and cloud.span_a < cloud.span_b:
        return -1
    return 0

trend 回傳 1、-1 或 0,should_longshould_short 只需檢查它是否等於 1 或 -1。這與上一課 Trend Wave Rider 的寫法一致:每個條件獨立成屬性,入場函數只用 and 串連,方便日後疊加過濾器。

倉位方面,入場用市價單,每單風險為可用保證金的 3%,以 Jesse 內建的 risk_to_qty 反推數量,並傳入交易所費率。止蝕設於入場價減 2.5 倍 ATR——他解釋不想止蝕太貼,否則會錯失大量好機會(摘錄自原片教學):

def go_long(self):
    entry = self.price
    stop = entry - ta.atr(self.candles) * 2.5
    qty = utils.risk_to_qty(self.available_margin, 3,
                            entry, stop, fee_rate=self.fee_rate)
    self.buy = qty, entry

止盈與止蝕單則在 on_open_position 內才提交:止盈設於入場價加 3.2 倍 ATR(短倉相反),數量等於當前倉位。他特別提到一個 Jesse 細節:在 go_long 內直接掛止蝕止盈只適用於期貨交易、不適用於現貨,所以他習慣統一在開倉後才掛單。止盈距離(3.2 倍)略大於止蝕距離(2.5 倍),即贏的單平均比利潤大、輸的單輸得少,盈虧比約 1.28:1。

go_long 的倉位計算程式碼

截圖出自原片(Algo-trading with Saleh):go_long 以市價單入場,止蝕距離 2.5 倍 ATR,risk_to_qty 以 3% 風險反推倉位數量。

第一輪回測:1,000 宗交易與 6,000 美元手續費

首輪回測設定:Binance 永續合約、BTC-USDT、15 分鐘圖,期間由 2024 年初至影片錄製前一日(2025 年 1 月中),開啟 fast mode 與 benchmark。第一次運行甚至沒有執行——程式把條件打成「span A 大於 span A」;修正後第二次運行,淨值曲線明顯異常,追查後發現止盈的加減號倒轉(長倉止盈寫成減 ATR)。兩個錯誤都是靠「結果看起來不對」倒逼出來的。

修正後的赤裸版成績不佳:超過 1,000 宗交易、單是手續費已逾 6,000 美元。Saleh 對此毫不意外,並說了一句值得記下的話:單靠一個指標,不可能找到好策略。這正是策略開發的起點而非終點。

除錯實錄:三個錯誤,三種教訓

值得單獨記下的是片中的除錯過程。第一個錯誤是筆誤:條件寫成「span A 大於 span A」,永遠為假,回測一宗交易都沒有——這類錯誤的訊號是「結果為零」。第二個是方向錯誤:長倉止盈寫成「減 3.2 倍 ATR」,止盈價落在入場價下方,倉位遲遲無法正常平倉,淨值曲線形態怪異——訊號是「曲線看起來不自然」。第三個在後文加 BBW 過濾時出現:條件方向寫反(應為低於 5、寫成高於 5),成績突然轉差才揭出——訊號是「改動後結果與預期相反」。Saleh 沒有剪走任何一段,這其實是量化開發的日常:策略邏輯與程式實現之間的落差,只能靠回測結果的「異常感」逐個逼出來。讀者自己寫策略時,遇到零交易、曲線怪異、結果反常三種情況,第一步永遠是先懷疑程式,而非懷疑策略。

三重過濾:ADX、布林帶寬度、4 小時 EMA200

第一重:ADX 強度過濾。 ADX 上升代表趨勢轉強,低沉代表橫行。Saleh 把閾值設在 50:ADX 高於 50 才允許入場。重跑後交易次數由逾 1,000 宗暴跌至 129 宗(他仍嫌多),最大回撤 -22%,成績明顯改善。他同時加跑 30 分鐘與 1 小時圖對照——1 小時圖此時已錄得盈利,最大回撤約 -8.5%。他隨即把這個版本另存為 CloudScalperHourly,保留日後比較。

第二重:布林帶寬度。 雖然這是趨勢跟隨策略,他不想在價格已急升急跌時追入,於是加入布林帶寬度 BBW 條件:帶寬低於 5(乘 100 與 TradingView 讀數對齊)才入場。這裏又出現第三個錯誤:先寫成「大於 5」,回測成績異常才發現方向寫反。

第三重:錨定時間框架的 EMA200。 他不直接用當前 15 分鐘圖的均線,而是用 Jesse 的 get_candles 抓取 4 小時圖數據,計算 200 期 EMA:價格在 4 小時 EMA200 之上回傳 1、之下回傳 -1,與入場方向一致才放行。這是多時間框架確認的典型寫法——大級別趨勢先行過濾,小級別訊號才有意義。最終入場規則變成(摘錄自原片教學):

def should_long(self) -> bool:
    return (self.trend == 1              # 雲圖兩線同向
            and self.adx                 # ADX > 50
            and self.bbw                 # 布林帶寬度 < 5
            and self.longterm_trend == 1)  # 企穩 4H EMA200

最終入場條件的程式碼

截圖出自原片(Algo-trading with Saleh):should_long 由雲圖方向、ADX、BBW 與 4 小時 EMA200 四重條件組成;下方可見倉位乘上倍數後下單。

倉位倍數與 223% 的由來

三重過濾後,15 分鐘圖成績最好:勝率 60%、夏普比率 2、卡瑪比率 5、期望值 2.5%,最大回撤只有 -6%。讀者此刻的疑問與 Saleh 自問的一樣:回報跑輸買入持有,好在哪裏?他的答案是回撤極淺,淨值曲線極平滑,因此有空間放大倉位——這正是夏普與卡瑪比率優異的意義所在。

做法很直接:把 go_longgo_short 的數量乘 4,回撤升至 -23%,仍未觸及他個人上限 -30%;再乘 5,回撤 -28%,回測淨盈利讀數變成約 223%(期間約一年,89 宗已平倉交易,累計手續費約 7,348 美元)。223% 是倉位放大五倍後的數字,不是訊號本身的邊際——若策略本身虧損,同一操作會把虧損同樣放大五倍。

最終回測成績表

截圖出自原片(Algo-trading with Saleh):倉位乘五倍後的回測——淨盈利 223.6%、最大回撤 -28.44%、89 宗交易、累計手續費約 7,348 美元。

最後他用 benchmark 表對照三個時間框架:不看淨盈利、改看夏普與卡瑪比率,15 分鐘圖明顯勝出,30 分鐘與 1 小時版本隨之「退役」。他總結時重申:策略全程沒有跑優化,因此過度擬合機會較低,並會把策略提交到 Jesse 的策略索引頁,讓讀者查看其他時間框架與期間的表現。(註:片中提及的去中心化交易所註冊連結、付費版策略計劃與抽獎活動屬講者的商業推廣,本筆記不轉載。)

🙏 覺得內容有用?本站所有內容免費提供,使用推薦碼開戶就是支持我們繼續營運的最大鼓勵:

ZA Bank 邀請碼 P20923 —— 你享 HKD 2,000 迎新獎賞,本站獲得營運支持。 立即開戶 → (聯盟連結|投資涉及風險,受條款及細則約束,此資料僅可於香港境內分發)

MT5 可行性速評

項目評估
邏輯可移植性高。一目均衡表用 iIchimoku(內含轉換線、基準線、先行帶 A/B 緩衝)、ADX 用 iADX、ATR 用 iATR、4 小時 EMA200 用 iMA 指定 PERIOD_H4,全部為 MT5 內建;唯 BBW 無現成函數,要用 iBands 取上下軌自行計算(上軌 − 下軌)÷ 中軌。
平台限制加密貨幣永續合約並非一般 MT5 券商標的,移植到外匯或商品後,ATR 倍數、ADX 閾值與 BBW 界線須重新驗證;MT5 淨額帳戶下同方向只持一個合併倉位,不影響本策略;多時間框架讀數在 MQL5 屬標準做法,無額外障礙。
評級✅ 純技術角度可完整移植,指標全屬內建,是練習多時間框架 EA 的好題材;但「能移植」不等於「能複製成績」,223% 是倉位放大後的回測讀數,換市場換平台後一切要重驗。
MQL5 寫法提示見下
int ichi = iIchimoku(_Symbol, PERIOD_CURRENT, 9, 26, 52);
double tenkan[], kijun[], senkouA[], senkouB[];
CopyBuffer(ichi, TENKANSEN_LINE, 0, 1, tenkan);
CopyBuffer(ichi, KIJUNSEN_LINE, 0, 1, kijun);
// 升勢:tenkan[0] > kijun[0] 且 senkouA > senkouB
// 再以 iADX > 50、iBands 計 BBW < 5、iMA(PERIOD_H4, 200) 過濾

注意:即使移植成功,MT5 策略測試器跑出的回測同樣會過度擬合——ADX 閾值 50、BBW 界線 5、ATR 倍數 2.5/3.2、倉位乘五倍,每一個都是看著回測結果調出來的,換平台不解決方法論問題。

欣利克的看法

名詞解釋

常見問題 FAQ

Cloud Scalper 的核心邏輯是甚麼?

一句話概括:「雲圖同向+三重過濾的順勢剝頭皮」。先用一目均衡表確認趨勢——轉換線在基準線之上、且先行帶 A 在先行帶 B 之上;再要求 ADX 高於 50(趨勢夠強)、布林帶寬度低於 5(不在急升急跌後追入)、價格企穩 4 小時圖 EMA200(大級別同向),四重條件齊備才以市價單入場。止蝕設於 2.5 倍 ATR,止盈 3.2 倍 ATR,每單風險為保證金的 3%。

223% 的回測報酬可以當真嗎?

數字屬回測教學案例,構成要拆開看:講者先把每單風險定為保證金的 3%,見最大回撤只有 -6%,便把倉位數量乘以五倍——223% 是倉位放大後的讀數,未放大前策略跑輸買入持有。此外所有參數(ADX 50、BBW 5、ATR 倍數)都是看著回測結果調校的,回測期間亦只有約一年,未來能否重現並無保證。

講者說「零優化」,為何仍有過度擬合風險?

「沒有跑優化器」只代表沒有用程式窮舉參數組合;但片中每加一重過濾、每定一個閾值,都是看著回測成績決定去留——這是人手形式的擬合,只是迭代次數較少。判斷策略是否穩健的標準從來不是「有沒有優化」,而是有沒有在未見過的數據上驗證;片中並未展示樣本外或分年檢驗,這正是需要讀者自行補做的部分。

為何第二層確認(雲圖同向)能避開假突破?

轉換線與基準線只反映 9 期與 26 期的短期結構,價格一衝便可能交叉;先行帶 A、B 則把更長期的中點向前投射 26 期,雲圖轉向需要更持久的走勢配合。要求「短期交叉+長期雲圖同向」同時成立,等於用滯後換取過濾:入場會變遲、錯過爆發初段,但橫行市中反覆交叉的假訊號大多會被雲圖條件擋下。這是典型的訊號確認取捨,代價是趨勢初段的部分利潤。

原影片

本文整理自以下影片,版權屬原創作者所有,建議配合原片觀看:

來源:https://www.youtube.com/watch?v=-VVfk2CE8Ao

🏦 ZA Bank 開戶優惠

本站所有內容免費提供。多使用網站的推薦碼,就是對我們繼續製作優質內容的最大鼓勵和支持 🙏

去 ZA Bank 開戶,享價值 HKD 2,000 迎新獎賞,仲有機會享 USD 30 指定美股兌換券!

  • 💛 全線上開戶,無需前往分行
  • 💛 無最低存款要求,零賬戶管理費
  • 💛 24x7 銀行服務

專屬邀請碼:P20923

立即開戶 → (聯盟連結)