Supertrend 比特幣剝頭皮策略:Python 實戰 15 分鐘圖,四步改良跑贏大市|Quant Strategies Ep 1 筆記

第 1 課・共 18 課

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

超級趨勢 Supertrend 是程式化交易裏最易上手的趨勢指標之一:一條線、兩種顏色,價格在線上就是升勢、線下就是跌勢。Algo-trading with Saleh 的 Saleh 在這條片中,用這個指標為比特幣 15 分鐘圖寫了一個剝頭皮 Scalping 策略,再逐步疊加 ADX 過濾、4 小時圖方向確認與百分比風險倉位,把一個虧損的雛形改良到回測期內跑贏同期大市。本筆記按步驟重構他的思路,所有回測數字均為講者在特定設定下的教學案例,並非實盤成績。

學習重點

詳細筆記

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 == 1should_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

Supertrend 疊加在 BTC-USDT 15 分鐘圖,下方副圖為 ADX

截圖出自原片(Algo-trading with Saleh):TradingView 上 BTC-USDT 15 分鐘圖,Supertrend 綠紅軌跡線緊貼價格,下方副圖為 ADX(14)。

這重過濾還有一層成本意義:講者直言,15 分鐘圖進出頻密,手續費開支極大——「若不是付了這麼多費用,策略本來已坐擁不俗利潤」。交易次數下降,本身就是最直接的節省成本手段。

第四步修正倉位。此前的回測全部「全倉進出」,講者明言實盤幾乎從不這樣做。他的原則是每宗交易風險不超過本金 2%(本片實際用 3%),改用 Jesse 的 utils.risk_to_qty:傳入可用保證金、風險百分比、入場價、止蝕價與費率,由函數反推注碼。前提是開倉一刻必須已知止蝕位置——本策略的止蝕在 on_open_position 即設定,正好符合。重跑後效果明顯:此前策略只是回撤較小、勉強接近基準,修正倉位後,淨值曲線在回測期末正式越過同期大市,講者形容這個改動的效果令他意外。

以 ATR 倍數設定止蝕與止盈的程式碼

截圖出自原片(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_H4iMA 句柄)全是 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% 風險全是看著結果逐步調出來的參數,換平台不解決方法論問題。

欣利克的看法

名詞解釋

常見問題 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 分鐘圖策略對手續費、滑點與資金費率極度敏感,回測與實盤的落差會被高交易頻率放大。本筆記僅作學習記錄,不構成任何買賣建議。

原影片

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

來源:https://www.youtube.com/watch?v=40HulO-CVTA

🏦 ZA Bank 開戶優惠

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

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

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

專屬邀請碼:P20923

立即開戶 → (聯盟連結)