迷因幣沽空策略實戰:Python 回測特朗普幣短倉 86% 的完整拆解

第 17 課・共 18 課

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

迷因幣波動極端、長期走勢偏向下行,恰好是沽空 Short Selling 策略的試驗場。本課筆記整理自 Algo-trading with Saleh 的教學影片,講者 Saleh 用三個經典指標組成一套只做短倉的趨勢策略,沽空特朗普迷因幣(TRUMP),並用 GPT 把規則轉成 Python 代碼實測。先說清楚:標題的「86%」是講者在特定標的、特定時段(2025 年 3 月至 9 月)的回測教學案例,不是可複製的承諾,下文會逐層拆解這個數字的構成。

學習重點

詳細筆記

為甚麼選迷因幣沽空

講者開宗明義:他對政治沒有立場,但從交易角度,特朗普迷因幣是「很好的沽空機會」。他的理由有兩層。第一,迷因幣本身沒有實際用途,他認為這類幣在牛市過後價格會持續陰跌;第二,這隻幣因話題性被各大交易所上架,流動性充足——只要有流動性、有可捕捉的模式,方向是升是跌並不重要。他同時承認策略的明顯盲點:回測期內幣價幾乎一直下跌,策略賺錢可能只是「剛好坐在一條向下的電梯上」,若幣價進入大升浪,這套只做短倉的邏輯必須停用。

三條進場規則

講者先在 TradingView 圖表上示範規則,再交給 GPT 寫碼。進場條件全部成立才開倉:

一、EMA 死亡交叉。 快線 指數移動平均 EMA 12 必須在慢線 EMA 26 之下,代表短期走勢弱於中期走勢。這是方向過濾器,確保只在跌勢中找機會。

二、RSI 高於 55。 這條值得留意:一般短倉策略會等 RSI 超買(70 以上)才沽,講者卻只要求 RSI(14 期)高於 55 的中性偏強水平。他的邏輯是等價格反彈出現力度、但反彈尚未透支時介入,沽在反彈中而不是沽在恐慌低位。

三、ADX 高於 20。 ADX 量度趨勢強度。這是趨勢跟隨策略,橫行市中 EMA 會反覆交叉製造假訊號,所以 ADX 低於 20 的無方向市況一律不開倉。

TradingView 上的進場規則:EMA 12 在 EMA 26 之下,配合 RSI 與 ADX 門檻(截圖出自原片(Algo-trading with Saleh))

出場與倉位管理

出場不用指標訊號,改用 ATR(平均真實波幅)量度當前波動:止蝕 = 入場價 + 1.5 × ATR,止賺 = 入場價 − 2.5 × ATR。以講者示範為例,當時 ATR 約 0.069,止蝕距離約 0.10、止賺距離約 0.17。波動大時止蝕自動拉寬、波動小時收窄,避免固定點數止蝕被正常波幅掃走。盈虧比固定約 1.67,所以即使勝率只有五成,期望值仍為正。

倉位方面,每宗交易固定風險本金的 1.5%——以一萬美元本金計,止蝕觸發即虧 150 美元,倉位數量由止蝕距離反推得出。

用 GPT 生成 Jesse 策略代碼

講者把整套規則寫成一段英文指令(只做短倉、EMA 12 低於 26、RSI 高於 55、ADX 高於 20、市價進場、風險 1.5%、ATR 止賺止蝕),交給他自己訓練的 JesseGPT 生成 Jesse 框架的策略類。生成的代碼結構清晰:指標各自定義為 property,預設 RSI 週期 14:

@property
def ema_fast(self):
    return ta.ema(self.candles, 12)

@property
def ema_slow(self):
    return ta.ema(self.candles, 26)

@property
def rsi(self):
    return ta.rsi(self.candles)

(以上代碼摘錄自原片教學)

進場判斷與落盤邏輯濃縮在兩個方法內。should_short 回傳三條件是否同時成立;go_shortrisk_to_qty 計算數量後以市價賣出:

def should_short(self) -> bool:
    return (self.ema_fast < self.ema_slow) and (self.rsi > 55) and (self.adx > 20)

def go_short(self) -> None:
    entry = self.price  # market order
    stop = entry + (self.atr * 1.5)
    qty = utils.risk_to_qty(self.available_margin, 1.5, entry, stop, fee_rate=self.fee_rate)
    self.sell = qty, entry

(以上代碼摘錄自原片教學)

開倉成功後,在 on_open_position 掛上止蝕與止賺單:

def on_open_position(self, order) -> None:
    sl = self.position.entry_price + (self.atr * 1.5)
    tp = self.position.entry_price - (self.atr * 2.5)
    self.stop_loss = self.position.qty, sl
    self.take_profit = self.position.qty, tp

(以上代碼摘錄自原片教學)

on_open_position 方法:開倉後掛 ATR 止蝕止賺(截圖出自原片(Algo-trading with Saleh))

講者提醒兩個實務細節:Jesse 要求 go_long 方法必須存在,即使策略不做長倉也要留一個 pass 的空方法,否則回測會報「策略無效」;生成的代碼附帶的數量為零檢查他選擇刪除,因為數量算出零代表計算有錯,他寧願程式報錯讓自己察覺,也不要靜靜跳過。

回測結果的三次迭代

回測設定:TRUMP-USDT 永續合約、一小時圖、2025 年 3 月(該幣上市後不久)至 9 月。過程本身就是很好的風險教育:

  1. 初版:不計費、1.5% 風險。回報 +22%,最大回撤 -4%,勝率約 51%,Sharpe ratio 2.55。
  2. 倉位乘四:講者見回撤極低,把每宗交易倉位放大四倍,回報升至 +107%,回撤僅 -6%,Sharpe 不變——倉位縮放不改變策略的風險調整後表現,只同比例放大盈虧。
  3. 補回手續費:他發現自己誤設為零手續費,改回貼近 Binance 的水平並預留滑點後重跑,回報降至約 +86%(即影片標題數字),最大回撤約 -7%,Sharpe 仍高於 2,平均持倉約 16 小時。

