三重均線 TEMA 趨勢策略:GPT 生成 Python 代碼,回測 4983% 拆解|Quant Strategies Ep 13 筆記
第 13 課・共 18 課
目錄
三重均線策略聽來簡單,配對合適的過濾器後卻是量化入門的好教材。本篇整理 Algo-trading with Saleh 的教學:以三重指數移動平均線 TEMA 的快慢線判斷趨勢,加 ADX 與 CMO 雙重過濾,在回調位掛限價單進場,再由 GPT 把規則轉成 Python 代碼在 Jesse 框架回測。先說明:標題的「4983%」屬單一教學案例的回測數字,也是本系列中最浮誇的數字之一——講者自己在片末也花了大量篇幅解釋這個數字為何不能當真,本筆記重點是學習策略構造與回測解讀方法。
學習重點
- TEMA 的定位:以三次 EMA 運算抵銷滯後,同周期下比傳統 EMA 反應更快、更貼近價格,代價是假訊號更多
- 進場條件層層遞進:30 分鐘圖 TEMA(10/80) 定短線方向、4 小時圖 TEMA(20/70) 定長線方向、ADX > 40 過濾橫行市、CMO 正負 40 確認動能
- 落單設計:不追價,在現價減一倍 ATR 處掛限價單等回調;止損 4 倍 ATR、止盈 3 倍 ATR、每筆風險為總資金 3%
- LLM 寫碼流程:把自然語言規則交給 JesseGPT(Claude 3.7 Sonnet)生成 Jesse 策略,講者逐段核對邏輯後直接回測
- 回測解讀:4983% 來自倉位放大三倍後的 4.42 年複合結果;分年度看有跑輸大市的年份,中途曾有長達八九個月的回撤期
詳細筆記
策略核心:TEMA 與 EMA 的分別
策略的主指標是三重指數移動平均線 TEMA(Triple Exponential Moving Average)。講者先在 TradingView 示範它與傳統 指數移動平均線 EMA 的分別:同樣用 10 周期,當價格開始上升時,TEMA 線的爬升明顯較快;價格轉跌時,TEMA 同樣更快向下。移動平均線的先天缺陷是滯後——價格已經走了一段,均線才慢慢跟上;TEMA 透過三次 EMA 運算的組合(3×EMA1 − 3×EMA2 + EMA3)抵銷部分延遲,反應顯著加快。這就是講者棄 EMA 取 TEMA 的原因:趨勢策略最怕進場太遲,滯後越少,能捕捉的趨勢段落越多。
趨勢判斷用快慢線交叉:30 分鐘圖上 TEMA(10) 在 TEMA(80) 之上視為升勢,反之為跌勢。由於交易時間框架是 30 分鐘,講者把此策略定位為即市(day trading)策略。
進場條件:四重確認
光有快慢線交叉,在橫行市會被反覆打臉,所以講者疊加三層過濾:
- 長線趨勢確認:不只看 30 分鐘的短線方向,還要看大周期。做法是在 4 小時圖用同一指標,周期改為 20 與 70——4 小時 TEMA(20) 在 TEMA(70) 之上,長線才算升勢。短線與長線方向必須一致。
- 波動過濾:平均趨向指數 ADX 高於 40 才准開倉。ADX 不分方向、只量度趨勢強度,數值不足代表市況波動不夠,均線交叉多是雜訊。
- 動能震盪器:錢德動量擺動指標 CMO,性質類似 RSI 但對價格變化更敏感。閾值設在 +40 與 −40:CMO 高於 +40 才找好倉,低於 −40 才找淡倉。講者解釋選 CMO 不選 RSI 的理由,與選 TEMA 不選 EMA 如出一轍:傳統震盪指標反應偏慢,即市策略需要更靈敏的動能確認。整個策略的選材邏輯其實很一致——每個指標都挑「反應快」的版本,再用多重條件互相制衡靈敏帶來的雜訊。
以好倉為例,完整進場條件:30 分鐘 TEMA(10) > TEMA(80)、4 小時 TEMA(20) > TEMA(70)、ADX > 40、CMO > +40,四者同時成立。淡倉全部反向(兩組趨勢向下、ADX 仍須 > 40、CMO < −40)。

