Forex Forest Algorithmic Trading > 程式交易 > AI自動交易 #4 – 交易時段管理的5個常用方法 (1/5)
forexforest.netAI自動交易4交易時段管理的5個常用方法1

時間是交易策略中頗重要的一環,市場上往往會分為不同的交易時段,例如美國開市時段、歐洲開市時段、又或者靜市時段,波幅與趨勢都會呈現不一樣的狀況,從而帶來不同的機會和風險,以下會介紹 5 個實現時間管理的方法。

  1. 以小時限制  (Trading Hour)
  2. 以時分限制 (Trading Time)
  3. 以星期幾作限制 (Trading Weekdays)
  4. 以交易時段限制 (Trading Session)
  5. 以香港時段限制 (HK Session)

1. 以小時限制 (Trading Hour)

以小時限制是最基本的時間管理方式,限制入單或結單時間在某幾小時之內。這種方式如何在MQL4實現呢?

  • 設定2個參數,啟動時間早上 8 時,停止時間晚上 8 時

extern int StartHour = 8;
extern int EndHour = 20;

  • 先檢查交易時段是否橫過0時0分,而作出不同的邏輯操作
    例如 09:00-21:00
    數值上需要 [X X X X X X X X {9 10 11 12 13 14 15 16 17 18 19 20} X X X]
    又例如 23:00-02:00
    數值上需要 [0 1} X X X X X X X X X X X X X X X X X X X X X {23]

bool isOvernight = EndHour > StartHour;
bool isTradeHour = !isOvernight ?
StartHour <= Hour() && Hour() < EndHour(): //FOR EXAMPLE: 09:00-12:00
StartHour <= Hour() || Hour() < EndHour(); //FOR EXAMPLE: 23:00-02:00

  • 然後直接作出交易限制,就完成了

if(isTradeHour){
 //TRADE
}else{
 //CLOSE ONLY OR WAIT FOR ACTION
}

  • 注意事項1: 時間輸入有機會超出0-23的範圍,因此最好以餘數法限制錯誤輸入
         但MQL4的負數餘數會變成負數,因此負數必須先加至正數

while(StartHour < 0) StartHour += 24;
StartHour %= 24;
while(EndHour < 0) EndHour += 24;
EndHour %= 24;

  • 注意事項2: MQL4有分為交易商時間 (Broker Time) 跟 GMT 時間 (GMT Time) 的分別
         使用時可自行選擇任何一個適合自己的標準時間

Hour(); //BROKER HOUR
TimeHour(TimeGMT()); //GMT HOUR

以下是完整代碼 (點擊下載: T02A_Trading_Hour)

//+------------------------------------------------------------------+
//|        Tutorial 2a on Trading Hour |
//|        Copyright 2019, Forex Forest |
//|         http://www.forexforest.net |
//+------------------------------------------------------------------+
#property copyright "Forex Forest 2019"
#property link "http://www.forexforest.net/"
#property strict

extern int StartHour = 8; //Start Hour
extern int EndHour = 20; //End Hour

int init(){
 while(StartHour < 0) StartHour += 24;
 StartHour %= 24;
 while(EndHour < 0) EndHour += 24;
 EndHour %= 24;
 return(0);
}

int deinit(){
 return(0);
}

int start(){
 bool isOvernight = EndHour > StartHour;
 bool isTradeHour = !isOvernight ?
 StartHour <= Hour() && Hour() < EndHour(): //FOR EXAMPLE: 09:00-12:00
 StartHour <= Hour() || Hour() < EndHour(); //FOR EXAMPLE: 23:00-02:00
 
 if(isTradeHour){
  //TRADE
 }else{
  //CLOSE ONLY OR WAIT FOR ACTION
 }
 
 return(0);
}

以上純粹興趣分享和介紹,報讀我們的程式交易課程並不需要認識和學習如何編程,我們是教已編好的程式在市場上獲利的方法和技巧,程式的使用方法比編程更重要,歡迎了解我們的簡介活動或入門班。

請即報讀

自動交易程式課程 (全方位課程)