MQL是什麼?從零開始的MT4/MT5程式交易語言教學(2025全攻略)

MQL是什麼?從零開始的MT4/MT5程式交易語言教學(2025全攻略)

📈 踏入外匯或差價合約 (CFD) 交易的世界,您可能時常聽到「自動化交易」、「程式交易」或「EA」。但您是否曾好奇,這些神奇工具背後的驅動力究竟是什麼?答案就是 MQL (MetaQuotes Language)。那麼,MQL是什麼呢?簡單來說,它就是專為全球最受歡迎的交易平台 MetaTrader (MT4/MT5) 量身打造的程式語言。透過學習 MQL,您將不再只是被動的市場觀察者,而是能將自己的交易策略轉化為全天候運作的自動化程式。本文將從最基礎的概念出發,結合詳細的 MQL4教學,帶您一步步揭開 MQL 的神秘面紗,了解它與 EA是什麼 的關聯,並最終掌握創建自己交易指標的技能。

MQL 語言家族:MQL4 與 MQL5 的核心差異

在深入學習之前,我們必須先釐清一個重要的概念:MQL並非單一語言,而是有兩個主要版本——MQL4 和 MQL5,分別對應 MT4 和 MT5 平台。雖然它們源自同一血脈,但在語法和功能上有著顯著的差異,就像是台語和國語,聽起來相似但用法不同。了解它們的區別,有助於您選擇正確的學習路徑。

許多新手會問:「我應該從 MQL4 開始還是直接學 MQL5?」答案取決於您目前主要使用的交易平台。MT4 因其穩定性和龐大的社群資源,至今仍是市場主流;而 MT5 則提供了更強大的回測功能和更貼近現代程式語言的架構。不過,兩者的基本邏輯是相通的。

MQL4 vs. MQL5 功能比較一覽表

為了讓您更直觀地理解兩者的不同,我們整理了以下比較表格:

比較項目 MQL4 (對應 MT4) MQL5 (對應 MT5)
語法結構 類 C 語言,程序化導向 C++ 語言,完全物件導向 (OOP)
倉位系統 單獨訂單系統,每筆交易都是獨立倉位 淨額結算 (Netting) 與對鎖 (Hedging) 並存
回測功能 單一商品回測,速度較慢 支援多商品、多線程回測,速度快且更精準
時間週期 9 種標準時間週期 21 種時間週期,包含 M2, H2, H6 等
內建指標 約 30 種 約 38 種
學習曲線 相對平緩,適合程式新手 較陡峭,需要物件導向基礎

儘管 MQL5 功能更強大,但考量到目前廣大的 MT4 使用者社群及豐富的現成資源,本篇教學將以 MQL4 作為入門範例,其核心概念同樣適用於 MQL5。

理解 MQL 是什麼,是開啟 MT4/MT5 自動化程式交易大門的第一把鑰匙。

MQL 的三大應用:指標、EA 與腳本

學會了 MQL,您到底可以創造出什麼?在 MetaTrader 的世界裡,MQL 程式主要分為三種類型,各自扮演不同角色:

  • 自訂指標 (Custom Indicators): 這是最常見的應用。MT4/MT5 內建了許多常用指標如移動平均線 (MA)、相對強弱指數 (RSI) 等。但如果您的策略需要一個特殊的、市場上沒有的指標(例如,綜合多個指標的強弱分數),您就可以透過 MQL 編寫出來,並將它繪製在圖表上,作為您交易決策的視覺輔助。
  • 智能交易系統 (Expert Advisors, EA): 這就是大家常說的「EA 自動交易程式」。EA 不僅能分析市場數據、產生交易訊號,更能代替您執行下單、平倉、設定停損停利等所有交易操作。一個設計精良的 EA,可以做到 24 小時監控市場,嚴格執行交易紀律,排除人性中的恐懼與貪婪。現在您應該更清楚 EA是什麼了,它正是 MQL 語言最強大的應用結晶。
  • 腳本 (Scripts): 腳本是為執行一次性任務而設計的。例如,您可能需要一個能「一鍵平掉所有歐元相關貨幣對倉位」的工具,或是一個能「快速在所有圖表上載入特定模板」的幫手。這類單次性的、重複性的操作,就非常適合寫成腳本來執行,以節省您的寶貴時間。

MQL4 入門實戰:建立您的第一個指標

紙上談兵不如實際操作。接下來,我們將帶您親手打造一個簡單卻實用的自訂指標:「在圖表上顯示一條 20 週期的簡單移動平均線 (SMA)」。這個過程將幫助您熟悉 MQL 的開發環境與基本流程。

第一步:啟動 MetaEditor 編輯器

MetaEditor 是 MQL 語言的專屬開發環境 (IDE),內建於 MT4/MT5 中。您不需要額外安裝任何軟體。啟動它的方式有三種:

  1. 快捷鍵: 在 MT4 圖表介面,直接按下鍵盤上的 F4 鍵。
  2. 工具列: 點擊 MT4 工具列上那個黃色書本帶有驚嘆號的圖示,也就是「MetaQuotes 語言編輯器」。
  3. 選單: 點擊上方選單的「工具」→「MetaQuotes 語言編輯器」。

第二步:使用「MQL4 嚮導」建立專案

成功開啟 MetaEditor 後,一個類似程式碼編輯器的視窗會出現。讓我們開始建立新專案:

  1. 點擊左上角的「新增檔案」按鈕,這會啟動「MQL4 嚮導」。
  2. 在嚮導視窗中,選擇「自訂指標」,然後點擊「下一步」。
  3. 在「常規屬性」頁面,您需要設定一些基本資訊:
    • 名稱 (Name): 輸入 MA_demo。這是您指標的檔案名稱。
    • 作者 (Author): 可以保留預設或填上您的名字。
    • 連結 (Link): 可以保留預設或填上您的網站。
    • 參數 (Parameters): 這次我們不添加可自訂參數,直接點擊「下一步」。
  4. 在「事件處理程序」頁面,保持預設勾選的「OnCalculate」即可,點擊「下一步」。
  5. 在「繪圖屬性」頁面,我們要定義指標線的樣式:
    • 確認「指標顯示於」是在「主視窗」。
    • 點擊「新增」按鈕來增加一條線。
    • 在下方設定區塊,將「標籤」改為 MA,「類型」選擇 Line,「顏色」選擇 Red
  6. 點擊「完成」。此時,MetaEditor 會為您生成一個程式碼模板。

第三步:理解程式模板與編寫核心邏輯

嚮導生成的模板包含了許多 #property 開頭的設定,這些都是定義指標外觀和行為的指令。我們需要關注的核心是 OnInit()OnCalculate() 這兩個函數。

  • 💡 OnInit() 函數: 全名是 On Initialize (初始化)。當您將指標加載到圖表上的那一刻,這個函數裡的程式碼會被執行一次,通常用來做一些初始設定。
  • 💡 OnCalculate() 函數: 全名是 On Calculate (計算)。這是指標的心臟!每當市場有一個新的報價 (Tick) 進來,這個函數就會被觸發執行一次,用來計算並更新指標的值。

我們的目標是在 OnCalculate() 函數中寫入計算移動平均線的公式。請找到這個函數,並在它的大括號 {} 內,加入以下程式碼:

//--- 使用 for 迴圈計算圖表上每一根 K 棒的 MA 值
for (int i = 0; i < rates_total; i++)
{
  MABuffer[i] = iMA(NULL, 0, 20, 0, MODE_SMA, PRICE_CLOSE, i);
}

這段程式碼的核心是 MQL4 的內建函數 iMA(),它專門用來計算移動平均線。讓我們解析一下它的參數:

  • NULL: 代表使用當前圖表的貨幣對。
  • 0: 代表使用當前圖表的時間週期。
  • 20: MA 的計算週期,這裡我們設定為 20。
  • 0: MA 的位移值,0 代表不位移。
  • MODE_SMA: MA 的類型,這裡是簡單移動平均線 (Simple Moving Average)。
  • PRICE_CLOSE: 計算 MA 所使用的價格,這裡是收盤價。
  • i: 要計算的是第幾根 K 棒的 MA 值。

第四步:編譯並在圖表上使用

寫完程式碼後,還差最後一步——編譯 (Compile)。編譯就像是把我們寫的「人類能懂的」MQL 程式碼,翻譯成「MT4 能懂的」機器語言 (.ex4 檔案)。

  1. 在 MetaEditor 工具列上,點擊「編譯」按鈕 (一個帶有向下箭頭的黃色菱形圖示)。
  2. 如果程式碼沒有語法錯誤,下方的「錯誤」視窗會顯示「0 error(s), 0 warning(s)」。
  3. 現在,回到您的 MT4 平台。在左側的「導航器」視窗中,找到「自訂指標」列表。
  4. 您應該能看到剛剛創建的「MA_demo」。用滑鼠將它拖曳到您的圖表上。
  5. 大功告成!您會看到一條紅色的 20 週期移動平均線出現在圖表上。

恭喜!您已經完成了從零到一的 MQL 程式設計體驗。雖然只是幾行簡單的程式碼,但這證明了將交易想法具現化並非遙不可及。對 MQL 的探索之旅,可以參考官方的 MQL5 語言參考文檔,這是最權威的學習資源。

