如何每天仅计算一次指标缓冲区mql4

问题描述

我有一个指示器,该指示器发出一个信号[Down Buffer] ...我希望每天只发出一个信号...像第一个信号发出一样,它在一天的剩余时间内不会显示任何信号!我已经用下面的代码进行了测试,现在根本无法绘制?

//--- indicator buffers
double Buffer1[];
int day = 0;

int OnInit()
{   
  ........................
}

int OnCalculate(......)
 {

 //--- main loop
 for(int i = limit-1; i >= 0; i--)
 { 
  
  //Indicator Buffer 1
  if( here goes my condition )
    {
     if( day != Day() )
     {
        Buffer1[i] = High[i] + iATR(NULL,PERIOD_CURRENT,14,i); //Set indicator value at Candlestick High + Average True Range
        day = Day();
     }
    }
  else
    {
     Buffer1[i] = EMPTY_VALUE;
    }
 }
 
 return(rates_total);
}

我的代码有什么问题?现在根本不显示任何信号...

注意:为了方便起见,我删除了一些代码...

解决方法

使用以下功能检查是否是新的一天。 如果是新的一天,则返回true;否则返回false。

bool IsNewDay(){
   static datetime prevDay = -1;
   if( iTime(_Symbol,PERIOD_D1,0) == prevDay ) return false;
   prevDay = iTime(_Symbol,0);
   return true;
}

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...