求大神赐教,指标运行运行一段时间后多次通知历史信号

 
 int start;
   string periodstr=Periodtostr(Period());
//---
   if(prev_calculated<=period_mabig)
     {
       for(int i=0;i<period_mabig;i++)
         {
           pinbarupBuffer[i]=0;
           pinbardownBuffer[i]=0;
           trendhtupBuffer[i]=0;
           trendhtdownBuffer[i]=0;
         }
       start=period_mabig;
     }
   else
      start=prev_calculated-1;
         
   //PrintFormat("masm_size:%d,mabig_size:%d,close_size:%d",ArraySize(masm),ArraySize(mabig),ArraySize(close));
//--- main loop
   for(int i=start; i<rates_total-1 && !IsStopped(); i++)

以上是OnCalculate函数里面准备主循环的部分,i最多循环到rates_total-2,就刚好是K线收线的一瞬间,下面满足信号条件就通知到手机和预警,问题是刚启动没问题,运行一段时间后,发现在还没收线的时候,之前历史通知过的信号突然又全部再预警和通知一遍,就搞得很无语,请大神赐教,原因可能是哪里的呢

 
在通知条件执行前,打印了循环的i、prev_calculated、rates_total,发现,在还没收线的时候就通知历史信号的时候,prev_calculated=0,所以现在问题好像找到了,解决办法也有了,就是再加一个pre_calculated!=0,但是原因还是不清楚
 

扫描网络

如上图,好像发现原因了,会自动扫描网络,导致类似于重新启动指标。另外看到论坛上其他大佬写的time[i]>notify_time,然后notify_time=time[i],这样也可以防止多次通知。


还有乱画的问题会不会也是扫描网络的原因还是因为历史数据没有加载出来,如下图,向上的箭头画的莫名其妙的,有点像是占用了mabuffer,跟mabuffer的值重合