本篇會介紹 MT4 EA常用內建保留字,內建保留字是策略或指標組成的基礎要素,在 MQL4 中已經建立好的,且內建字是無法被更改的。
使用前我們必須有交易商的帳號才可以免費使用 MT4 這個軟體,可以使用 OANDA 安達,進入外匯市場的首選經紀商完整介紹!
如果還不熟悉 MT4 的基本用法,可以先參考以下文章!
一、資料型別(或稱資料型態)
完整內建保留字請見 官方文件,而常用到的大致如下:
- int:用於宣告整數型別的變數或函式,例如:
- int a; // 宣告名稱為「a」的整數型別變數
- int b = 3; // 宣告名稱為「b」的整數型別變數,預設值為 3
- int c = -5; // 宣告名稱為「c」的整數型別變數,預設值為 -5
- int d() // 宣告名稱為「d」的函式,會回傳整數型別資料
- double:用於宣告實數(能有小數點)型別的變數或函式,例如:
- double a; // 宣告名稱為「a」的實數型別變數
- double b = 0.3; // 宣告名稱為「b」的實數型別變數,預設值為 0.3
- double c = -5.89; // 宣告名稱為「c」的實數型別變數,預設值為 -5.89
- double d() // 宣告名稱為「d」的函式,會回傳實數型別資料
- string:用於宣告字串型別的變數或函式,例如:
- string a; // 宣告名稱為「a」的字串型別變數
- string b = “量化通”; // 宣告名稱為「b」的字串型別變數,預設值為 量化通
- string c() // 宣告名稱為「c」的函式,會回傳字串型別資料
- bool:用於宣告布林型別的變數或函式,例如:
- bool a; // 「a」的布林型別變數
- bool b = true; // 「b」的布林型別變數,預設值為 true
- bool c = false; // 「c」的布林型別變數,預設值為 false
- bool d() // 宣告名稱為「d」的函式,會回傳布林型別資料
- datetime:用於宣告時間型別的變數或函式,例如:
- datetime a; // 「a」的時間型別變數
- datetime b = D’2021-09-30’; // 「b」的時間型別變數,預設值為 2021-09-30 00:00:00
- datetime c = D’2021-09-30 12:30’; // 「c」的時間型別變數,預設值為 2021-09-30 12:30:00
- datetime d = D‘2021-09-30 12:30:50’; // 「d」的時間型別變數,預設值為 2021-09-30 12:30:50
- datetime e() // 宣告名稱為「e」的函式,會回傳時間型別資
*時間的值有固定形式,可以參考 官方文件。
- color:用於宣告顏色型別的變數或函式,例如:
- color a; // 「a」的顏色型別變數
- color b = clrRed; // 「b」的顏色型別變數,預設值為 clrRed(紅色)
- color d() // 宣告名稱為「c」的函式,會回傳顏色型別資
*顏色的值有固定形式,可以參考 官方文件。
- void :用於宣告無回傳值的函式,例如:
- void a() // 宣告名稱為「a」的函式,沒有回傳值
二、訪問規範
const:用於宣告常數,並且不允許在運行時更改此常數,宣告時必須給預設值,例如:
- const int a = 999;
- const double pi = 3.1415;
三、記憶體類別
extern:用於宣告外部參數,並可於後續程式碼內更改該參數的值,例如:
- extern int a = 9999;
input:用於宣告外部參數,但不可於後續程式碼內更改該參數的值,例如:
- input int a = 999;
四、運算符
- if:條件判斷語法,若 if 後的條件判斷式(這裡舉例為a>b)為 true 則會執行大括號括起來區塊的程式碼,語法如下:
if(a>b) {
// 當條件判斷式為 true 時執行此區塊的程式碼
}
- else:與 if 做搭配,若 if 後的條件判斷式為 false 則會執行 else 後大括號括起來區塊的程式碼,語法如下:
if(條件判斷式) {
// 當條件判斷式為 true 時執行此區塊的程式碼
}else {
// 當條件判斷式為 false 時執行此區塊的程式碼
}
- for:迴圈語法,由初始式、條件判斷式與步進式構成。初始式只執行一次,用來宣告或初始變數,第一個分號後的條件判斷式則是每次執行迴圈前會執行一次,是 true 就會執行迴圈本體(大括號括起來區塊的程式碼),false 就會結束迴圈,第二個分號後的步進式,則是每次執行完迴圈本體後會執行一次,語法如下:
for(int i=0; i<100; i++) {
// 當條件判斷式為 true 時執行此區塊的程式碼
}
- while:while 也是迴圈語法,與 for 不同之處在於 小括號內僅需填入條件判斷式,語法如下:
while(a>b) {
// 當條件判斷式為 true 時執行此區塊的程式碼
}
- break:用於中斷迴圈執行,語法如下:
while(a>b) {
if(a == 3) {
break; // 中斷迴圈
}
}
五、其他類型
- true:布林型態的值,真
- false:布林型態的值,假
- #property:用於宣告EA或指標的屬性,如版本號、作者、連結、icon、指標顯示方式等,語法如下:
#property version "15.0.1"; // 版本號為 15.0.1
#property copyright "量化通" // 作者為 量化通
*其他屬性宣告方法如請見 官方文件。
六、總結
以上是我們在寫 EA 時,常會使用到的 MQL4 內建保留字。當我們將這些用法牢記,就能大幅提高 EA 開發效率哦!
類別 | 常用內建保留字 | 說明 |
資料型別 | int | 用於宣告整數型別的變數或函式 |
double | 用於宣告實數(能有小數點)型別的變數或 函式 |
|
string | 用於宣告字串型別的變數或函式 | |
bool | 用於宣告布林型別的變數或函式 | |
datetime | 用於宣告時間型別的變數或函式 | |
color | 用於宣告顏色型別的變數或函式 | |
void | 用於宣告無回傳值的函式 | |
訪問規範 | const | 用於宣告常數,並且不允許在運行時更改此 常數,宣告時必須給預設值 |
記憶體類別 | extern | 用於宣告外部參數,並可於後續程式碼內更 改該參數的值 |
input | 用於宣告外部參數,但不可於後續程式碼內 更改該參數的值 |
|
運算符 | if | 條件判斷語法,條件判斷式為 true 會執行大 括號的程式碼 |
else | 與 if 做搭配,若 if 後的條件判斷式為 false 會執行大括號的程式碼 |
|
for | 迴圈語法,由初始式、條件判斷式與步進式 構成 |
|
while | 迴圈語法,僅需填入條件判斷式 | |
break | 用於中斷迴圈執行 | |
其他類型 | true | 布林型態的值,真 |
false | 布林型態的值,假 | |
#property | 用於宣告EA或指標的屬性 |
MT4 EA 語法教學系列:
- 如何打造自己的第一支EA-MT4 EA語法教學(一)
- MT4 EA 常用內建保留字-MT4 EA語法教學(二)
- MT4 EA下單指令介紹-MT4 EA語法教學(三)
- 開始寫一支完整的交易策略-MT4 EA語法教學(四)
- 如何跑回測與最佳化-MT4 EA語法教學(五)
量化通粉絲社群,一起討論程式交易!
程式交易課程推薦
📣 MT4 程式交易系列線上課程,手把手開始用程式交易打造自己的被動收入!