「9秒狙擊手」EA 源碼拆解:SAR 反向掛單 + 9 秒動能過濾的 MQL5 突破策略(兩集完結)|AlgoLee
目錄
「和AlgoLee一起交易」頻道在 2026 年 1 月 1 日及 1 月 8 日分兩集拆解了一份網友投稿的 MQL5 EA 源碼——「9秒狙擊手」。投稿者聲稱這套代碼一年翻 70 倍;AlgoLee 在第一集逐段講解策略邏輯與代碼結構,第二集把剩餘部分(掛單管理、延遲止蝕、倉位計算)補完並重構,最後在 MT5 策略測試器跑出一份誇張到他自己都「不敢看」的資金曲線。
本文把兩集合併成一份完整筆記:先重構策略規則,再逐步拆解進出場與風控邏輯,最後給出回測重現清單與防坑檢查。先說結論:這是一套設計精巧但風控哲學極度激進的 tick 級突破 EA,「一年 70 倍」的聲稱必須當作宣傳看待。
策略速覽
規則重構
| 項目 | 源碼設定 |
|---|---|
| 投資標的 | 黃金(XAUUSD)為主,理論上可用於其他品種 |
| 圖表週期 | 掛載於 5 分鐘圖(M5),但實際決策基於 tick 級報價,與 K 線無關 |
| 指標組合 | Parabolic SAR(步長 0.02、最大值 0.2,即 MT5 預設值)+ 自建的 tick 價格/時間環形緩衝區 |
| 動能定義 | 現價 − 9 秒前報價(MinTimeLapse = 9),波動超過 70 點(PriceMvmThreshold = 70)視為動能足夠 |
| 進場方式 | 不做市價單,掛 Buy Stop / Sell Stop 突破單,掛單偏移 25 點(Step = 25),不帶止蝕止盈 |
| 做多條件 | ① 9 秒動能 > +70 點;② SAR 點位(減緩衝)仍在價格上方(逆勢壓住);③ 新掛單價須低於手上所有買單最低價(加倉用,實際被寫死為最多一單) |
| 做空條件 | 上述的鏡像 |
| 撤單條件 | 掛單超過 9 秒未成交,且動能已衰竭(價格波動不達標),立即刪單——「只抓最猛的那條魚」 |
| 止蝕 | 延遲止蝕(亡羊補牢式):進場不設硬止蝕;當浮虧超過 60 點(StopActivationPoints)且反向動能加劇,才用 PositionModify 在現價外 25 點(StopActivationBuffer)補掛止蝕 |
| 止盈 | 一籃子金額止盈:累加全部持倉浮盈,達到目標金額(通常與風險預算 1:1)即全部平倉 |
| 倉位計算 | 五種模式:固定手數(0.05 手)、餘額百分比(1%)、淨值百分比、可用保證金百分比、固定風險金額(50 美元);並以「虛報止蝕 ×2」把計算出的手數壓半 |
| 時間過濾 | 只允許伺服器時間 7:00–21:00 交易 |
| 新聞過濾 | 讀取 MT5 財經日曆,非農、利率決議等關鍵時刻前後強制暫停交易(回測模式下不生效) |
| 最大持倉 | 寫死 1 單,加倉邏輯形同虛設 |
| 講者/投稿者聲稱 | 「一年翻 70 倍」(投稿者);影片中 4 個月回測資金曲線極度誇張,AlgoLee 本人亦提示「大家應該心裡有數」 |
截圖出自原片第一集(和AlgoLee一起交易,2026-01-01):重構後 EA 的輸入參數,可見 TRADING TIME(M5、7–21 時)、LOT SIZE(五種倉位模式)與 STRATEGY(SAR 0.02/0.2、掛單偏移 25 點、9 秒間隔、動能閾值 70 點、止蝕激活 60 點、緩衝 25 點)三組設定。
詳細拆解
第一步:反向使用 SAR——「鯉魚躍龍門」
Parabolic SAR 的常規用法是識別趨勢方向與動態止蝕:點在價格下方代表升勢,在上方代表跌勢。這個策略故意反著用:
- 做多時,要求 SAR 點在價格上方「壓著」——即指標層面仍是跌勢。
- 然後在 SAR 下方的現價上方掛 Buy Stop,賭巨大的瞬間動能會衝破 SAR 的壓力位,實現反轉。
截圖出自原片第一集:XAUUSD 圖表上綠色的 SAR 點。策略要求做多時 SAR 仍在價格上方——聽起來違反常理,本質是押注「衝破壓力」的瞬間爆發。
換句話說,SAR 在這裡不是趨勢指標,而是一個「壓力位標記」。這也帶出了第二個進場條件:動能。
第二步:9 秒動能——環形緩衝區與「倒帶」
策略名字裡的「9 秒」,來自它衡量動能的方式:比較現價與 9 秒前的報價。
實現上有個細節:行情跳動快慢不一,有時 1 秒跳 10 次報價,有時 3 秒才跳 1 次,所以不能簡單地「倒數第 N 條 tick」。作者自己實現了一個固定大小的環形緩衝區(ring buffer)——先進先出、寫滿自動覆蓋最舊數據,把每一刻的價格、時間(還有點差)都記下來。AlgoLee 形容這是「殺雞用牛刀」的寫法,但功能上確實嚴謹:
- 從緩衝區倒序查找,找到第一條時間差超過 9 秒的記錄(注意:不是「正好 9 秒前」那條)。
Price_Movement = 現價 − 該記錄價格,這就是做單依據的動能值。- 如果算出來的值大到離譜(數據異常),直接歸零,不作為做單依據。
第三步:開倉決策——三個條件 + 突破掛單
滿足以下全部條件才掛單(以做多為例):
- 動能條件:
Price_Movement > 70 點,市場具備強勁上漲動能。 - SAR 條件:SAR 點位減去緩衝後仍在價格上方(逆著 SAR 做多)。
- 加倉條件:新掛單價格必須比手上所有買單的最低價還低——有點網格補倉的味道,「絕不追漲殺跌、只在回調時補倉」。但因為最大持倉寫死為 1 單,這個條件實際從不觸發。
全部滿足後,用 Buy Stop 在現價上方 25 點掛突破單,止蝕止盈都設 0,並記錄掛單時間戳供下一步使用。做空完全鏡像。
第四步:掛單管理——動能衰竭即撤單
掛單不是放著不管。EA 持續計算每張掛單的存續時間(伺服器時間 − 掛單時間戳):
- 掛單超過 9 秒仍未成交,且此時價格波動已不達標——說明動能衰竭,可能是假突破——立即
OrderDelete撤單,避免在震盪行情中被燒損。 - 代碼細節:遍歷掛單池時倒序刪除,避免正序刪單導致索引錯位;並用 Magic Number 區分,只管理自己的訂單。
截圖出自原片第二集(2026-01-08):掛單管理代碼——倒序遍歷掛單池、計算存續時長,超過 9 秒且動能不達標即 OrderDelete。
第五步:延遲止蝕——「亡羊補牢」式風控
這是整套策略最具爭議的部分。入場時不設任何硬止蝕,任由價格小幅波動;只有當:
- 浮虧超過激活閾值(60 點),且
- 反向動能正在加劇(
Price_Movement反向超標),
EA 才用 PositionModify 在現價外 25 點補掛止蝕——而且補了之後也不是立刻認賠,還留了緩衝讓它「掙扎一下」。
截圖出自原片第二集:延遲止蝕邏輯——浮虧達標且反向動能加劇時,才用 PositionModify 補掛止蝕。
這種設計的意圖是用短期的風險暴露,換取不容易被洗盤洗出去的高勝率。但 AlgoLee 明確指出這很危險:你想虧 60 點,在動能劇烈惡化、點差擴大、滑點加劇的市況下,實際可能虧 200 點甚至更多;倉位大的話直接爆倉「也稀鬆平常」。
第六步:一籃子金額止盈
止盈同樣不設價位。EA 累加所有持倉的浮動盈虧,達到目標金額(按倉位計算時 1:1 於風險預算的金額)就瞬間把全部單子平掉。止蝕止盈兩頭都不設價位掛單——作者「喜歡自由的感覺」,風控全部依賴 EA 實時運算,對伺服器與網絡穩定性要求極高。
第七步:倉位計算——「虛報止蝕」與保證金試探
倉位計算有兩個值得玩味的細節:
① 虛報止蝕點數(×2)。計算每標準手風險金額時,代碼用的不是實際止蝕距離(激活 60 + 緩衝 25 = 85 點),而是 (60 + 25) × 2 = 170 點。止蝕距離不變,但計算出來的手數直接減半,等於強行壓低實際槓桿。AlgoLee 的解讀:作者自己也知道延遲止蝕是在玩火,所以用這個「小調皮」穩一手。
截圖出自原片第一集:StopLoss = (StopActivationPoints + StopActivationBuffer) * 2——止蝕距離仍是 85 點,但倉位計算按 170 點,手數減半。
② 保證金極限試探。如果計算出的手數超出可用保證金,代碼會循環遞減(1 手 → 0.99 → 0.98……)直到「下得起」為止。AlgoLee 對此評價很重:說好聽是窮人思維,說難聽是賭徒思維——你本來算好 5 手才匹配風險,錢不夠就硬降到 2 手上車,意味著帳戶已在爆倉邊緣,此時繼續交易本身已不明智。
截圖出自原片第二集:五種倉位模式的 switch,以及下方 while 循環逐步遞減手數試探保證金極限。
第八步:時間與新聞過濾
- 時間過濾:限定可交易時段(預設伺服器時間 7–21 點),還可按星期幾過濾。
- 新聞過濾:讀取 MT5 財經日曆,按關鍵詞(如非農 NFP、利率決議)與貨幣匹配,新聞發佈前後各一段時間強制暫停交易,並把新聞緩存到本地。
⚠️ 重要:回測模式下新聞過濾不啟用——回測環境沒有真實的財經日曆數據流。這意味著回測成績天然少了「避險」這一層保護,或者反過來說,實盤避開的新聞行情在回測裡照樣交易。無論哪個方向,回測與實盤的行為都不一致。
🙏 覺得內容有用?本站所有內容免費提供,使用推薦碼開戶就是支持我們繼續營運的最大鼓勵:
ZA Bank 邀請碼 P20923
—— 你享 HKD 2,000 迎新獎賞,本站獲得營運支持。
立即開戶 →
(聯盟連結|投資涉及風險,受條款及細則約束,此資料僅可於香港境內分發)
重現 Backtest 清單
截圖出自原片第二集:MT5 策略測試器的參數面板,可見 M5 週期、7–21 時段、餘額百分比 1.0、固定手數 0.05、SAR 0.02/0.2、掛單偏移 25、時間間隔 9 秒、動能閾值 70、止蝕激活 60、緩衝 25、新聞過濾關閉等完整設定。
- ✅ 策略本身已是完整 MQL5 EA 源碼,所有進出場條件、參數均在影片中公開,客觀化程度極高。
- ✅ 參數明確:SAR(0.02, 0.2)、掛單偏移 25 點、9 秒回看、動能閾值 70 點、止蝕激活 60 點 + 緩衝 25 點、止盈 1:1 風險金額、時段 7–21。
- ⚠️ 這是 tick 級策略:9 秒動能比較依賴真實 tick 序列。MT5 回測必須用「Every tick based on real ticks」模式,否則用生成的模擬 tick,結果會嚴重失真。
- ⚠️ 影片展示了 4 個月的回測資金曲線(極度誇張),但沒有展示完整報告:勝率、最大回撤、交易次數、盈虧比、手續費與滑點假設一概欠奉。
- ⚠️ 新聞過濾在回測中不生效,回測與實盤行為不一致。
- ❌ 「一年翻 70 倍」只是投稿者的口頭聲稱,沒有任何第三方驗證(如 Myfxbook 實盤記錄)。
- ❌ 未說明對券商點差、執行速度、VPS 延遲的要求——而 tick 級策略對這些極度敏感。
結論:代碼層面可以完全重現,但「能跑出回測」與「回測可信」是兩回事。tick 級、無硬止蝕、金額止盈的策略,回測引擎的 tick 質量與成交假設會直接決定結果,美化空間極大。
MT5 可行性速評
| 項目 | 評估 |
|---|---|
| 可移植性 | ✅ 本身就是 MQL5 EA,SAR 為內建指標(iSAR),無外部依賴。 |
| 平台限制 | ⚠️ 新聞過濾依賴 MT5 財經日曆,僅實盤可用;tick 環形緩衝區需 EA 持續在線運行,斷線重啟後 9 秒歷史需重新累積。 |
| 執行要求 | ⚠️ 高。無硬止蝕 + 實時風控,要求低延遲 VPS、穩定連線與低點差賬戶,否則「延遲止蝕」會變成「延遲爆倉」。 |
| 評級 | ⚠️ 技術上完全可運行,但風控設計不適合直接上實盤。 |
防坑檢查
- 「一年 70 倍」聲稱:沒有實盤驗證,純屬投稿者自述。AlgoLee 在影片中以調侃方式回應(「福布斯排行榜要重新排名了」),並明說「大家應該心裡有數」。任何以此類倍數招攬的 EA,第一反應應是質疑而非心動。
- 無硬止蝕是致命傷:進場不設止蝕,靠 EA 事後補掛。一旦斷線、平台卡死、流動性枯竭(新聞瞬間),浮虧沒有任何兜底。60 點的預期虧損在極端行情變 200 點以上完全可能,重倉即爆倉。
- 回測美化三重來源:① 回測不含新聞過濾的避險行為;② tick 生成模式若不用真實 tick,9 秒動能邏輯形同被改寫;③ 回測的成交假設對 Buy Stop 滑點往往過於樂觀,而此策略專門在最劇烈的瞬間成交。
- 保證金試探循環:倉位不夠就逐格遞減硬上,是「帳戶已逼近爆倉仍要交易」的訊號。重現時建議直接刪掉這段,保證金不足應該不交易。
- 勝率假象:延遲止蝕 + 1:1 金額止盈的組合,本質是「小賺大虧、勝率虛高」的結構。長期期望值取決於少數大虧單,而這些恰恰在回測的美好曲線裡最容易被低估。
- 學習價值 vs 實盤價值:AlgoLee 兩集的定位很清晰——這份代碼是學習素材(環形緩衝區、倒序刪單、日曆過濾、多模式倉位計算都值得借鑒),不是拿來直接跑真錢的成品。
欣利克觀點
這兩集的價值,不在於「9 秒狙擊手」能不能複製 70 倍,而在於它示範了怎樣解剖一份別人的 EA 源碼:
- 先講策略哲學,再看代碼。SAR 反向用、9 秒動能、延遲止蝕——每一個設計背後都是明確的交易觀:賭瞬間爆發、拒絕被洗盤、用輕倉換容錯。看懂「為什麼這樣寫」比抄代碼重要。
- 作者的「小調皮」最誠實。嘴上看不懂風險的人,不會在倉位計算裡偷偷 ×2。代碼裡的每一處「自保」,都是作者對自己策略弱點的無聲供認。讀源碼時,這些地方才是重點。
- 兩集的分工本身就是教學:第一集搭骨架(數據結構、參數、初始化),第二集填血肉(掛單管理、風控、倉位)。自己寫 EA 也該是這個順序。
- 對「翻倍神器」類標題保持本站一貫立場:回測曲線越漂亮,越要先問 tick 質量、滑點假設與新聞行情怎麼處理。這三個問題,這支影片一個都沒有正面回答——這不是苛責影片(它的定位是源碼教學),而是提醒你:教學裡沒講的,恰恰是實盤會要命的。
如果你跟著兩集把這份 EA 敲了一遍,建議下一步不是優化參數,而是先給它補一個真正的硬止蝕,再談其他。
原影片
本文整理自以下影片,版權屬原創作者所有,建議配合原片觀看: