存在しないデータ部分を計算しない

データ開始部分はデータが無いため、インディケーターの表示がおかしい。

int start()
  {
   int   limit          =  Bars-IndicatorCounted();
   
   for(int i=limit-1; 0<=i; i--){
      Buf[i] = 0;      
      for(int j=0; j<MA_Period; j++){
         Buf[i]  = Buf[i] + Close[i+j];
      }      
      Buf[i]  =  Buf[i]/MA_Period;
   }
   
   for(i=limit-1; 0<=i; i--){
      Buf1[i] = 0;
      for(j=0; j<MA_Period1 ; j++){
         Buf1[i] = Buf1[i] + Close[i+j];
      }
      Buf1[i] = Buf1[i]/MA_Period1;
   }

   return(0);
  }

既に計算された指標バーがない場合は、それを計算から取り除く処理を施す。

int start()
  {
   int   limit          =  Bars-IndicatorCounted();
   //既に計算された指標がない場合は、 補正する。
   if(limit == Bars){
      limit = limit - (MA_Period -1);
   }
   for(int i=limit-1; 0<=i; i--){
      Buf[i] = 0;      
      for(int j=0; j<MA_Period; j++){
         Buf[i]  = Buf[i] + Close[i+j];
      }      
      Buf[i]  =  Buf[i]/MA_Period;
   }
   
   limit          =  Bars-IndicatorCounted();
   //既に計算された指標がない場合は、 補正する。
   if(limit == Bars){
      limit = limit - (MA_Period1 -1);
   }
   for(i=limit-1; 0<=i; i--){
      Buf1[i] = 0;
      for(j=0; j<MA_Period1 ; j++){
         Buf1[i] = Buf1[i] + Close[i+j];
      }
      Buf1[i] = Buf1[i]/MA_Period1;
   }

   return(0);
  }