我是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!
语句。
我做了一些根本错误的事吗?或者,无论我设定的时间段是什么,有没有更有效的方式来听取烛台的开启?
答案 0 :(得分:1)
// --- 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;
}