文章來源:123财經導航
作者:William
(第二單元)第1小節:了解預定義元素

什麽是預定義?和自定義有啥區别?
今天所說的預定義是指在MQL編譯器提前定義的變量、函數和常量。這些預定義的元素由MQL編譯器提供,具有固定的名稱、值和功能的數據元素。
而自定義則是是指根據EA開發者的需求和目的而自己創建的變量、函數和常量。自定義元素是由開發者在編程過程中根據特定需求定義和實現。可以根據自己的邏輯和功能需求,自由地創建自定義變量、函數和常量,以完成特定的任務或實現特定的功能。自定義元素的名稱、值和功能是由開發者自行定義的。
兩者存在緊密的關聯,一個完整的EA程序既需要預定義數據的參與,也需要根據實際求自行拼接和參與計算。
MQL4包含的預定義元素
- 預定義變量
在MQL中具有特殊的含義和功能,可以用于獲取和操作與交易品種、圖表數據和交易執行相關的信息。這些變量的值是由交易平台在運行時自動更新的,可以通過直接引用這些變量來獲取相應的值。
- 預定義函數
内置函數通常被稱爲預定義函數或标準函數,預定義函數是在MQL編程語言中提供的一組具有特定功能和用途的數據元素,并可以通過直接調用來執行相應的操作。其中根據類型的不同,調用操作也大有不同(帶傳遞參數或不帶傳遞參數)。
預定義函數已經集成了數據計算模塊,用于訪問市場數據、執行交易操作、進行技術分析等,涵蓋了多個方面,如價格數據處理、指标計算、訂單管理、時間處理、字符串處理等。一些常見的預定義函數包括 NormalizeDouble()、iMA()、OrderSend()、TimeCurrent()、StringConcatenate() 等。
- 預定義常量
預定義常量是在MQL編譯器中提前定義的固定值,用于表示特定的常量或标志。這些常量具有固定的名稱和值,在編寫MQL程序時可以直接使用,無需額外定義或賦值。預定義常量可以表示價格類型、時間單位、交易操作類型等。一些常見的預定義常量包括 MODE_ASK、MODE_BID、OP_BUY、OP_SELL、PERIOD_M1、PERIOD_H1 等。
怎麽區分預定義變量、函數、常量?

案例解析:
- 預定義變量:預定義變量是直接使用的變量,其名稱以大寫字母開頭,例如 Ask、Bid、Volume,無括号的标準變量格式。
- 預定義函數:預定義函數帶有一對括号,例如 iClose()、Symbol()。通過調用這些函數來執行特定的操作和功能,主要分爲直接調用型和傳入調用型兩種。在上圖中,Symbol就是直接調用型,可以直接獲取到加載EA時當前圖表的貨币名稱;而iClose()則是需要在括号内傳入指定的數據,才能獲取到需要數據的一種函數。
- 預定義常量:預定義常量通常是全大寫的常量,例如 MODE_ASK、OP_BUY、PERIOD_M1。這些常量包含了固定的數值。
按顔色區分(默認):
- 預定義變量:粉色
- 預定義函數:紫色
- 預定義常量:紅色
顔色區分知識延伸(默認):
- 數據類型:藍色
- 數值:綠色
- 自定義變量名(外部):橙色
- 自定義變量名(内部):黑色
- 注釋内容:灰色
顔色區分隻是針對于默認IDE環境下的一種視覺區分方法,不作爲主要辨别方式,實際使用中可以根據喜好來調整顔色。
怎麽使用預定義變量、函數、常量?
在MQL編程中,使用預定義變量、函數和常量非常簡單。以下是它們的基本用法:
- 預定義變量的使用:
預定義變量是直接可用的變量,您可以在代碼中直接引用它們來獲取相應的。例如,要獲取當前買價(Ask),可以使用預定義變量 Ask來進行賦值操作,如下所示:
-
預定義函數的使用:
預定義函數是可調用的代碼塊,通過調用這些函數來執行特定的操作和功能。您可以将函數名和必要的參數傳遞給預定義函數來調用它們。隻需要通過組合使用即可。例如,要計算簡單移動平均線(SMA),您可以使用 iMA() 函數,如下所示:

-
預定義常量的使用:
預定義常量是固定的常量值,用于表示特定的常量或标志。您可以直接在代碼中使用這些常量。常量通常用于參與函數調用時的計算,例如,要指定交易操作爲買入操作,您可以使用預定義常量 OP_BUY,如下所示:
複制

在使用預定義變量、函數和常量時,必須明确知道其已經被定義和實現,無需額外的聲明或定義。它們是MQL編譯器提供的功能,可以直接使用來實現各種自動化交易策略和功能。
删除后无法恢复
删除后无法恢复