2021年4月3日 星期六

如何檢查 K 棒是否移動

在 EA 的程式中,如果需要判斷 K 棒移動的時候,可以參考以下的程式碼。下面的例子是在 PERIOD_H1 的區間中,檢查 K 棒是否移動。

datetime TimeBar;

//+------------------------------------------------------------------+
//| Timer function                                                   |
//+------------------------------------------------------------------+
void OnTimer()
  {
//---
   if(!IsSameTimeBar(TimeBar, PERIOD_H1))
     {
      //--- do something
     }
  }

//+------------------------------------------------------------------+
//| 檢查是不是相同 TimeBar                                           |
//+------------------------------------------------------------------+
bool IsSameTimeBar(datetime &timeBar, ENUM_TIMEFRAMES period = PERIOD_M5)
  {
//--- 讀取時間資料
   datetime TimeBar_Buffer[];
   ArraySetAsSeries(TimeBar_Buffer, true);
   if(CopyTime(Symbol(), period, 0, 2, TimeBar_Buffer) < 0)
      return(false);
   datetime this_time = TimeBar_Buffer[0];
   if(timeBar == this_time)
      return(true);
   timeBar = this_time;
//---
   return(false);
  }