Shopping Cart

購物車內沒有任何商品。

MT4 EA 常用內建保留字-MT4 EA語法教學(二)

本篇會介紹 MT4 EA常用內建保留字,內建保留字是策略或指標組成的基礎要素,在 MQL4 中已經建立好的,且內建字是無法被更改的。

使用前我們必須有交易商的帳號才可以免費使用 MT4 這個軟體,可以使用 OANDA 安達,進入外匯市場的首選經紀商完整介紹!

立即訂閱電子報,掌握最新資訊!

    稱呼

    電子郵件

    以下非必填,但若您願意分享,我們將能推送更精準的內容給您

    投資經驗

    是否為理工科背景、工程師或有寫程式的經驗?

    有興趣的主題
    量化交易台股期貨海外期貨虛擬貨幣美股

    有興趣的量化交易軟體/平台
    不清楚MultiChartsTradingViewPythonXQ

    想透過量化交易達成甚麼目的?
    不確定自動交易選股回測投資績效量化自己的投資方法想找現成的策略套用

    還有什麼想詢問的?

    一、資料型別(或稱資料型態)

    完整內建保留字請見 官方文件,而常用到的大致如下:

    • int:用於宣告整數型別的變數或函式,例如:
      1. int a; // 宣告名稱為「a」的整數型別變數
      2. int b = 3; // 宣告名稱為「b」的整數型別變數,預設值為 3
      3. int c = -5; // 宣告名稱為「c」的整數型別變數,預設值為 -5
      4. int d() // 宣告名稱為「d」的函式,會回傳整數型別資料
    • double:用於宣告實數(能有小數點)型別的變數或函式,例如:
      1. double a; // 宣告名稱為「a」的實數型別變數
      2. double b = 0.3; // 宣告名稱為「b」的實數型別變數,預設值為 0.3
      3. double c = -5.89; // 宣告名稱為「c」的實數型別變數,預設值為 -5.89
      4. double d() // 宣告名稱為「d」的函式,會回傳實數型別資料
    • string:用於宣告字串型別的變數或函式,例如:
      1. string a; // 宣告名稱為「a」的字串型別變數
      2. string b = “量化通”; // 宣告名稱為「b」的字串型別變數,預設值為 量化通
      3. string c() // 宣告名稱為「c」的函式,會回傳字串型別資料
    • bool:用於宣告布林型別的變數或函式,例如:
      1. bool a; // 「a」的布林型別變數
      2. bool b = true;  // 「b」的布林型別變數,預設值為 true
      3. bool c = false;  // 「c」的布林型別變數,預設值為 false
      4. bool d() // 宣告名稱為「d」的函式,會回傳布林型別資料
    • datetime:用於宣告時間型別的變數或函式,例如:
      1. datetime a;  // 「a」的時間型別變數
      2. datetime b = D’2021-09-30’; // 「b」的時間型別變數,預設值為 2021-09-30 00:00:00
      3. datetime c = D’2021-09-30 12:30’; // 「c」的時間型別變數,預設值為 2021-09-30 12:30:00
      4. datetime d = D‘2021-09-30 12:30:50’; // 「d」的時間型別變數,預設值為 2021-09-30 12:30:50
      5. datetime e() // 宣告名稱為「e」的函式,會回傳時間型別資

    *時間的值有固定形式,可以參考 官方文件

    • color:用於宣告顏色型別的變數或函式,例如:
      1. color a; // 「a」的顏色型別變數
      2. color b = clrRed; // 「b」的顏色型別變數,預設值為 clrRed(紅色)
      3. color d() // 宣告名稱為「c」的函式,會回傳顏色型別資

    *顏色的值有固定形式,可以參考 官方文件

    • void :用於宣告無回傳值的函式,例如:
      1. void a() // 宣告名稱為「a」的函式,沒有回傳值

    Mt4 101209161710
    Mt4 101209161711

    二、訪問規範

    const:用於宣告常數,並且不允許在運行時更改此常數,宣告時必須給預設值,例如

    • const int a = 999;
    • const double pi = 3.1415;

    三、記憶體類別

    extern:用於宣告外部參數,並可於後續程式碼內更改該參數的值,例如

    • extern int a = 9999;

    input:用於宣告外部參數,但不可於後續程式碼內更改該參數的值,例如

    • input int a = 999;

    四、運算符

    1. if:條件判斷語法,若 if 後的條件判斷式(這裡舉例為a>b)為 true 則會執行大括號括起來區塊的程式碼,語法如下:
    if(a>b) { 
       // 當條件判斷式為 true 時執行此區塊的程式碼
    } 
    1. else:與 if 做搭配,若 if 後的條件判斷式為 false 則會執行 else 後大括號括起來區塊的程式碼,語法如下:
    if(條件判斷式) {
       // 當條件判斷式為 true 時執行此區塊的程式碼
    }else {
       // 當條件判斷式為 false 時執行此區塊的程式碼
    }
    1. for:迴圈語法,由初始式條件判斷式步進式構成初始式只執行一次,用來宣告或初始變數,第一個分號後的條件判斷式則是每次執行迴圈前會執行一次,是 true 就會執行迴圈本體(大括號括起來區塊的程式碼),false 就會結束迴圈,第二個分號後的步進式,則是每次執行完迴圈本體後會執行一次,語法如下:
    for(int i=0; i<100; i++) { 
      // 當條件判斷式為 true 時執行此區塊的程式碼
    }
    1. while:while 也是迴圈語法,與 for 不同之處在於 小括號內僅需填入條件判斷式,語法如下:
    while(a>b) { 
      // 當條件判斷式為 true 時執行此區塊的程式碼
    }
    1. break:用於中斷迴圈執行,語法如下:
    while(a>b) { 
      if(a == 3) { 
        break; // 中斷迴圈
      }
    }

    五、其他類型

    1. true:布林型態的值,真
    2. false:布林型態的值,假
    3. #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或指標的屬性


    加入LINE社群量化交易討論群」無壓力討論與分享!

    加入Discord 「量化交易討論群」即時獲取實用的資源!

    Write Together 101306261122
    Write Together 101306261121
    Marco
    Marco

    8年經驗法人級EA開發者,已開發過至少百隻EA、腳本、外部套件等相關MT4/MT5程式,期間曾開發過跨交易所/經紀商對沖避險EA、動態權重馬丁策略、多商品網格策略、也專門開發設計各式網站、金流電商等,將程式與交易視為志業,持續精進自己的人。

    文章: 5

    發佈留言

    發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *