MQL5 程式語言入門教學:MQL5是什麼?新手撰寫 MT5 EA 自動交易程式全攻略

在外匯與多資產交易中,如何提升交易執行效率與策略穩定性,是許多交易者關注的重點。MQL5 程式語言 配合 MetaTrader 5(MT5)平台,提供了更強大的物件導向架構與多執行緒運算能力,讓交易者能開發出執行速度更快、邏輯更穩定的 EA(Expert Advisor)。
本篇 MQL5 教學 專為零基礎新手設計,從 MetaEditor 環境配置開始,帶你深入了解 MT5 的 Tick(報價驅動)運作邏輯。我們將解析核心語法與事件函數,並結合 Titan FX 的免費 EA 資源與即時前測數據,助你快速建立高效、自動化的量化交易系統。
1. 什麼是 MQL5?從 MT5 平台到自動化交易的核心概念
MQL5 是 MetaQuotes 為 MetaTrader 5(MT5)設計的現代程式語言,語法接近 C++。讓交易者能將策略轉化為更高效的自動交易系統。
MT5 可建立的三種常用程式類型
- EA(Expert Advisor,自動交易程式):自動買賣、設定停損停利與資金管理,是自動交易的核心工具(本文重點)。
- 自訂指標:在圖表上繪製技術指標或自訂訊號,幫助判斷市場狀況。
- 腳本(Script):執行一次性任務(如快速平倉),用完即止。
MT5 核心運作邏輯(以 EA 為例)
MT5 以 Tick(報價跳動) 為基本單位,每當價格變動就會產生一個 Tick。
把 EA 掛載到圖表後:
- MT5 會持續將最新 Tick 傳給 EA。
- EA 主要透過
OnTick()函數接收 Tick 並執行交易邏輯。
重點:所有進出場判斷都寫在 OnTick() 裡,它是 EA 的核心心跳。
2. MQL5 怎麼寫 EA?從 MetaEditor 到圖表掛載
開啟 MT5 的 MetaEditor 5,依循以下流程即可完成開發:
- ① 登入MT5 - 點選導航欄的「IDE」,開啟MetaEditor。
- ② 點擊「New」-「Expert Advisor (template)」或「Expert Advisor (generate)」,在「Expert\」後輸入名稱與作者資訊後繼續。
- ③ 根據需要選擇額外的EA交易時間處理常式,也可以不勾選直接進行下一步。
- ④ 在編輯區撰寫程式碼(副檔名為 .mq5),完成後點擊「Compile」進行編譯,成功後會產生 .ex5 執行檔。
- ⑤ 回到 MT5,在「Navigator」→「Expert Advisors」找到檔案並拖曳到圖表上,完成掛載。

※ 新手常遇到 EA 載入後無反應的情況,這通常是因為沒有開啟「允許自動交易」的功能。請務必確認 MT5 上方的「自動交易」按鈕已變為綠色。點擊「Tools」-「Options」-「Expert Advisors」- 勾選「Allow algorithmic trading」,按需求勾選禁用條件。

