Supertrend 比特幣剝頭皮策略:Python 實戰 15 分鐘圖,四步改良跑贏大市|Quant Strategies Ep 1 筆記
第 1 課・共 18 課
目錄
超級趨勢 Supertrend 是程式化交易裏最易上手的趨勢指標之一:一條線、兩種顏色,價格在線上就是升勢、線下就是跌勢。Algo-trading with Saleh 的 Saleh 在這條片中,用這個指標為比特幣 15 分鐘圖寫了一個剝頭皮 Scalping 策略,再逐步疊加 ADX 過濾、4 小時圖方向確認與百分比風險倉位,把一個虧損的雛形改良到回測期內跑贏同期大市。本筆記按步驟重構他的思路,所有回測數字均為講者在特定設定下的教學案例,並非實盤成績。
學習重點
- Supertrend 本質是 ATR 倍數軌跡線:升勢時線在價格下方(圖上顯綠色),跌勢時在上方(紅色);判斷方向只需比較當前價與軌跡線的相對位置。
- 出場用 ATR 定距:止蝕為入場價減 2.5 倍 ATR、止盈為加 3.2 倍 ATR,把盈虧比固定在 1 比 1.28,代價是勝率下降。
- 首輪回測(BTC-USDT 永續合約 15 分鐘圖、2022 年初起)直接虧損——單一指標不加過濾,橫行市的假訊號會不斷觸發止蝕。
- 三重改良逐次疊加:15 分鐘圖 ADX 高於 30 過濾弱趨勢、4 小時圖 Supertrend 確認大方向、4 小時圖 200 期均線界定牛熊;加入大時間框架後策略轉虧為盈,勝率約 47%,最大回撤顯著低於同期大市。
- 倉位由「全倉進出」改為每單固定風險 3%(用入場價與止蝕距離反推數量),回撤進一步受控,回測期末正式跑贏買入持有基準。
詳細筆記
Supertrend:ATR 倍數軌跡線
Supertrend 的構造其實很直白:先取每根 K 線的中位價(最高價加最低價除以二),再分別加減一個倍數的平均真實波幅 ATR,得出上下兩條軌道;指標任何時候只顯示其中一條。升勢時顯示下軌,線在價格下方、貼著價格上移;一旦價格跌穿它,指標便切換到上軌,方向反轉為跌勢,線改為壓在價格上方。圖表上通常綠色代表升勢、紅色代表跌勢,一眼可辨。因為軌道距離由 ATR 決定,波動大時線自動放寬、波動小時自動收緊,這是它比固定點數止蝕聰明的地方。
Saleh 在 Jesse 框架裏建立名為 ScalperSuper 的策略類別,第一步是定義一個 trend 屬性。Jesse 的 ta.supertrend 會返回兩個值:trend(軌跡線本身的價位)與 changed(方向剛切換時為 1)。講者只用前者——比較當前價與軌跡線,高於線回傳 1(升勢),否則回傳 -1(跌勢)(摘錄自原片教學):
@property
def trend(self):
s = ta.supertrend(self.candles).trend
if self.price > s:
return 1
return -1
入場條件隨即寫成:should_long 回傳 trend == 1、should_short 回傳 trend == -1。他特別提醒:沽空函數只在期貨市場有用——本片交易的是幣安永續合約 Perpetual Futures,可以雙向操作;若做現貨,should_short 一段可直接略過。
全倉市價進場,ATR 定止蝕止盈
初版倉位邏輯很粗暴:訊號一出,用全部可用保證金以市價單進場,數量用 Jesse 的 utils.size_to_qty 以可用保證金、入場價與交易所費率(self.fee_rate)反推。因為全程用市價單,成交即時發生,不存在「未成交掛單要否取消」的問題,should_cancel_entry 方法留空即可——這個細節與海龜策略|第 4 課的處理一致。
出場是本策略的骨架:不用反向訊號平倉,而是在開倉一刻就用 ATR 設定止蝕 Stop Loss 與止盈 Take Profit。邏輯寫在 on_open_position 事件內——好倉的止蝕是入場價減 2.5 倍 ATR,止盈是入場價加 3.2 倍 ATR,淡倉方向鏡像(摘錄自原片教學):
def on_open_position(self, order) -> None:
if self.is_long:
self.stop_loss = self.position.qty, \
self.position.entry_price - ta.atr(self.candles) * 2.5
self.take_profit = self.position.qty, \
self.position.entry_price + ta.atr(self.candles) * 3.2
兩個倍數的取捨值得留意。若止盈同樣設 2.5 倍,盈虧比就是 1 比 1——計及手續費後並不划算,所以講者把止盈拉遠到 3.2 倍,讓每宗贏的交易比輸的交易多賺約 28%。但他同時點出代價:止盈越遠,越難觸及,勝率 Win Rate 必然下降;倍數調低勝率會上升,卻不代表總盈利會上升。勝率與盈虧比之間的此消彼長,是所有固定盈虧比策略的核心權衡。
首輪回測:單一指標的直接後果
回測設定:Jesse 平台、幣安永續合約 BTC-USDT、15 分鐘圖,回測期由 2022 年初(加密貨幣大熊市開端)跑到影片製作前不久(2024 年中),開啟快速模式與基準對照。結果毫不意外:虧損。講者的評語是——從來沒有人能靠單一指標做出好策略。Supertrend 在橫行市會反覆切換顏色,每次切換都是一張市價單加一次止蝕,15 分鐘圖的噪音被放大成持續失血。接下來的四步改良,全部圍繞「減少差勁交易」與「控制每單風險」兩條主線。
改良一與二:ADX 過濾、4 小時圖定方向
第一重過濾是講者的愛用指標平均趨向指數 ADX。它不判斷方向,只量度趨勢強度:明確單邊市時數值上升,區間橫行時回落。用法是設一個門檻——ADX 高於 30 才允許開倉,直接把橫行市的假訊號擋在門外。加入後回測成績明顯改善,方向正確。
第二重是多重時間框架確認,這招講者說學自《High Probability Trading Strategies》一書:用更大的時間框架判斷一切。雖然策略在 15 分鐘圖進出,大方向卻改用 4 小時圖的 Supertrend 決定——先用 get_candles 取得同一交易對的 4 小時 K 線,再算一個 long_trend;做多要求 15 分鐘與 4 小時同為升勢,做空要求同為跌勢。他特別警告:在 TradingView 等平台做這種多時間框架回測,很容易跌入前視偏差 Look-ahead Bias 的陷阱——回測引擎誤用了當下還未收市的未來數據,績效會好得虛假;Jesse 的設計則不會犯這個錯。加入後策略正式轉虧為盈,最大回撤大幅收窄,勝率 47%。
這裏還有一個實務插曲:策略既用上了 4 小時圖 K 線,理應在 Jesse 儀表板為該時間框架加設 data route,但講者一時忘記,回測隨即報錯提示。新版 Jesse 對此情況不會直接中止,只會發出警告並繼續跑完——這種設計對初學者友善,但也意味著數據設定出錯時,回測結果可能靜靜地建立在錯誤的假設上,檢查警告訊息是每次回測的基本功。
改良三與四:200 期均線、3% 風險倉位
第三重過濾回答一個更粗的問題:現在是否牛市?方法是在 4 小時圖上計算 200 期移動平均線,價格在線上方才准做多、下方才准做空。講者先試簡單移動平均線 SMA,後來改試指數移動平均線 EMA,發現後者略佳(最大回撤再降一點),遂採用 EMA。這重過濾的另一個好處是交易次數明顯減少——15 分鐘圖剝頭皮的最大敵人是手續費,少做差勁交易等於直接省錢。此時的入場條件已疊成四重(摘錄自原片教學):
def should_long(self) -> bool:
return self.short_trend == 1 and self.adx \
and self.long_trend == 1 and self.long_moving_average == 1