從指標到 EA:自動化交易的進階之路

學會了製作指標,就等於掌握了「觀察市場」的工具。而要實現自動交易,下一步就是學會製作 EA,也就是賦予程式「執行交易」的能力。一個基本的 EA 結構,通常包含以下邏輯:

  1. 交易信號判斷: 這是 EA 的大腦。例如,您可以設定「當 5 週期 MA 向上穿越 20 週期 MA 時,產生買入信號」。這就需要用到您剛剛學會的 `iMA()` 函數。
  2. 下單執行: 當信號出現時,EA 需要調用 MQL 的交易函數,如 `OrderSend()`,來執行買入或賣出操作。您需要指定交易的手數、停損 (Stop Loss) 和停利 (Take Profit) 價位。
  3. 倉位管理: EA 還需要能夠管理已有的倉位,例如在特定條件下移動停損(追蹤停利)或平倉。
  4. 風險控管: 專業的 EA 會包含嚴謹的風險管理邏輯,例如計算每筆交易應下的手數,確保單筆虧損不超過帳戶總資金的特定百分比。

⚠️ 重要提醒: 編寫 EA 的複雜度遠高於指標。在將任何 EA 用於真實帳戶之前,必須進行徹底的回測 (Backtesting) 與模擬倉測試。回測是利用歷史數據來檢驗您的 EA 策略在過去的表現,而模擬倉則是在無風險的環境下觀察其在即時市場中的反應。許多初學者因為忽略這一步而造成不必要的虧損。

對於有志於深入程式交易的投資者,除了自己動手寫,也可以考慮 OANDA 提供的獨有 EA 與指標工具,或者參與自營交易 (Prop Trader) 計畫,利用專業機構的資源來提升您的交易水平。

常見問題 (FAQ)

❓ Q1: MQL4 和 MQL5 有什麼主要區別?我應該學哪個?
主要區別在於語法結構、倉位系統和回測功能。MQL4 語法簡單,適合新手,對應 MT4;MQL5 採用物件導向,功能更強大,對應 MT5。建議根據您目前使用的平台來決定。如果您是新手,從 MQL4 開始會更容易上手,且網上資源也更豐富。
❓ Q2: 我完全不會寫程式,也能學會 MQL 嗎?
絕對可以。MQL 相對於通用的程式語言(如 Python、Java)來說,目標非常專一,就是為了交易。因此它的語法和函數設計都相對簡單直觀。只要您有清晰的交易邏輯,並願意花時間從基礎開始學習,循序漸進,完全可以掌握 MQL。
❓ Q3: 什麼是 EA 回測 (Backtesting)?為什麼它很重要?
回測是使用歷史市場數據來測試您的 EA 交易策略,看看它在過去的某段時間內表現如何。這是一個至關重要的步驟,因為它可以幫助您:1) 驗證策略的有效性;2) 發現策略的潛在缺陷;3) 優化 EA 的參數。一個在回測中表現糟糕的 EA,幾乎不可能在真實市場中獲利。
❓ Q4: 我可以在哪裡找到現成的 MQL 指標或 EA?
最大的資源庫是官方的 MQL5 Code Base,上面有成千上萬由全球開發者分享的免費指標、EA 和腳本。此外,MQL5 市場 (Marketplace) 也提供大量可供購買的商業級 EA。但請注意,使用他人程式碼前,務必了解其運作邏輯並進行充分測試。
❓ Q5: 使用 MQL 自動交易有風險嗎?
是的,存在風險。風險主要來自幾個方面:1) 策略失效:市場狀況會改變,過去有效的策略不保證未來也有效。2) 程式錯誤 (Bug):程式碼中的小錯誤可能導致災難性的交易結果。3) 過度優化:在回測中為了追求完美數據而過度調整參數,導致 EA 只對特定歷史數據有效,失去泛用性。4) 網路或硬體問題:斷網或電腦當機可能導致 EA 無法正常執行。因此,嚴謹的測試和監控是必不可少的。

結論

總結來說,MQL是什麼?它不僅僅是一種程式語言,更是連接您交易思想與市場現實的橋樑。它賦予了普通投資者實現交易自動化、量化分析市場的能力,讓交易不再受限於時間和情緒。從本篇教學的簡單移動平均線指標開始,您已經成功邁出了第一步。未來,您可以繼續探索更複雜的指標、建立屬於自己的 EA 交易系統,甚至在 MQL 社群中與全球的交易者和開發者交流。這條路充滿挑戰,但也充滿了無限的可能性。只要保持學習的熱情和嚴謹的態度,MQL 將成為您在金融市場中無往不利的強大武器。

*本文內容僅代表作者個人觀點,僅供參考,不構成任何專業建議。

返回頂端