3. MQL5 語法速成:新手必懂的資料型別與事件函數
MQL5 的語法層次分明,掌握基礎的資料容器與觸發機制後,就能建構出邏輯嚴密的 EA。
常用資料型別
在 MQL5 中定義資料時,選擇正確的容器能確保運算效率與安全性。
| 資料型別 | 說明 | 實際應用範例 |
|---|---|---|
| int | 儲存不含小數點的整數 | 訂單編號、技術指標週期設定 |
| double | 儲存高精確度的小數 | 商品報價、下單手數運算 |
| string | 儲存文字內容 | 交易備註、發送郵件通知的內容 |
| datetime | 儲存日期與時間 | 限制 EA 只在特定時段進行交易 |
EA 核心事件函數
MQL5 的事件處理比前代更豐富,但新手應優先掌握以下核心心臟。
| 函數名稱 | 執行時機 | 核心功能 |
|---|---|---|
| OnInit() | EA 載入圖表時執行 | 初始化技術指標控制柄(Handle) |
| OnTick() | 每次報價跳動時執行 | 判斷進出場邏輯(最核心處) |
| OnTimer() | 定時觸發(如每秒一次) | 適合非價格驅動的邏輯判斷 |
| OnDeinit() | EA 移除或圖表關閉時 | 清理資源、釋放指標佔用的記憶體 |
新手優先熟記 OnInit()、OnTick() 與 OnDeinit() 三個函數即可。
4. 避坑指南:MQL5 除錯與優化
在 MQL5 開發中,語法報錯通常好解決,邏輯穩定才是真正的挑戰。
常見開發錯誤速查
| 錯誤類型 | 常見原因 | 解決方法 |
|---|---|---|
| 編譯錯誤 | 遺漏分號 ;、CopyBuffer 參數不匹配 | 雙擊 MetaEditor 下方錯誤訊息跳轉修正 |
| 下單無反應 | 未開啟自動交易、帳戶模式不符 | 檢查 MT5 頂部按鈕,建議使用 CTrade 簡化指令 |
| 數據讀取失敗 | 指標 Handle 未初始化 | 在 OnInit 確認 Handle 有效,並執行 ArraySetAsSeries |
程式穩定度提升技巧
| 優化工具 | 核心功能 | 建議應用場景 |
|---|---|---|
| Print() / Comment() | 輸出資訊至日誌或圖表 | 追蹤程式內部邏輯,確認條件是否正確觸發 |
| 可視化回測 | 策略測試器開啟 Visual Mode | 觀看歷史進出場行為,驗證邏輯準確性 |
| 資源釋放 | 使用 IndicatorRelease() | 在 OnDeinit 執行,防止長時間掛載導致系統卡頓 |
關鍵提醒: 利用 MT5 多執行緒優化參數時,需警惕「過度擬合」陷阱。如果歷史績效過於完美但實盤回撤嚴重,通常是參數太過貼合過去數據,建議改從簡單邏輯出發。
5. 免費 EA 資源推薦:利用 Titan FX 前測數據加速實戰
如果你希望在實戰中邊做邊學,參考經紀商提供的成熟範本是最佳途徑。Titan FX 為投資者提供了超過 70 款免費 EA 程式,完整支援 MT5 平台的多資產交易需求。

這些資源的價值在於透明度:
新手可以挑選排名靠前、回撤適合自己風格的 EA,下載後先在模擬帳戶觀察。這不僅加速自動化進程,也是學習專業 EA 結構的最佳方式。
6. 常見 FAQ:關於 MQL5 與 EA 開發的疑難雜症解答
Q1:為什麼我的 EA 在 Strategy Tester 中正常,但在實盤卻不執行交易?
常見原因包括:經紀商伺服器時間差、點差設定不同、滑價設定過小、或帳戶類型(Netting/Hedging)不符。建議先在模擬帳戶用真實點差與延遲環境測試。
Q2:如何進行多品種(Multi-symbol)同時回測?
這是 MT5 的強項。你只需在代碼中透過 iClose() 或 CopyBuffer() 指定非當前圖表的品種名稱(如 "EURUSD"),MT5 策略測試器會自動加載相關歷史數據進行多幣對同步計算,無需額外設定。
Q3:如何限制 EA 只在特定的交易時段執行?
在 OnTick() 邏輯最前方加入時間判斷。使用 TimeCurrent() 獲取伺服器時間,並透過結構體 MqlDateTime 提取小時或分鐘,若不在設定區間(如歐美盤)則直接結束當次執行,以避開低流動性時段。
7. 總結
透過這篇 MQL5 程式語言 入門教學,你已掌握從環境設定、核心語法到 EA 除錯的完整流程。MQL5 不僅提供卓越的執行效能,更讓多資產配置與複雜策略的回測變得簡單高效。
自動交易的價值在於紀律與執行力。建議從簡單邏輯開始實作,善用 Titan FX 的免費 EA 範本與前測排名進行「逆向工程」學習,並在模擬帳戶充分驗證穩定性。隨著對 OnTick 邏輯與資產管理能力的提升,你將能利用 MQL5 打造出專屬的自動化獲利工具,在量化交易之路穩步前行。