一目均衡表趨勢策略:Ichimoku 五線、限價單入場與 257% 回測拆解|Quant Strategies Ep 5 筆記

第 5 課・共 18 課

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

Algo-trading with Saleh 的 Saleh 在片中用 一目均衡表 Ichimoku Cloud 寫了一個趨勢跟蹤策略,並逐步加入過濾條件改善回測表現。要先說明:標題上的「257%」是他特定設定下(BTC-USDT 永續合約、2022 至 2024 年、倉位規模放大四倍後)的回測教學案例數字,並非實盤成績。這條片值得學的不是那個百分率,而是「雲圖定大勢、兩線定小勢、ATR 定入場價」的組裝思路,以及每加一重過濾便重跑四個時間框架的驗證習慣。

學習重點

詳細筆記

一目均衡表的五條線

一目均衡表 Ichimoku Cloud 是日本記者細田悟一於 1930 年代發表的綜合指標,一張圖同時交代趨勢方向、動力與支持阻力,預設參數為 9/26/52(源自日本市場的交易日曆)。五個組件分別是:轉換線 Conversion Line(過去 9 期最高最低價的中點,反映短期動力)、基準線 Base Line(26 期中點,反映中期方向)、先行帶 A Senkou Span A(轉換線與基準線的平均值,向前投射 26 期)、先行帶 B Senkou Span B(52 期中點,同樣向前投射 26 期),兩條先行帶圍成的著色區域就是「雲圖」(Kumo);最後是遲行線 Lagging Span(當期收盤價向後延遲 26 期繪製)。傳統讀法還會看價格與雲圖的相對位置:價格在雲上偏多、雲下偏空、跌入雲內則視為方向不明;雲帶的厚度亦被視為支持阻力的強度指標。不過本片策略沒有用到價格與雲的位置關係,只用兩組線的上下排列。

Saleh 在 TradingView 的 4 小時圖上示範時,直言遲行線「只是把價格延後畫一遍,沒有用處」,直接在設定中關掉,只留下轉換線、基準線與雲圖三樣東西。他的取態很實際:指標組件不必全用,只保留策略真正依賴的訊號。

TradingView 4 小時圖上的一目均衡表:轉換線、基準線與雲圖(截圖出自原片(Algo-trading with Saleh))

策略規則:兩重趨勢+限價單入場

策略的第一重訊號是短期趨勢:轉換線在基準線之上,代表短期升勢,回傳 1;反之回傳 -1。做多的入場條件是 small_trend 等於 1,做空則是等於 -1。

@property
def small_trend(self):
    c = ta.ichimoku_cloud(self.candles)  # 預設 9/26/52
    if c.conversion_line > c.base_line:  # 轉換線在基準線之上
        return 1                         # 短期升勢
    return -1                            # 短期跌勢

(以上程式碼摘錄自原片教學,基於 Jesse 框架。)

入場方式是全片最有意思的設計。Saleh 觀察到一個現象:當入場條件成立時(雲圖轉綠、轉換線升越基準線),價格多數會先小幅回落,而不是立刻起飛。因此他放棄慣用的市價單,改用限價單 Limit Order,掛在現價減 1 倍 ATR 的位置等價格回落成交。止蝕設於入場價減 2.5 倍 ATR,倉位用 Jesse 的 risk_to_qty 工具函數反推,把每單最大虧損鎖定在可用保證金的 3%(風險承受力較高者可設 5%,他自用 3%),並計入交易所費率。做空完全鏡像:入場價為現價加 1 倍 ATR,止蝕為入場價加 2.5 倍 ATR。

def go_long(self):
    entry = self.price - ta.atr(self.candles)        # 限價單:低於現價 1 ATR
    stop  = entry - ta.atr(self.candles) * 2.5       # 止蝕:再低 2.5 ATR
    qty = utils.risk_to_qty(self.available_margin, 3,
                            entry, stop, fee_rate=self.fee_rate)
    self.buy = qty, entry

(以上程式碼摘錄自原片教學。)

他特別提醒一個框架細節:用市價單進場時,should_cancel_entry 回傳甚麼都不要緊;但用限價單掛單等成交時,這個方法必須回傳 True,讓框架在條件失效時自動取消未成交的掛單,否則舊訊號的掛單會殘留在市場。

策略程式碼:go_short 方法、risk_to_qty 倉位計算與 should_cancel_entry(截圖出自原片(Algo-trading with Saleh))

止蝕單在開倉後經 on_open_position 提交:多倉的止蝕價為持倉入場價減 2.5 倍 ATR,空倉則加回去。出場方面,策略完全不設止盈單——Saleh 的說法是「想讓趨勢跑多久就跑多久」。具體做法是在 update_position 中監察入場條件是否仍然成立:多倉持有期間,一旦轉換線跌回基準線之下(small_trend 變為 -1),即調用 self.liquidate() 全部平倉;空倉反之。

def update_position(self):
    if self.is_long and self.small_trend == -1:
        self.liquidate()      # 轉換線跌穿基準線:趨勢完結,離場
    elif self.is_short and self.small_trend == 1:
        self.liquidate()

(以上程式碼摘錄自原片教學。)

回測第一輪:單一條件注定不合格

回測設定:Jesse 框架、Binance 永續合約 BTC-USDT、2022 年 1 月 1 日至 2024 年 1 月 1 日。講者解釋選這兩年,是因為期間涵蓋了一個熊市和一個「算是牛市」的階段,對趨勢策略來說是有代表性的考驗。他同時開四個分頁,分別跑 15 分鐘、30 分鐘、1 小時、4 小時四個時間框架。

第一輪結果:1 小時框架已是四者中最好,但淨盈利只有約 8%,最大回撤卻達 -38%——賺得少、跌得深,風險回報完全不成比例。Saleh 直言「相當差勁」,並補充一個他視為常識的判斷:單一入場條件的策略幾乎不可能盈利,至少要兩重以上條件互相配合。值得留意他的反應不是即時調參數(例如改雲圖的 9/26/52 或 ATR 倍數),而是先加一重性質不同的訊號;前者只是把同一組數字磨到貼合歷史,後者才是結構上的改進。這句話其實點出了全片的結構——接下來的每一步,都是為訊號加「確認」。

逐步加過濾:雲圖方向、ADX、Choppiness

第一重過濾是長期趨勢,講者命名為 big_trend:先行帶 A 在先行帶 B 之上(即雲圖為綠)視為長期升勢,回傳 1;反之回傳 -1。寫法與 small_trend 幾乎一樣,只是比較的對象由轉換線/基準線換成兩條先行帶。入場條件改為大小兩重趨勢同向才開倉——短期訊號負責時機,長期訊號負責方向過濾,這是趨勢策略的標準分工。他順帶示範了 Jesse 當時新推出的 Benchmark 頁面:把所有分頁的回測指標(淨盈利、最大回撤、各種比率)集中在同一頁對照,按一個按鈕即可重跑全部測試,省去在四個分頁之間來回切換重跑。加入雲圖方向後,1 小時框架仍是最佳,但講者注意到一個趨勢策略的老問題:一進入橫行市(ranging market),策略便「被屠宰」,轉換線與基準線在窄幅區間內反覆交叉,假訊號不斷觸發止蝕,盈虧互相抵銷之餘還要白白支付手續費。

第二重過濾針對橫行市:平均趨向指數 ADX 必須高於 50,確認市場有足夠趨勢強度才開倉。這是講者慣用的過濾器。加入後重跑:4 小時、1 小時、30 分鐘框架的盈虧由負轉正,15 分鐘仍然虧損;論淨盈利以 1 小時最佳,論最大回撤則以 30 分鐘最淺。

第三重過濾用上他在前一條影片發現的波動雜亂指數 Choppiness Index,要求數值低於 50。他特別提醒這個指標的邏輯與 ADX 相反:ADX 要數值高(波動充足),Choppiness 則要數值低(走勢不雜亂、隨機性少),因為量化策略的工作是在市場中尋找規律,而隨機噪音是規律的敵人。加入後的效果是全場最戲劇性的一幕:30 分鐘與 1 小時框架的淨盈利上升之餘,最大回撤大幅收窄至 -6.3% 與 -7.7%,夏普比率同為 1.2,而他最看重的卡瑪比率 Calmar Ratio(因為把最大回撤計算在內)達到 2.9。

加入 ADX 與 Choppiness 過濾後的 1 小時框架淨值曲線:46 宗交易、淨盈利約 47.5%(截圖出自原片(Algo-trading with Saleh))

倉位乘四:257% 的由來

最後一步不是改訊號,而是改倉位。Saleh 的推理是:最大回撤只有約 -7%,而他個人的風險承受上限是 -30%,中間有很大空間,於是把倉位計算中的可用保證金直接乘以 4。重跑結果:1 小時框架淨盈利 257%、最大回撤 -27%;30 分鐘框架淨盈利 166%、最大回撤 -23%。他指出夏普與卡瑪比率維持不變,因為這些比率本來就是盈利相對回撤的比例,倉位同步放大時分子分母一齊變。

