兩個黃金EA為何會管到同一筆單?檢查MT4魔術號
用模擬帳戶案例說明EA如何按品種和魔術號篩選訂單,以及換號後如何避免遺留持倉失去管理。
作者:托馬斯|MT4實務|2026年11月10日
摘要:在同一個MT4帳戶掛兩套黃金EA時,如果它們使用相同的訂單識別條件,就可能同時修改一筆訂單的止損。排查時先看訂單上的品種和魔術號,再看代碼實際按哪些條件篩選。下面的編號和訂單均為教學假設。
魔術號記錄在哪裡
MQL4 的 OrderSend 支持傳入 magic 參數。訂單被成功選中後,OrderMagicNumber 可以讀出該訂單的識別號。它能給程序提供分類依據。具體哪些訂單會被修改或關閉,仍由EA自身的篩選和執行邏輯決定。如果程序遍歷帳戶訂單時只檢查品種,兩套黃金EA即使填了不同的魔術號,也可能處理同一批單。

圖中假設策略A、B分別使用101和202。A逐筆選中交易池的訂單,先核對實際品種,再核對識別號。兩項都符合時,才交給後續邏輯檢查訂單類型及允許的動作。選單失敗應跳過並記錄錯誤。涉及修改前,宜再次選中目標訂單,避免使用此前複製進程序的舊數據。
用模擬帳戶分三步驗證
第一步,記錄兩套EA的版本、輸入參數、圖表週期和券商商品全名。不同帳戶上的黃金名稱可能帶後綴。對同一品種部署多個實例時,也要明確它們究竟獨立管理,還是設計上共享訂單。
第二步,在模擬帳戶中讓每套EA分別生成一筆可識別的測試單,同時準備一筆應被排除的測試單。日誌至少記下訂單號、品種、魔術號和程序準備執行的動作。然後觸發一次可控的管理動作,例如嘗試修改策略A自己的測試單,查看策略B的訂單是否保持原值。掛單和已成交持倉最好分別驗證,因為交易池可同時包含這兩類訂單,實際處理規則通常不同。
第三步,重啟終端或重新加載EA後再查一次。若程序只記住本次運行期間建立的訂單列表,重啟後的行為可能變化。可核對它是否按既定條件重新識別訂單,以及沒有匹配訂單時是否出現意外動作。編號只是輔助隔離,帳戶範圍內的總風險檢查如果有意讀取所有持倉,應與實際修改訂單的權限分開記錄。
更換編號之前先處理舊單
假設策略A此前用101建立倉位,現在改成303。輸入參數變化通常只影響後續代碼使用的值,舊訂單的識別號並不會隨圖表設置自動遷移。若管理條件只匹配303,原101訂單可能被跳過。變更前應列出舊訂單和預定處理方式,再在模擬環境驗證重啟與交接。遇到版本不可查或日誌不能說明篩選邏輯的EA,先暫停自動管理變更,核對現有持倉的退出安排。模擬通過也只能說明所測試場景,真實報價變化、服務器拒單和滑點仍需單獨評估。