1

我对 MQL4 真的很陌生,并且仍在努力掌握这个概念。我希望有一个事件处理程序来检测每个蜡烛条打开(或每个之前的蜡烛条关闭)。试图将它包裹在我的头上,但它不起作用:

所以我有一个检查刻度的功能:

bool checkingFirstTick(){
   datetime currentTime = iTime(Symbol(), Period(), 0);

   if(currentTime - lastCandle > 0){
      lastCandle = currentTime;
      return true;
   }
   return false;
}

其中lastCandle是一个全局变量。

现在,当我将其放入OnTick()事件中时:

void OnTick(){

  Print("Ticking");
   if(checkingFirstTick()){
      Print("It's an opening!");
   }
}

It's an opening!声明永远不会被打印出来。

在此处输入图像描述

我在做一些根本错误的事情吗?或者有没有更有效的方法来收听蜡烛条的开盘,无论我设置的时间段是多少?

4

1 回答 1

4

尝试这个:

// --- Global Variable ----
datetime ArrayTime[], LastTime;

void OnTick() {
   if(NewBar(PERIOD_H1)) {
       // insert your program here
   }
}

bool NewBar(int period) {
    bool firstRun = false, newBar = false;

    ArraySetAsSeries(ArrayTime,true);
    CopyTime(Symbol(),period,0,2,ArrayTime);

    if(LastTime == 0) firstRun = true;
    if(ArrayTime[0] > LastTime) {
        if(firstRun == false) newBar = true;
        LastTime = ArrayTime[0];
    }
    return newBar;   
}
于 2018-04-24T17:25:42.840 回答