截圖出自原片(Algo-trading with Saleh):TradingView 上 BTC-USDT 15 分鐘圖,Supertrend 綠紅軌跡線緊貼價格,下方副圖為 ADX(14)。
這重過濾還有一層成本意義:講者直言,15 分鐘圖進出頻密,手續費開支極大——「若不是付了這麼多費用,策略本來已坐擁不俗利潤」。交易次數下降,本身就是最直接的節省成本手段。
第四步修正倉位。此前的回測全部「全倉進出」,講者明言實盤幾乎從不這樣做。他的原則是每宗交易風險不超過本金 2%(本片實際用 3%),改用 Jesse 的 utils.risk_to_qty:傳入可用保證金、風險百分比、入場價、止蝕價與費率,由函數反推注碼。前提是開倉一刻必須已知止蝕位置——本策略的止蝕在 on_open_position 即設定,正好符合。重跑後效果明顯:此前策略只是回撤較小、勉強接近基準,修正倉位後,淨值曲線在回測期末正式越過同期大市,講者形容這個改動的效果令他意外。

截圖出自原片(Algo-trading with Saleh):on_open_position 內以 2.5 倍 ATR 設止蝕、3.2 倍 ATR 設止盈,好倉版本。
最終結果與講者的補充
最終版策略在 2022 年初至 2024 年中的回測裏跑贏買入持有基準,最大回撤亦顯著低於同期 BTC 本身——尤其在 2022 年熊市段,雙向操作令策略在大跌中仍有進賬。講者也做了兩個失敗實驗並如實匯報:再加一個 4 小時圖的 ADX 過濾,對成績沒有幫助,遂移除;EMA 只比 SMA 略好,差異有限。值得留意的是,淨值曲線並非全程順風——2022 年熊市段策略大幅領先,但中段有一段時間表現平平,某些區間甚至跑輸大市,期末才拉開差距。他強調這只是一個下午做出來的初版,未做任何超參數優化;若用 Jesse 的優化模式再調,數字還會更好——但他同時提醒,15 分鐘圖策略手續費開支極大,交易所的費率折扣對這類策略的淨利潤影響是決定性的。片末的策略庫推廣與代幣抽獎屬頻道宣傳內容,本筆記不轉載。

截圖出自原片(Algo-trading with Saleh):最終版 should_long 同時要求 15 分鐘 Supertrend 升勢、ADX 超過 30、4 小時 Supertrend 升勢、價格在 4 小時 200 期均線之上。
🙏 覺得內容有用?本站所有內容免費提供,使用推薦碼開戶就是支持我們繼續營運的最大鼓勵:
ZA Bank 邀請碼 P20923
—— 你享 HKD 2,000 迎新獎賞,本站獲得營運支持。
立即開戶 →
(聯盟連結|投資涉及風險,受條款及細則約束,此資料僅可於香港境內分發)
MT5 可行性速評
| 項目 | 評估 |
|---|---|
| 邏輯可移植性 | 中高。ATR(iATR)、ADX(iADX)、4 小時圖 EMA(對 PERIOD_H4 開 iMA 句柄)全是 MT5 內建指標;ATR 定止蝕止盈與 3% 風險倉位反推是標準 EA 寫法。唯一缺口是 Supertrend 本身——MT5 沒有內建,須自寫(中位價加減 ATR 倍數、方向切換後鎖定單側軌道,約三十行)或引用社群程式庫版本。 |
| 平台限制 | 多時間框架在 MT5 要為每個週期各開指標句柄並自行同步 K 線序號,比 Jesse 的 get_candles 繁瑣;BTC 永續合約亦非一般 MT5 券商標的,多數只提供 BTC 差價合約,不可沽空的現貨邏輯還要抽起 should_short 一半。 |
| 評級 | ⚠️ 核心邏輯全部可重現,但 Supertrend 無內建須自寫,自寫版本與原指標在軌道鎖定細節上常有出入,移植後必須先與 TradingView 逐根 K 線對圖驗證,否則回測對不上。 |
| MQL5 寫法提示 | 見下 |
int atr_h = iATR(_Symbol, PERIOD_M15, 10); // ATR 內建
// Supertrend 自寫:mid = (High+Low)/2
// 上軌 = mid + 3*ATR;下軌 = mid - 3*ATR
// 方向切換後鎖定單側軌道,價格越界才反轉
int adx_h = iADX(_Symbol, PERIOD_M15, 14);
int ema_h = iMA(_Symbol, PERIOD_H4, 200, 0, MODE_EMA, PRICE_CLOSE);
// 好倉:M15 價 > Supertrend && ADX > 30 && H4 同向 && Close_H4 > EMA200
注意:即使移植成功,MT5 策略測試器跑出的回測同樣會過度擬合——2.5 與 3.2 倍 ATR、ADX 30、200 期均線、3% 風險全是看著結果逐步調出來的參數,換平台不解決方法論問題。
欣利克的看法
- 防坑檢查一:績效的構成要逐步拆。本片沒有拋出一個嚇人的總回報數字,反而清楚展示了構成過程:單一 Supertrend 虧損 → 加 ADX 改善 → 加 4 小時圖確認後轉虧為盈、勝率 47% → 加 200 期均線與 3% 風險倉位後才跑贏基準。讀者要記住的是「初版虧損」這個起點——同一個指標,網上大量教學只展示調好參數後的亮麗曲線,本片的價值正在於把中間的失敗版本也攤開。
- 防坑檢查二:剝頭皮對成本極度敏感。15 分鐘圖雙向進出,交易次數遠高於日線策略,手續費與滑點會直接吃掉毛利的可觀部分;講者自己也承認「若不計手續費,成績其實相當不錯」。回測用
self.fee_rate計費是誠實做法,但實盤還有滑點與資金費率等開支。評估任何高頻短線策略,第一件事是問「成本佔毛利幾成」。 - 防坑檢查三:BTC 高波動是雙刃劍。本片能用工整的 ATR 倍數(2.5、3.2)運作,部分原因是比特幣單根 15 分鐘 K 線動輒數百美元波幅,趨勢段足夠深,止盈才觸及得到。同一套參數搬到波動低的標的,倍數、勝率與盈虧比的平衡會完全改寫,不能直接照抄。
- 常見誤區:勝率 47% 不代表「接近隨機」。固定盈虧比 1 比 1.28 的設計下,保本勝率約 44%,47% 已越過保本線——低勝率高盈虧比是趨勢策略的正常形態,與猜謎無關。反過來說,若有人展示 70% 勝率的剝頭皮策略,更應檢查其盈虧比與止蝕設定是否藏著一次清倉的風險。
- 時效提醒:回測期為 2022 年初至 2024 年中,截至 2026 年中,費率與市場波動結構均已變化,片中數字不代表當前條件。本文僅為學習記錄,不構成買賣建議。
名詞解釋
- 超級趨勢 Supertrend:以 ATR 倍數構建的趨勢軌跡線,價格在線上為升勢、線下為跌勢,本策略的核心訊號。
- 平均真實波幅 ATR:量度每根 K 線平均波動範圍;本片同時用於 Supertrend 軌道與止蝕止盈距離。
- 剝頭皮 Scalping:在極短時間框架內頻密進出、賺取小幅價差的交易風格;本片戰場是 15 分鐘圖。
- 平均趨向指數 ADX:量度趨勢強度而不分方向;本片要求高於 30 才開倉,過濾橫行市。
- 指數移動平均線 EMA:對近期價格加權較高的移動平均;本片用 4 小時圖 200 期 EMA 界定牛熊。
- 永續合約 Perpetual Futures:無到期日的加密貨幣期貨合約,可雙向操作,是本策略的交易標的。
- 前視偏差 Look-ahead Bias:回測誤用當下未來數據造成的虛假績效;多時間框架回測的高發陷阱。
- 倉位規模 Position Sizing:決定每宗交易注碼的方法;本片由全倉改為每單 3% 風險反推。
- 勝率 Win Rate:盈利交易佔總交易的比例;本片約 47%,配合 1 比 1.28 盈虧比越過保本線。
- 風險回報比 Risk-Reward Ratio:每宗交易潛在盈利對潛在虧損的比例;本片以 2.5 與 3.2 倍 ATR 鎖定為 1 比 1.28。
常見問題 FAQ
Supertrend 指標的原理是甚麼?
它以每根 K 線的中位價為基準,加減指定倍數的 ATR 得出上下兩條軌道,任何時候只顯示一條。升勢時顯示下軌、線在價格下方並隨之上移;價格跌穿後切換到上軌,方向反轉為跌勢。因為軌道距離由 ATR 決定,波動大時自動放寬、波動小時自動收緊。優點是訊號明確、易於程式化;缺點是橫行市會反覆切換方向產生假訊號,所以實務上通常搭配 ADX 等趨勢強度過濾器。
為何止蝕用 2.5 倍 ATR、止盈卻用 3.2 倍?
若兩者用同一倍數,盈虧比就是 1 比 1,計及手續費後長期難以盈利。把止盈拉遠至 3.2 倍,每宗贏的交易比輸的多賺約 28%,期望值才轉正。代價是止盈越遠越難觸及,勝率會下降——講者明言倍數調低勝率會上升,但總盈利未必上升。勝率與盈虧比的此消彼長,是固定盈虧比策略無法迴避的權衡,2.5 與 3.2 只是他在這個品種與時間框架下的經驗取值。
為何要用 4 小時圖再確認一次方向?
15 分鐘圖的 Supertrend 訊號在噪音中極易誤觸,用大時間框架定方向可以過濾掉逆勢交易:只在 4 小時圖同為升勢時做多、同為跌勢時做空。這正是本片由虧轉盈的關鍵一步,最大回撤亦大幅收窄。要注意的是,在部分回測平台做多時間框架分析容易誤用未收市的未來數據,造成前視偏差,績效會好得虛假;選擇回測工具時須確認其處理方式。
這個策略可以直接用於實盤嗎?
本片展示的是一個下午完成的教學雛形,講者明言未做超參數優化,也沒有樣本外驗證。所有參數——2.5 與 3.2 倍 ATR、ADX 30、200 期均線、3% 風險——都是看著同一段回測逐步調出來的,存在過度擬合風險。此外 15 分鐘圖策略對手續費、滑點與資金費率極度敏感,回測與實盤的落差會被高交易頻率放大。本筆記僅作學習記錄,不構成任何買賣建議。
原影片
本文整理自以下影片,版權屬原創作者所有,建議配合原片觀看: