在 MT4 裡看到「自動交易」按鈕,不代表按下後就會得到一套可放心放著不管的交易系統。EA(Expert Advisor,專家顧問/智慧交易系統)是依程式規則分析資料、在設定與權限允許時執行交易指令的工具。新手第一個任務不是挑選高報酬 EA,而是把「這個程式應該做什麼、什麼情況不能做、怎麼證明它有照規則執行」寫清楚。 本篇以 Moneta MT4 Windows 桌面版的模擬環境為背景,完成一張 EA 需求卡、一份可重做的回測設定表,及一份停止後的訂單檢查表;不需要先學會編寫整套 MQL4。
RISK|差價合約(CFD)涉及槓桿與快速虧損風險。EA 不會因為自動化而消除市場風險、程式錯誤或連線中斷。以下操作僅限 Demo;任何歷史回測、示意參數及績效指標都不是獲利承諾,也不是啟用真實帳戶的建議。
1. 先分清 EA、指標與腳本,確認來源和支援範圍
程式用途不等於交易效果
MT4 的 MQL4 程式主要可區分為三類。EA 依事件與程式邏輯執行分析,若設定及權限允許,可能送出交易指令;自訂指標(Indicator)主要計算與顯示分析結果,不是一般意義下的自動下單程式;腳本(Script)通常按使用者指令執行一次性工作。三者的存放資料夾、啟動方式和風險界線不同,不能因為副檔名相似就互相替代。MetaQuotes MQL4 程式分類有明確區分。
挑選測試用 EA 時,先確認來源網址、開發者、授權範圍、版本、更新紀錄,以及是否有清楚的輸入參數與風險說明。檔案名稱自稱「穩賺」或附有漂亮權益曲線,都不能當作可信證據。若程式來源不可追溯、要求輸入錢包私鑰、強迫安裝不明 DLL,應暫停。示範時應選擇來源明確、可在模擬環境運作,且您有權使用的測試程式;本稿尚未指定或下載任何 EA。
Moneta 的EA 使用官方說明表示,MT4/MT5 平台可使用 EA,但 Moneta 不建立、提供或維護特定 EA,也不提供其使用上的技術支援;程式問題應聯繫開發者。這是公開的一般性說明,不等於我們已確認特定帳戶、商品或 EA 在某個環境中均可使用。
| 類型 | 主要用途 | 新手應該確認的事 |
|---|---|---|
| EA(Expert Advisor) | 按程式規則分析或進行自動交易 | 是否可能送單、需要哪些權限、如何停止 |
| 自訂指標 | 計算並呈現價格或交易量資訊 | 顯示位置、輸入參數及資料來源 |
| 腳本 | 依指令執行特定一次性工作 | 執行後做了什麼、是否具有交易能力 |
本節驗收: 能指出測試程式的合法來源、類別、權限需求和支援責任;若缺少任何一項,標為「待核實」而非直接安裝。


1.1. 先寫使用需求卡,再決定如何測試
把模糊想法改成可檢查的行為
測試之前,先寫「輸入條件 → 觸發條件 → 預期動作 → 不執行條件 → 異常處理」。例如假設某 EA 在指定商品與週期,僅於明確定義的時間窗口檢查訊號;若未連線、商品不可交易或帳戶權限不足,應記錄事件並停止送單。這是假設需求,不是 Moneta 的交易策略,也不代表目前有任何 EA 已滿足此要求。
需求卡需要寫得足夠精確,使另一名測試者可以判斷程式是否符合規則。除了進場條件,還要寫出持倉存在時是否允許再開單、每次允許的下單次數、錯誤重試上限、交易時間與手動介入後的處理方式。不能只寫「勝率要高」或「每月賺多少」,因為這些結果無法定義具體操作是否正確,也容易誤導開發範圍。
| 需求卡欄位 | 教學填寫方式(非實際 EA 參數) |
|---|---|
| 測試程式/版本 | 程式名稱、發行者、來源、EX4 檔雜湊值(可選) |
| 商品與週期 | 以 Demo 終端實際完整商品代碼記錄,不預填後綴 |
| 允許動作 | 只顯示訊號/允許模擬下單/僅記錄日誌,擇一明定 |
| 禁止條件 | 未連線、交易限制、重複訊號、權限不足等 |
| 結束與重啟 | 停止後檢查訂單;重啟前核對先前倉位與掛單 |
| 驗收證據 | 參數畫面、Experts/Journal 日誌、測試結果與時間 |
建議以 MT4-06-TEST-01 管理「必要條件滿足時的預期行為」,另用 MT4-06-TEST-02 管理「條件不滿足時不得送單」。兩者的結果在取得實機證據前都是 Not Tested。
本節驗收: 即使換一位讀者,也能按照同一張需求卡指出合格、不合格與尚無資料的情況。
TIP|把「哪種情況絕對不能下單」寫進規格,通常比先討論回測報酬更容易發現重大設計缺口。
1.2. 在資料目錄辨識 EA 檔案並載入圖表
檔案存在、可執行與已掛載要分開確認
Windows MT4 的程式安裝目錄與資料目錄未必相同;尤其有多個 MT4 安裝實例時,直接在檔案總管搜尋資料夾容易放錯。應在目前準備使用的 MT4 終端開啟 File → Open Data Folder(繁中選單字面待實拍核對),再進入 MQL4/Experts。MetaQuotes 的資料目錄說明與導覽器說明可作為技術查核依據。
對 EA 而言,MQ4 是可編輯的來源程式碼;EX4 是編譯後可供 MT4 辨識的執行檔。只有 MQ4 不代表已成功編譯;EX4 也不代表來源安全、權限允許或程式實際運作。將合法取得的檔案放入本次終端的正確位置後,再依版本重新整理導覽器或重新啟動終端;若需要用 MetaEditor 編譯來源,應保留編譯訊息並核對是否真的產生有效 EX4。EA 建立與編譯官方說明提供流程。
接著開啟一張 Demo 商品圖表,從 Navigator 的 Expert Advisors 分類選取程式,使用「附加到圖表/Attach to a chart」或拖曳方式載入,檢查參數視窗。只證明看得見名稱還不夠:必須另外確認來源、設定、圖表對象、程式狀態與日誌。別把 EA 複製到 MQL4/Indicators,也別把 MT5 的 EX5 改副檔名當作 EX4。
本節驗收: 能在正確 MT4 終端找到可信來源的 EA,且參數視窗、版本與圖表一致;尚未實拍的選單名稱暫列待核對。




1.3. 檢查全域與個別 EA 的交易許可
不要為了讓它運作而全開權限
「EA 已掛載」不等於「能送單」,「能分析」也不代表「已成交」。在 MT4 中,終端全域 AutoTrading 設定與個別 EA 的 Allow live trading 設定是兩個不同層級;任一必要權限未滿足,交易行為可能受到限制。MetaQuotes 在終端 EA 設定及EA 載入說明有清楚區分。實際欄位名稱以該次繁中終端為準,切勿把英文文件直接偽裝成已見過的中文介面。
建議遵守「先拒絕、後有條件放行」:先確認目前確實是 Demo、來源可信、商品及帳戶條件已核對,再依測試目的開啟最少必要交易權限。DLL 載入、外部 WebRequest 或其他擴充權限不能為了排查而全部勾選;它們涉及額外安全風險,除非對程式用途及網址、檔案來源有可驗證理由,否則保持停用。
如果 EA 不交易,先檢查全域/個別權限、帳戶是否以唯讀投資者密碼登入、程式是否收到觸發資料、商品是否可交易,並查看 Experts 與 Journal 的實際錯誤訊息。不要只靠工具列圖示、笑臉圖示或一張空白持倉表推斷原因。為避免把「排查」變成無限制測試,任何要開啟送單權限的步驟都應明確列於 Test ID 中。
| 狀態 | 可以合理推論 | 還不能推論 |
|---|---|---|
| 導覽器看見 EA 名稱 | 終端可能辨識到程式 | 程式已載入或開始送單 |
| EA 已附加圖表 | 參數設定可能已掛載 | 全域與個別權限皆允許交易 |
| 全域 AutoTrading 已允許 | 終端層級未封鎖交易 | 個別 EA、帳戶或商品條件均符合 |
| 訂單出現在交易區 | 有可核對的實際狀態 | 未來交易或停損價格可保證 |
本節驗收: 權限核對卡能明確說明哪一層被允許、哪一層被阻擋,以及目前是否有實際送單證據。
RISK|AutoTrading 開關不是保證沒有任何既有交易風險的總開關。啟用前先確認 Demo,停止時還須另外檢查持倉與掛單。





1.4. 設定一次可重現的 MT4 歷史回測
先記錄資料、模型與點差
在 Windows MT4 開啟 Strategy Tester(官方文件提供 Ctrl+R 快捷鍵),選擇有權使用的 EA,並指定實際可用的 Demo 商品代碼、時間週期、回測日期、測試模型及程式輸入參數。其他重要欄位包括:終端 Build、EA 版本、初始測試資金、測試時使用的點差設定、歷史資料範圍與資料缺漏。MetaQuotes Strategy Tester 官方設定列有回測模型、商品及日期範圍的設定方法。
不要在未檢查測試資料前,直接把預設模型當成「精確還原市場」。以 MT4 為例,依設定可能採用 Every tick、Control points 或 Open prices only 等模型;歷史 Bar 資料及模型機制並不等同真實逐筆成交記錄。點差、價格跳動、流動性及滑點也可能影響真實執行;歷史回測只能說明在該組資料和設定下的模擬結果,不能保證 Demo 或真實市場會重現。
| 回測欄位 | 必須記錄的內容 |
|---|---|
| 程式 | EA 名稱、可識別版本、輸入參數及來源 |
| 平台環境 | MT4 Build、Environment ID、使用日期 |
| 市場資料 | 商品完整代碼、週期、起訖日期、資料範圍 |
| 模型與成本 | 模型、點差設定、資金基準與已知限制 |
| 測試狀態 | 尚未測試/已執行/受阻/失敗,不能預填 Pass |
回測前先存一份原始設定卡;若執行後發現資料不足或模型不適用,應保存原設定和錯誤,再開新版本測試卡,不能悄悄換參數卻沿用同一份「測試成功」聲明。
本節驗收: 第三人能理解如何重新設定相同測試,並知道哪些資料與市場條件無法還原。



1.5. 讀取報表與日誌,先看行為是否符合規格
回測好看不能取代錯誤檢查
回測完成後,應按照「測試是否完整 → 程式是否按需求動作 → 是否有錯誤 → 才看報酬與回撤」的順序檢查。Results 顯示操作紀錄,Graph 顯示權益變化,Report 提供交易與風險摘要,Journal/Experts 訊息則協助定位執行與資料問題。詳細欄位以MetaQuotes 測試結果和回測報表為依據。
對照需求卡時,要問:是否有重複開單?是否在禁止時段仍送單?遇到無交易條件時是否留下錯誤?持倉數與預期一致嗎?總淨利為正並不代表程式正確;若違反了不得重複下單的要求,就算報表盈利也應標記未通過。反之,策略結果為虧損,不一定代表程式功能錯誤,但顯示策略與資金風險仍須獨立評估。
「Modeling quality」是建模資料品質相關指標,不是勝率,更不是可信度的百分之百保證。最大回撤、交易次數、報酬因子或期望收益等也必須放在資料區間與成本限制下閱讀。如果反覆用同一份歷史資料挑選最好參數,容易產生過度擬合;應明確區分用來調整參數與後續獨立檢查的資料區間。此處只教如何看待證據,不提供績效排行或投資組合建議。
本節驗收: 至少留下結果摘要、錯誤/警示清單及模型/資料限制三種紀錄,並對每項失敗條件給出「Pass/Fail/Blocked/Not Tested」。




1.6. 用模擬帳戶觀察後續運作
把歷史回測與新的市場資料分開
已完成回測,下一步應在可使用的 Demo 環境按需求卡觀察新收到的市場資料,並限定觀察範圍、最大允許模擬風險、記錄頻率與停止條件。這不是將歷史區間切成兩半就稱為「已前向測試」:前者仍使用已知歷史資料,後者是在之後到來的資料中觀察程式實際反應。兩者都不能替代真實市場的全部執行風險。
每次觀察至少記錄日期、Environment ID、EA 版本、商品與週期、程序是否在線、是否有訊號、是否提出委託、伺服器接受與否、日誌錯誤及人工介入。未發生交易本身不必然是 Fail,因為程式的觸發條件可能尚未成立;要根據需求卡判斷它是否應該行動。反之,若根本沒有啟用交易權限,則不能以未成交證明策略「安全穩定」。
使用 VPS、雲端電腦或長時間開機,不保證連線不中斷,也不免除監控責任。若平台停止、網路斷線或時段不可交易,應將觀察記錄分段並標註資料缺口;不能拿缺口當正常樣本。若打算把 Demo 結果放入文中,必須揭露它是模擬觀察,而非真實交易績效。
本節驗收: 可以逐次說明「發生了什麼、原本預期什麼、差異在哪裡」,不將未經測試的表現寫成已驗證。
NOTE|即使後續取得 Demo 實機證據,該證據也只支持對應帳戶、版本、商品及日期的觀察;不推論所有 Moneta 帳戶行為一致。
1.7. 異常時停止 EA,再獨立檢查持倉與掛單
停止程式不是取消所有交易
若發生重複下單、異常日誌、來源不明的改版或與需求卡不一致的行為,第一步是停止新的自動交易風險,並保存時間與可見狀態。依 MetaQuotes 的EA 停止說明,可透過圖表上的 EA 移除操作停止該實例;但只刪除 Navigator 裡的程式檔案,不等於已卸除掛在圖表上的 EA。切換範本或 Profile 也可能影響掛載狀態,應留意意外重啟。
務必把「程式狀態」與「伺服器上的訂單/持倉狀態」拆成兩張清單。EA 移除或停用 AutoTrading 不代表以前建立的待觸發掛單會被刪除,更不代表已持有的倉位會平倉。停止後在 Demo 交易區逐項查:目前持倉、有效掛單、商品、手數、停損停利、最近操作紀錄;若仍有測試單,依帳戶實際狀態及教學目的做個別處理,並查驗是否已成功撤銷或平倉。切勿為了拍攝「停止畫面」而留下狀態不明的有效單。
| 步驟 | 應看到或記錄的狀態 | 不可誤認 |
|---|---|---|
| 記錄異常 | 時間、程式版本、Experts/Journal 日誌 | 只有畫面卡住就認定是券商錯誤 |
| 停止 EA | 已從相關圖表移除或依腳本確認停用 | 停用交易權限等於刪除既有掛單 |
| 檢查持倉 | 商品、方向、數量與保護價 | 圖表 EA 消失等於沒有市場曝險 |
| 檢查掛單與歷史 | 有效訂單、取消結果及紀錄 | 刪除檔案能撤回伺服器已接受的單 |
本節驗收: EA 實例狀態、持倉與掛單三者都有可追溯結果,異常前後沒有不明的測試曝險。
RISK|真實帳戶若存在持倉,關閉軟體或移除 EA 不會自動替您處理所有風險。本文不提供真實資金緊急交易指令;任何真實帳戶問題應依適用服務條款及官方支援管道處理。





1.8. 把需求卡交接成開發與驗收流程
從使用者問題走到開發者可實作的規格
想自行開發或委託他人以 MQL4 編寫 EA,先不要直接丟一句「做一支會賺錢的機器人」。以既有需求卡為基礎,把明確的輸入欄位、觸發事件、交易權限、例外訊息、日誌格式、停止/重啟規則及測試資料交給開發者。程式的技術流程可整理為:需求確認 → MQL4 設計 → MetaEditor 編寫與編譯 → 單元情境檢查 → Strategy Tester 歷史測試 → Demo 觀察 → 錯誤修訂。MetaQuotes 的EA 建立說明可作為開發工具入門來源;此處不教授完整程式碼。
交接時至少附兩個測試案例:正常情境下程式如何辨識合法訊號;異常情境下例如未連線、倉位已存在、權限不足時應如何避免重複送單。若程式版本或參數有變,要重新跑受影響案例;若修改使 EA 由「只提示」變成「可送單」,應視為風險級別改變而非小幅文字更新。編譯成功僅說明程式可產生執行檔,不表示演算法符合需求,更不代表穩定獲利。
最後將本篇成果保存成一個小型工作包:EA_REQUIREMENTS(需求)、TEST_SETTINGS(歷史模型及成本)、RESULTS_AND_LOGS(結果與錯誤)、STOP_CHECKLIST(停止後狀態)。這四份資訊的版本與日期應可對應;沒有取得的資料填「未測試」,不要填示意數字偽裝紀錄。
本節驗收: 有一張別人可以理解、開發與複驗的需求規格,並能說明回測通過、Demo 觀察和正式實盤是不同階段。接著可閱讀 MT4-07 的指標管理教學;建立真實帳戶前,仍須另行評估適用法遵、資金風險與帳戶條件。

2. MT4 EA 教學常見問題 FAQ
Q1:MT4 EA 能直接幫我保證獲利嗎?
Ans:不能。EA 只是按程式規則執行任務,程式缺陷、歷史資料偏差、交易條件與市場變化都可能造成損失;回測績效不能當成保證。
Q2:Moneta 會替我提供或維護 EA 嗎?
Ans:依 Moneta 官方 FAQ,平台支援使用 EA,但 Moneta 不負責創建、提供或維護特定 EA,也不提供該程式的使用支援。個別 EA 問題應向程式來源確認。
Q3:EA 已掛到圖表,為什麼仍不下單?
Ans:依序核對終端 AutoTrading、個別 EA 權限、Demo 帳戶登入權限、商品可交易性、規則有無觸發,並查看實際日誌。不要把「沒有成交」直接歸因於平台故障。
Q4:MT4 的 MQ4 和 EX4 有什麼差別?
Ans:MQ4 是來源程式碼,EX4 是編譯後執行檔。只有原始檔不代表已產生可執行程式;看到 EX4 也不代表其來源安全。
Q5:關閉自動交易後,掛單會自動取消嗎?
Ans:不能這樣假設。停止 EA 或停用自動交易,與取消伺服器既有掛單、平掉持倉是不同操作;應分別核對。
本內容僅作為參考資訊,不能視為任何形式之金融、投資或專業建議。文中所表達之觀點不代表 Moneta Markets 或作者對任何特定投資產品、策略或交易之推薦。請勿僅依據本資料作出投資決策,如有需要,請諮詢獨立之專業顧問。