落單與風控:回調位限價單+ATR 止損止盈
條件齊全後不即市追入,而是掛限價單 Limit Order 等回調 Pullback:好倉掛在現價減一倍 平均真實波幅 ATR 的位置,淡倉反向掛在現價加一倍 ATR。講者的想法是趨勢確認後價格多半仍有小幅回吐,掛低一點能換取更佳進場價。
- 倉位:每筆風險為總資金的 3%。講者特別澄清:這不是價格逆向 3% 就平倉,而是觸及止損時總虧損剛好是資金的 3%——倉位數量由止損距離反推。
- 止損:入場價減 4 倍當前 ATR(好倉)。
- 止盈:入場價加 3 倍 ATR(好倉)。止損比止盈遠,賠率不足一,靠勝率補足——後文回測數據可見勝率確實偏高。
這裡的盈虧結構值得停下來想清楚:止損 4 倍 ATR、止盈 3 倍 ATR,贏一宗不夠輸一宗,所以策略必須維持高勝率才有正期望值。這與典型趨勢跟蹤「贏大輸小、勝率偏低」的設計剛好相反,也是講者後來在回測解讀中說它「更像均值回歸」的原因。四重過濾的用意正是保勝率——寧可錯過機會,也不在條件不齊時勉強進場。
限價單有一個實作細節:若當根 K 線內掛單未成交,下一根 K 線的 ATR 等數值已變,舊掛單價失去意義。做法是每根新 K 線取消舊單、按最新條件重掛(Jesse 中以 should_cancel_entry 實現)。這一點與均值回歸策略|第 14 課按下軌重掛限價單的處理如出一轍。
Python 實現:規則餵給 GPT 生成代碼
講者不親手寫碼,而是把整套進出場規則以自然語言寫成指令,交給他自家平台的 JesseGPT(選用 Claude 3.7 Sonnet 模型)生成 Jesse 框架的策略代碼,命名為 TemaTrendFollowing。指令內容就是上述規則的直述:短線 TEMA 10/80、長線 4 小時 TEMA 20/70、ADX 須高於 40、CMO 好倉須高於 +40、淡倉全部反向、每筆風險 3%、限價單掛一倍 ATR 之外、止損 4 倍 ATR、止盈 3 倍 ATR。
生成的進場判斷把四重確認寫成布林運算(摘錄自原片教學):
def should_long(self) -> bool:
return (
self.short_term_trend == 1 and
self.long_term_trend == 1 and
self.adx > 40 and
self.cmo > 40
)
落單邏輯:以現價減一倍 ATR 為限價、4 倍 ATR 為止損距離,再用 Jesse 的 risk_to_qty 工具函數反推倉位,確保觸及止損時虧損不超過總資金 3%(摘錄自原片教學):
def go_long(self):
entry = self.price - self.atr
stop = entry - 4 * self.atr
qty = utils.risk_to_qty(self.available_margin, 3,
entry, stop, fee_rate=self.fee_rate)
self.buy = qty, entry

開倉後 Jesse 自動掛出止損(入場價減 4 倍 ATR)與止盈(入場價加 3 倍 ATR),數量與持倉一致;淡倉全部反向。講者逐段核對後認為代碼正確,今次沒有像第 14 課那樣需要人手修 bug——他歸功於指令寫得具體,進出場規則逐點列明,模型便沒有自由發揮的空間。
之後他做了一個值得學的調試動作:叫模型加插 after 函數,把 TEMA、ADX、CMO 的數值疊印在回測圖表上。重跑回測後,點選任何一宗交易,都能即時看到進場當刻的指標狀態——例如某宗好倉進場時 ADX 為 50、CMO 高於 40,確實符合條件;淡倉則核對 CMO 低於 −40。逐宗目測核對雖然花時間,卻是驗證「代碼做的」與「你想的」是否一致的直接方法,比只看最終數字可靠得多。順帶一提,模型順手加的 watch list 功能只對實盤有用,回測無關,講者直接刪除。
回測結果與講者的講法
回測設定:BTC-USDT 永續合約(Binance)、30 分鐘圖、4 小時圖作額外數據路由,數據由 2021 年初至 2025 年 6 月。分階段結果如下(截至原片發佈):
- 2025 年上半年:盈利 32%,最大回撤僅 −3%,勝率 81%,平均持倉 12 小時,夏普比率 4.34。講者明言「好得不像真的」,不預期其他時段也有此水準。
- 2021 年:+167%,回撤 −20%,勝率 71%,夏普 1.98。平均持倉 44 小時。
- 2022 年:+35%,回撤 −30%。
- 2023 年:年初一度跑贏,年末計算沒有跑贏 BTC 本身。
- 2024 年:+300%,回撤 −25%,勝率 75%,夏普接近 3。
以 2021 年為例看盈虧結構:贏輸比(平均盈利對平均虧損)只有 0.65——正因止盈 3 倍 ATR、止損 4 倍 ATR——但勝率高達 71% 補足了賠率不足。講者形容它更像均值回歸而非典型趨勢跟蹤,平均持倉 44 小時。各年的手續費亦不可忽視:全期合共約 63,638 美元,幾乎是最終淨利的八分之一,高頻進出的策略對費率極敏感。
- 全期 4.42 年:講者見回撤數字漂亮,把倉位直接乘 3(槓桿上限 30 倍),最終權益曲線錄得 +4983.69%——10,000 美元變 508,368 美元,共 290 宗交易,手續費合共約 63,638 美元,最大回撤 −37.04%。這就是標題數字的出處。分年比較:最佳年份回撤 −9.2%、夏普 4.3;最差年份回撤 −37%、夏普 0.8。