回測績效表:勝率 51.35%、Sharpe 2.52、Calmar 19.26(截圖出自原片(Algo-trading with Saleh))

之後他用 Jesse 的互動圖表逐宗交易覆核,並叫 GPT 為策略加上 EMA 與指標疊線,直接在圖上驗證每宗進場時三個條件是否真實成立——這一步是除錯與找改進方向的關鍵,但他同時警告:邊看圖邊加濾網,很容易不知不覺把策略過度擬合 Overfitting 到歷史數據上。

蒙地卡羅模擬:數字以外的真相

講者最後跑了 蒙地卡羅模擬 Monte Carlo Simulation,兩種做法都揭示了原始回測的局限:

蒙地卡羅模擬的權益曲線分佈:綠線為原始回測,藍線為模擬路徑(截圖出自原片(Algo-trading with Saleh))

講者的結論是他個人認為「足以實盤」,並把策略上載到他的策略索引頁。他也坦白利益關係:影片中段推廣了他有佣金回贈的去中心化交易所註冊連結,其策略頁與 JesseGPT 亦是他的產品。另有一點要留意:講者明言這策略只為沽空迷因幣而設,對 BTC、ETH 的回測「肯定不會好」,不應把邏輯當成通用策略。

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

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

MT5 可行性速評

項目評估
邏輯可移植性極高。EMA、RSI、ADX、ATR 全部有 MQL5 內建函數(iMA 配合 MODE_EMAiRSIiADXiATR),三條進場條件只是數值比較,ATR 止賺止蝕與固定百分比風險倉位計算亦是標準 EA 寫法,無需自寫統計元件。
平台限制最大障礙是標的:MT5 券商極少提供迷因幣 CFD,TRUMP 幣幾乎找不到;主流加密貨幣 CFD 雖可雙向交易,但持倉過夜收隔夜利息(Swap),成本結構與永續合約的資金費率不同,回測假設要重訂。淨額(Netting)帳戶下同一品種只能單向持倉,多策略並行時要留意。
評級⚠️ 邏輯易移植、標的難尋——指標與倉位邏輯數十行 MQL5 即可完成,但原策略的「迷因幣」前提在 MT5 生態基本不成立;搬到主流幣 CFD 又等於換了標的,原回測結果完全不能作準。
MQL5 寫法提示見下方示意。
// 示意:三條進場條件(非完整 EA)
double emaFast = iMA(_Symbol, PERIOD_H1, 12, 0, MODE_EMA, PRICE_CLOSE);
double emaSlow = iMA(_Symbol, PERIOD_H1, 26, 0, MODE_EMA, PRICE_CLOSE);
double rsi = iRSI(_Symbol, PERIOD_H1, 14, PRICE_CLOSE);
double adx = iADX(_Symbol, PERIOD_H1, 14);
// 取指標數值後:emaFast<emaSlow && rsi>55 && adx>20 即開空
// 止蝕 = 入場價 + 1.5*iATR(...),倉位 = 本金*1.5% / 止蝕距離

注意:MT5 回測同樣會過度擬合,加密貨幣 CFD 的 tick 數據質素與 Swap 模型對結果影響極大,回測曲線亮麗不代表實盤可行。

欣利克的看法

名詞解釋

常見問題 FAQ

沽空策略為甚麼要求 RSI 高於 55 而不是等超買?

這是順勢反彈沽空的思路:跌勢確認後(EMA 死亡交叉),等價格反彈出現一定力度才進場,避免沽在已經急跌的低位、一進場就遇上技術反彈被掃止蝕。RSI 55 只是中性偏強的門檻,比傳統 70 超買線更早介入,代價是部分訊號會在反彈初段已觸發。門檻高低沒有標準答案,屬需要自行回測的參數。

為甚麼講者看到回撤只有 -4% 就把倉位放大四倍?

因為在固定百分比風險的框架下,倉位縮放會同比例放大回報與回撤,而 Sharpe ratio 等風險調整後指標不變。他判斷 -7% 左右的回撤在自己承受範圍內,於是放大倉位把回報由 22% 推至 86%。但蒙地卡羅模擬顯示同樣的交易序列,回撤中位數可達 -33%——倉位放大的決定是否穩妥,取決於你信原始回測還是信模擬分佈。

這套策略可以直接搬去沽空比特幣嗎?

原片講者明確表示不可以,他預期對 BTC、ETH 的回測「肯定不會好」。策略的盈利前提是標的長期陰跌而中間有規律反彈,這是迷因幣在特定階段的價格行為,主流幣的走勢結構不同,同一組門檻完全不適用。任何策略換標的都必須重新回測與驗證。

蒙地卡羅模擬的中位數回撤 -33%,是否代表策略不能用?

不一定,它提供的是決策依據而非判決。模擬顯示原始回測的 -7% 回撤帶有運氣成分——同樣的勝率與盈虧比,交易次序重排後回撤可以深得多。務實的用法是反推倉位:若你只能承受 -15% 回撤,就按模擬分佈把倉位縮至相應水平,而不是相信原始回測的單一數字。講者本人亦是用這個邏輯決定倉位倍數。

原影片

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

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

🏦 ZA Bank 開戶優惠

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

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

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

專屬邀請碼:P20923

立即開戶 → (聯盟連結)