原始碼與編譯
MQ4、EX4、MQ5、EX5:你買到的究竟是什麼?
MQ4 與 MQ5 分別是面向 MT4 和 MT5 的可編輯原始碼檔案;EX4 與 EX5 是編譯後的程式。SET 儲存輸入參數,不是策略原始碼。購買“EA 原始碼”前,應先核對交付檔案清單。
常見副檔名對照
| 檔案 | 用途 | 是否包含可編輯策略? |
|---|---|---|
.mq4 | MQL4 原始檔,通常用於 MT4 | 可以編輯其中包含的邏輯 |
.ex4 | 編譯後的 MT4 程式 | 不提供原始碼文字 |
.mq5 | 用於 MT5 的 MQL5 原始檔 | 可以編輯其中包含的邏輯 |
.ex5 | 編譯後的 MT5 程式 | 不提供原始碼文字 |
.mqh | 被引用的原始碼或宣告 | 取決於檔案內容 |
.set | 儲存的輸入值 | 不能,只有設定 |
MetaQuotes 說明,編譯會從主原始檔或專案生成可執行程式,後者可以不附帶原始碼單獨分發。參見MetaEditor 編譯文件與應用檔案結構。
一份原始檔不一定就是完整專案
假設你收到 Robot.mq5 和 Robot.ex5,但原始碼引用了交付包中不存在的私有庫。雖然文字可以編輯,你可能仍然無法完成構建。這個假設例子說明,“包含原始碼”與“交付完整可編輯實現”需要分別核對。
應要求清單分別列出原始碼引用、自定義指標、編譯庫、DLL、資料檔案和可選預設,並說明哪些依賴可以檢查或修改。即使主檔案可編輯,只有二進位制形式的依賴仍可能封裝著一部分邏輯。
改副檔名不等於轉換
把 EX4 改名為 EX5,並不能移植程式。MQL4 和 MQL5 的語言及執行介面存在差異,MetaQuotes 提供了遷移參考。真正的移植需要相應原始碼、適配和行為測試。
同樣,把編譯檔案另存為 MQ5 也不會產生可讀原始碼。比較商品時,應問清楚哪些檔案能在 MetaEditor 中開啟、哪些能自行編譯。這與“類似另一款產品”的宣傳是不同的問題。
原始碼、程式和設定應一起記錄
每次測試記錄原始碼版本、編譯檔案、構建日期與 SET 檔案。熟悉的檔名不等於可靠的版本標識,因為同一個名稱可能反覆使用。修改原始碼後,為實驗使用不同的名稱,並保留舊包。
參數變化後,舊 SET 不一定仍然適用。要比較參數名、單位和預設值。“距離”可能表示 point、tick 或價格差;不同實現使用相同數字,含義可能完全不同。
可實際執行的交付檢查
- 將交付清單與商品說明逐項比較。
- 開啟主原始碼,檢查依賴。
- 使用說明指定的平臺與環境編譯。
- 確認新生成的程式對應這次構建。
- 載入指定設定並完成一次小範圍測試。
這些檢查用於確認你收到什麼、能否使用它們,不能證明交易質量,也不能自動賦予再次分發的權利。商業問題見原始碼購買檢查表,實際操作見MQ5 編譯指南。
返回頂部