值得留意的是講者片末的分析,他直指很多人只看最終 P&L 數字就以為策略時時賺錢,「事實並非如此」。他逐一指着權益曲線上的凹陷:其中一段回撤期長達八九個月——若在該段起點開始實盤,之後兩三個月都在虧損;另一段權益橫行了七八個月。他的原話大意是:實盤經歷這些時段你不會開心,大多數人根本撐不到後面的大升浪就會放棄。他由此帶出兩個結論:第一,不要把全部資金押在單一策略上,應該建立一籃子策略,讓不同策略的回撤期互相抵銷,甚至可以同時跑十個;第二,評估策略不能只看最終 P&L,至少要同時讀夏普比率或卡瑪比率等風險調整指標。

🙏 覺得內容有用?本站所有內容免費提供,使用推薦碼開戶就是支持我們繼續營運的最大鼓勵:
ZA Bank 邀請碼 P20923
—— 你享 HKD 2,000 迎新獎賞,本站獲得營運支持。
立即開戶 →
(聯盟連結|投資涉及風險,受條款及細則約束,此資料僅可於香港境內分發)
MT5 可行性速評
- 邏輯可移植性:TEMA 雖非 MQL5 內建指標,但可用三層
iMA(MODE_EMA)自行組合:TEMA = 3×EMA1 − 3×EMA2 + EMA3,是把指標套指標的基本寫法;ADX(iADX)、ATR(iATR)內建;CMO 無內建,需約十行代碼手算。多時間框架只需在函數指定 PERIOD_H4。 - 平台限制:單品種策略在 MT5 適配良好;「每根 K 線重掛限價單」可用掛單修改實現。惟原片標的為加密貨幣永續合約,MT5 券商的加密差價合約供應、點差與隔夜費各異,手續費假設不能直接搬用;30 倍槓桿亦非所有券商提供。
- 評級:✅ 可直接移植——所有條件均可用內建函數或簡單自算實現,掛單管理屬常規 EA 邏輯;唯 TEMA 與 CMO 要自行組合計算,屬小工程量而非障礙。
- MQL5 寫法提示:
int hE1 = iMA(_Symbol, PERIOD_M30, 10, 0, MODE_EMA, PRICE_CLOSE);
int hE2 = iMA(_Symbol, PERIOD_M30, 10, 0, MODE_EMA, hE1); // EMA of EMA
int hE3 = iMA(_Symbol, PERIOD_M30, 10, 0, MODE_EMA, hE2);
// TEMA10 = 3*E1 - 3*E2 + E3;同法造 TEMA80 與 H4 的 20/70
int hADX = iADX(_Symbol, PERIOD_M30, 14);
// 條件成立 → 現價 − 1×ATR 掛 Buy Limit,SL = 入場價 − 4×ATR,TP = 入場價 + 3×ATR
注意:MT5 回測同樣會過度擬合,參數在歷史數據上調得越貼,樣本外表現越無保證,不要以為換了平台數字就更可信。
欣利克的看法
- 先拆 4983% 的構成:這個數字來自單一標的(BTC-USDT 永續)、2021 年初至 2025 年 6 月的單一時段,而且是倉位人手放大三倍、槓桿上限 30 倍之後的複利結果——「每筆風險 3%」的風控設定在此已變相失效,最大回撤亦由單位數擴大至 −37%。同一策略用原本倉位跑 2023 年,甚至跑輸單純持有 BTC。
- 均線策略的連敗特性:所有以均線交叉為核心的策略都有同一死穴——橫行市。快慢線在無趨勢時會不斷交叉,配合 ADX 與 CMO 過濾只能減少、不能杜絕假訊號。原片權益曲線上那段八九個月的回撤與七八個月的橫行,正是這種特性的具體樣貌;連續止損在實盤是常態而非意外。
- 常見誤區:快就是好:TEMA 滯後較少,但「反應快」與「訊號準」是兩回事——越靈敏的均線在雜訊中越頻繁轉向。本策略真正值得學的不是 TEMA 本身,而是「方向(快慢線)+強度(ADX)+動能(CMO)+價位(回調掛單)」四層分工的構造方式,每個指標只負責回答一個問題。
- 觀點比較:與三 EMA 策略|第 16 課對照可見講者的一貫套路:均線定方向、濾網減雜訊、ATR 管風控;與馬丁格爾策略|第 11 課相比,本策略至少有明確止損與固定風險,屬結構完整的趨勢系統——但「結構完整」與「未來有效」仍是兩回事。
- 時效提醒:以上數據截至原片發佈(2025 年中),全部來自加密貨幣單一市場的歷史片段;參數(10/80、20/70、40 閾值、3/4 倍 ATR)未見樣本外驗證。本課的價值在於「規則 → LLM 生成代碼 → 分年度檢驗 → 解讀回撤」的方法論,而非任何具體數字。
名詞解釋
- 三重指數移動平均線 TEMA:以三次 EMA 運算抵銷滯後的均線,同周期下比 EMA 反應更快。
- 指數移動平均線 EMA:對近期價格加權較重的移動平均線,是 TEMA 的基礎元件。
- 錢德動量擺動指標 CMO:介乎 −100 至 +100 的動能震盪指標,比 RSI 更敏感,本課用作 ±40 動能過濾。
- 平均趨向指數 ADX:量度趨勢強度不分方向的指標,本課以 40 為橫行市過濾線。
- 平均真實波幅 ATR:每根 K 線平均波動範圍,本課用於掛單距離、止損止盈與倉位計算。
- 限價單 Limit Order:指定價格才成交的委託單,本課掛在回調位等成交。
- 回調 Pullback:趨勢中的短暫逆向波動,順勢策略的常見進場位置。
- 夏普比率 Sharpe Ratio:每單位波動風險換取的超額回報,評估回報質素而非只看總回報。
- 最大回撤 Drawdown:權益由高位回落的最大幅度,衡量策略風險的核心指標。
- 過度擬合 Overfitting:策略參數過度遷就歷史數據,回測亮麗卻無法在未來複製。
常見問題 FAQ
TEMA 與 EMA 有甚麼分別?
TEMA 對價格做三次 EMA 運算再以「3×EMA1 − 3×EMA2 + EMA3」組合,抵銷平滑造成的滯後。同周期下 TEMA 轉向更快、更貼近價格,趨勢策略能較早進場;代價是對短期波動更敏感,橫行市的假交叉也更多。兩者沒有絕對優劣,取決於策略要靈敏還是要平滑。
為甚麼進場要用限價單而不是市價單?
講者的思路是「順勢但不追價」:趨勢條件成立後,價格多半仍有小幅回吐,把限價單掛在現價減一倍 ATR 的位置等回調成交,能換取較佳進場價與較近的止損距離。代價是價格若不回頭便錯過整段行情,且每根新 K 線要按最新 ATR 取消舊單重掛,實作較繁複。
回測 4983% 是否代表實盤也能有相近回報?
不能這樣推論。該數字來自單一加密貨幣、2021–2025 年的單一時段,且是倉位人手放大三倍、槓桿 30 倍後的複利結果;原倉位設定下 2023 年更跑輸大市。參數在同一批數據上調校,未經樣本外驗證,中途又曾有長達八九個月的回撤期。講者自己也強調不能只看最終 P&L,要同時讀夏普比率等風險調整指標。
這個策略可以搬到 MT5 用嗎?
可以。TEMA 可用三層 iMA(MODE_EMA)自行組合,ADX、ATR 為內建函數,CMO 約十行代碼可手算,多時間框架與限價單管理均屬常規 EA 寫法,評級為可直接移植。但要注意 MT5 回測同樣會過度擬合,且加密貨幣差價合約的點差與槓桿因券商而異,原片的成本假設不能直接搬用。
原影片
本文整理自以下影片,版權屬原創作者所有,建議配合原片觀看: