MT4黃金EA週末沒有日誌,是卡住了嗎?先區分報價與定時事件
OnTick依賴圖表品種的新報價,OnTimer需要程式訂閱。按事件入口、日誌位置與重新初始化記錄排查,避免用休市無輸出直接判定故障。
作者:托馬斯|MT4實務|2026年11月14日
摘要:週末打開終端,EA介面還在卻長時間沒有新日誌,不能僅憑這個現象判斷程式卡死。排查首先要明確程式由什麼事件觸發、是否真的會在該入口列印日誌,再檢查終端狀態。本文不以實盤下單試驗程式,也不把流程圖當作任何EA已通過測試的證明。
沒有新報價,報價事件可能不會發生
MetaQuotes官方MQL4文件說明,EA所附圖表品種收到新的報價時,才產生相應NewTick事件並呼叫正確宣告的OnTick處理函式。如果程式把檢查和日誌都寫在這個入口內,在沒有新報價的時段,就可能沒有新的執行記錄。
這不意味著所有EA都必須等待報價。程式也可以使用定時器或圖表事件等入口。因此不能看到「週末」就一概解釋所有靜默,更不能將另一個品種仍在更新的現象當成當前黃金圖表必定收到報價的證據。
先辨認程式等待哪個事件

圖為原創流程教學示意,非真實行情,也沒有展示實際交易帳戶。第一條路徑依賴圖表品種的新報價;第二條依賴程式成功訂閱定時器。定時事件可以觸發檢查邏輯,但不等於當前市場可以成交,程式依然必須核對交易條件與資料有效性。
官方建議在初始化時訂閱定時器,並在卸載時取消。僅寫出OnTimer函式、卻沒有訂閱,並不能說明它會週期運行。函式名稱、參數及返回類型也必須符合事件處理要求,任意拼寫錯誤可能讓預期入口沒有被呼叫。
普通使用者怎樣逐步排查
先核對帳戶、伺服器、圖表品種名稱和當前連線狀態,確認查看的是正確終端。記錄最後報價時間與平台交易時間,不用電腦時鐘代替伺服器行情時間。週末常規休市也不代表其他產品的交易安排完全相同,應以具體平台公告為準。
再查看Experts與Journal等相關日誌,保存最後幾條初始化、卸載或錯誤記錄。注意日誌過濾、日期以及是否查看了另一台終端。若EA本身只在發生交易條件時列印,沒有新記錄也可能只是列印條件未滿足,不能據此證明程式從未運行。
隨後檢查EA說明是否包含定時檢查、心跳輸出或週末維護機制。沒有原始碼時,應把版本、參數、圖表品種、最後報價時間和日誌交給提供者核對,不要臆測所有產品都使用同一事件結構。
有原始碼時優先驗證什麼
在模擬環境中核對OnInit、OnTick、OnTimer等入口的宣告及必要訂閱,並用適度頻率的診斷日誌確認實際路徑。日誌可記錄事件類型、品種及資料時間,避免只寫「正常」而沒有可複核上下文。不要把帳戶密碼或其他憑據寫進診斷輸出。
終端運行、圖表載入、事件觸發和交易執行是不同層次。定時器仍輸出不能證明行情新鮮,也不能證明訂單一定能夠發送。報價事件不觸發時,更不應透過放寬交易權限、重複提交訂單來驗證程式是否活著。
為什麼反覆切換週期可能干擾排查
官方文件說明,圖表品種或週期變化、輸入參數變化,會涉及卸載與重新初始化。反覆切換可能讓原問題被新的初始化過程掩蓋,也可能觸發程式重新載入狀態。應先保存日誌和參數,再按說明在安全環境中驗證,而不是不斷重掛EA觀察它是否偶爾恢復。
不同EA對持倉恢復、變數持久化和重複下單防護的實現不同。本文不保證重新載入安全,不建議在存在真實敞口時盲目卸載或重啟。任何維護操作都應先明確持倉由誰管理。
怎樣判斷排查已經結束
如果已確認當前品種沒有新報價、邏輯只位於報價入口,且沒有其他錯誤證據,可以記錄為等待行情,而不是宣稱已修好程式。若定時入口本應運行卻持續無輸出,則繼續檢查訂閱、初始化結果和程式錯誤,不能用休市解釋一切。
恢復報價後,也應先核對時間戳與狀態,再確認程式按預期處理新事件。事件恢復並不證明交易策略有收益優勢,訂單仍面臨點差、滑點和執行風險。排查的目標是找出程式實際停在哪一層,而不是透過實盤冒險獲得答案。