MQL5 / MT5 錯誤代碼處理指南 — ERR_NO_MONEY・ERR_TRADE_DISABLED 完整一覽
目錄
- 如何查看 Expert 分頁
- 常見錯誤代碼與處理方法
- ERR_NO_MONEY(錯誤代碼 134)
- ERR_TRADE_DISABLED(錯誤代碼 4109)
- ERR_MARKET_CLOSED(錯誤代碼 132)
- ERR_INVALID_STOPS(錯誤代碼 130)
- ERR_OFF_QUOTES(錯誤代碼 136)
- ERR_TRADE_TIMEOUT(錯誤代碼 128)
- TRADE_RETCODE_REJECT(回傳代碼 10006)
- "Margin level too low"
- "No signal on this bar" 或 "Wait for next bar"
- 錯誤優先度分類
- 如何有效率地查閱 Expert 分頁日誌
- 篩選日誌
- 日誌檔案的儲存位置
- 總結
- 常見問題
- Q:錯誤代碼可以在哪裡查詢?
- Q:出現大量錯誤時,應該停止 EA 嗎?
- Q:出現「Invalid account」錯誤。
- Q:沒有錯誤,但 EA 就是不開倉。
MQL5 / MT5 錯誤代碼處理指南 — ERR_NO_MONEY・ERR_TRADE_DISABLED 完整一覽
當 MT5 的 Expert 分頁出現 ERR_NO_MONEY 或 ERR_TRADE_DISABLED 等 MQL5 錯誤時,難免令人擔憂,但大多數情況下原因明確、處理方式清楚。本文整理了 EA 實際運行中最常見的主要錯誤代碼及其解決方法。
如何查看 Expert 分頁
點擊 MT5 下方的「Expert」分頁,即可依時間順序查看所有 EA 的日誌。
顯示格式:
2026.05.18 10:00:01.234 GOLD EMA ATR EA XAUUSD,H1: [ERROR] 130
時間 EA名稱 交易對 時間週期 訊息內容
若日誌中出現錯誤,請根據錯誤代碼的數字來確認原因。
常見錯誤代碼與處理方法
ERR_NO_MONEY(錯誤代碼 134)
訊息範例:"Order failed: not enough money"
"ERR_NO_MONEY"
原因: 保證金不足,無法建立倉位。
處理方法:
- 在 MT5 的「交易」分頁確認當前保證金維持率
- 若維持率接近 100% 以下,考慮追加入金
- 降低 EA 的 RiskPercent 以縮小手數
- 手動平倉部分現有倉位,釋放保證金
ERR_TRADE_DISABLED(錯誤代碼 4109)
訊息範例:"Trade is not allowed"
"AutoTrading disabled"
原因: MT5 的自動交易功能已關閉。
處理方法:
- 點擊 MT5 上方工具列的「自動交易」按鈕,使其變為開啟狀態(綠色)
- 工具 → 選項 → 智能交易系統 → 勾選「允許自動交易」後重新啟動
VPS 重啟後 MT5 自動開啟時,此錯誤較常發生。
ERR_MARKET_CLOSED(錯誤代碼 132)
訊息範例:"Market is closed"
原因: EA 試圖在非交易時段(週末、假日)進行開倉。
處理方法: 通常無需擔心。週末大約從週六 00:00 至週日 17:00(伺服器時間)市場關閉,在此期間嘗試開倉會出現此錯誤,但週一開市後將自動恢復。
ERR_INVALID_STOPS(錯誤代碼 130)
訊息範例:"Invalid stops"
"Stop level violation"
原因: SL(停損)或 TP(止盈)的設定值觸及券商的最小停止位限制。
處理方法:
- 確認券商的停止位(最小 SL 距離)——在 MT5 中右鍵點擊交易品種 → 規格 → 查看「停止位」欄位
- 確認 EA 的 SL 幅度是否大於停止位設定
- 此錯誤容易在 ATR 值極小的低波動時段發生
ERR_OFF_QUOTES(錯誤代碼 136)
訊息範例:"Off quotes"
原因: 未能從券商伺服器接收到報價。連線問題。
處理方法:
- 在 MT5 下方狀態列確認連線狀態
- 若顯示斷線,請重新啟動 MT5
- 確認券商伺服器是否發生故障
- 確認 VPS 的網路連線狀況
ERR_TRADE_TIMEOUT(錯誤代碼 128)
訊息範例:"Trade timeout"
原因: 訂單逾時。伺服器壅塞或網路延遲所致。
處理方法:
- 此錯誤容易在重要經濟數據發布後等高峰時段發生
- 基本上 EA 會在下一個 tick 自動重試,無需手動處理
- 若頻繁發生,請重新評估 VPS 網路環境或更換券商
TRADE_RETCODE_REJECT(回傳代碼 10006)
訊息範例:"Request rejected"
原因: 訂單遭券商拒絕。原因包括點差過大、價格波動過快等。
處理方法:
- 確認 MaxSpreadPoints 的設定值。此錯誤容易在點差擴大時發生
- 若發生在數據發布後,可視為正常行為而忽略
- 若頻繁發生,可適度調高 MaxSpreadPoints
"Margin level too low"
訊息範例:"Margin level too low. Skip signal."
原因: EA 的 UseMarginCheck = true 設定下,保證金維持率低於 MinMarginLevel(例如 200%),因此自動暫停開倉。
處理方法:
- 這是正常的保護機制(並非錯誤)
- 保證金維持率回升後,開倉將自動恢復
- 根本解決方式:追加入金或降低 RiskPercent
"No signal on this bar" 或 "Wait for next bar"
這不是錯誤,而是除錯資訊。
"No signal. ATR=1245, EMA(50)=1998.23"
EA 每次評估圖表後,判斷「本次不符合開倉條件」所輸出的正常日誌。
錯誤優先度分類
| 優先度 | 錯誤 | 對應方式 |
|---|---|---|
| 緊急 | ERR_NO_MONEY(134) | 立即補充保證金 |
| 緊急 | ERR_TRADE_DISABLED(4109) | 開啟自動交易 |
| 注意 | ERR_INVALID_STOPS(130) | 重新檢視 SL 設定 |
| 注意 | ERR_OFF_QUOTES(136)頻繁出現 | 確認連線環境 |
| 正常 | ERR_MARKET_CLOSED(132)僅限週末 | 忽略即可 |
| 正常 | ERR_TRADE_TIMEOUT(128)偶發 | 忽略即可 |
| 正常 | Margin level too low | 保證金不足時的正常保護行為 |
如何有效率地查閱 Expert 分頁日誌
篩選日誌
在 Expert 分頁內按右鍵 → 「篩選」,即可只顯示特定 EA 或特定錯誤的日誌。
日誌檔案的儲存位置
MT5 的日誌檔案儲存於以下路徑:
C:\Users\[使用者名稱]\AppData\Roaming\MetaQuotes\Terminal\[ID]\MQL5\Logs\
系統會依日期自動產生獨立檔案。排查錯誤時,請開啟此資料夾進行確認。
總結
EA 的錯誤大多可歸納為以下四大類型:
- 保證金不足:追加入金或縮減手數即可解決
- 自動交易已關閉:點擊按鈕開啟即可
- 連線問題:重新啟動 MT5 或確認 VPS 網路連線
- 正常行為:無需處理(週末市場關閉、點差擴大時的自動回避等)
養成每天查看 Expert 分頁的習慣,盡早發現高優先度錯誤(134、4109)。
常見問題
Q:錯誤代碼可以在哪裡查詢?
MQL5 官方文件(mql5.com)提供完整的錯誤代碼清單,也可透過 MT5 的說明功能(按 F1 鍵)進行搜尋。
Q:出現大量錯誤時,應該停止 EA 嗎?
若只是偶發性地出現 ERR_MARKET_CLOSED(132)或 ERR_TRADE_TIMEOUT(128),無需停止。但若 ERR_NO_MONEY(134)反覆出現,請先暫停 EA,確認保證金狀況後再重新啟動。
Q:出現「Invalid account」錯誤。
MT5 的登入資訊(伺服器名稱、登入 ID、密碼)可能有誤。請嘗試透過「檔案 → 開設交易帳戶」重新登入。
Q:沒有錯誤,但 EA 就是不開倉。
如果沒有錯誤卻不開倉,通常表示「目前沒有訊號,屬於正常狀態」。EA 並非在每根 K 線都會開倉,只有在條件全部符合時才會入場,請耐心觀察一段時間。若是 H1 週期的 EA,一天內開倉 1 到 3 次即屬正常。
相關文章