放大倉位後的回測結果:730 日、32 宗交易、淨盈利 257%(截圖出自原片(Algo-trading with Saleh))

至於 1 小時與 30 分鐘哪個較好,講者沒有下結論——前者總利潤較高,後者淨值曲線在他看來較平穩,他把選擇留給觀眾。他明確否決的是 15 分鐘(結果不好)與 4 小時(交易次數太少,統計意義不足)。片尾他表示會把策略源碼、其他時段與以太坊等標的的回測結果上載到其網站的策略目錄。本課之前的雲圖剝頭皮策略|第 9 課同樣以一目均衡表為核心,可對照兩者在持倉時間與出場邏輯上的差異。

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

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

MT5 可行性速評

項目評估
邏輯可移植性高。MT5 內建 iIchimoku,一個句柄取齊轉換線、基準線、先行帶 A/B 與遲行線五個緩衝區;iATRiADX 同為內建,限價單(ORDER_TYPE_BUY_LIMIT)、止蝕掛單與反向交叉平倉全是標準 EA 結構。
平台限制Choppiness Index 無內建指標,須自寫自訂指標或找程式庫;先行帶在圖上向前偏移 26 期,讀取緩衝區時要留意位移對應的 K 線位置,新手最易在這裏出錯。加密貨幣永續合約亦非一般 MT5 券商標的,所有閾值移植後須重新驗證。
評級✅ 核心邏輯可完整移植,唯一要自行實現的是 Choppiness Index 過濾器(工作量有限);評級不達滿分的原因不在平台,而在策略本身參數全是看著回測結果調校,移植只解決「能否執行」,不解決「是否可信」。
MQL5 寫法提示見下
int ichi = iIchimoku(_Symbol, PERIOD_CURRENT, 9, 26, 52);
double tenkan[], kijun[], spanA[], spanB[];
CopyBuffer(ichi, TENKANSEN_LINE,    0, 1, tenkan); // 轉換線
CopyBuffer(ichi, KIJUNSEN_LINE,     0, 1, kijun);  // 基準線
CopyBuffer(ichi, SENKOUSPANA_LINE,  0, 1, spanA);  // 雲帶 A(注意前移 26 期)
CopyBuffer(ichi, SENKOUSPANB_LINE,  0, 1, spanB);  // 升勢:tenkan>kijun && spanA>spanB

注意:即使移植成功,MT5 策略測試器跑出的回測同樣會過度擬合——ATR 倍數 2.5、ADX 閾值 50、CHOP 閾值 50、倉位乘四,全是看著結果調出來的參數,換平台不解決方法論問題。

欣利克的看法

名詞解釋

常見問題

一目均衡表的預設參數 9/26/52 可以改嗎?

可以,但要有依據。這組數字源自日本市場每週六個交易日的日曆(9 約等於一週半、26 約等於一個月、52 約等於兩個月),套在 24 小時交易的加密貨幣或其他市場上並無特殊地位。本片講者直接使用預設值,理由是「懶得改」,讀者若要調整,應以樣本外測試驗證,而非在回測中反覆試出最好看的數字。

為甚麼講者用限價單而非市價單入場?

因為他觀察到訊號成立的一刻(轉換線升越基準線、雲圖轉綠),價格多數會先小幅回落。用市價單等於在短期高位追入,掛限價單在現價減 1 倍 ATR 的位置,成交價與止蝕距離都較有利。代價是部分訊號因價格不回落而錯過成交,這是入場價與成交率之間的取捨。

257% 回測報酬可以在實盤重現嗎?

沒有任何證據支持。這個數字是 2022 至 2024 年 BTC-USDT 永續合約的回測結果,且經過倉位放大四倍;片中所有閾值(ATR 倍數、ADX 50、CHOP 50)都是看著回測結果調校的,沒有樣本外驗證,屬典型的過度擬合案例。實盤還要面對滑點、資金費率與掛單成交率等回測未必如實反映的因素。

ADX 與 Choppiness Index 有甚麼分別?

兩者都量度市況是否適合趨勢策略,但方向相反:ADX 數值越高代表趨勢越強(本片要求高於 50);Choppiness Index 數值越高代表走勢越雜亂(本片要求低於 50)。講者同時使用兩者,等於從「趨勢強度夠」與「隨機噪音少」兩個角度雙重確認,屬保守做法,代價是進一步減少交易次數。

原影片

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

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

🏦 ZA Bank 開戶優惠

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

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

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

專屬邀請碼:P20923

立即開戶 → (聯盟連結)