Скачать MetaTrader 5

Как обновить программно буфер индикатора после смены суток?

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Boris
3949
Boris  

Благодарю откликнувшихся! Модераторов прошу удалить этот неразрешимый вопрос!

Надеюсь, что сегодня в полночь всё получится! Как я не мог догадаться сразу! Действительно, "мысля приходит опосля"! ;))

Vitalie Postolache
12429
Vitalie Postolache  
код где? отсюда не видно...
Dmitry Fedoseev
45413
Dmitry Fedoseev  

В чем вопрос? Узнать что начались новые сутки, или пересчитать все заново? 

В любом случае лучше написать индикатр так, чтобы эти выкрутасы не требовались. 

Boris
3949
Boris  

Нашёл ошибку в стандартном индикаторе DailyPivotPoints, почему не соединялись линии при смене суток! 

    for(cnt=begin_bar; cnt>=0; cnt--)
    {
      yesterday_close=iClose(NULL,PERIOD_D1,cnt+1);
      today_open=iOpen(NULL,PERIOD_D1,cnt);
      yesterday_high=iHigh(NULL,PERIOD_D1,cnt+1);
      yesterday_low=iLow(NULL,PERIOD_D1,cnt+1);
      P = (yesterday_high+yesterday_low+yesterday_close+today_open)/4;//
      switch(ExtFormula)
      {
        case 1 :
          R = P + P - yesterday_low;
          S = P + P - yesterday_high;
          break;
        case 2 :
          R = P + yesterday_high - yesterday_low;
          S = P - yesterday_high + yesterday_low;
          break;
        case 3 :
          R = P + P - yesterday_low - yesterday_low + yesterday_high;
          S = P + P - yesterday_high - yesterday_high + yesterday_low;        
      }
      if(ExtDraw==true)
      {
        first_bar=iBarShift(NULL,0,iTime(NULL,PERIOD_D1,cnt)); //-1;            // эти минусы 1 не дают соединиться линиям-
        if(cnt>0) last_bar=iBarShift(NULL,0,iTime(NULL,PERIOD_D1,cnt-1)); //-1; // уровням, т.к. в 0:00:00 никогда нет тика!
        else last_bar=0;
        while(first_bar>=last_bar)
        {
          if(first_bar==last_bar && last_bar>0) break;
          if(ExtFormula==0) ExtMapBuffer1[first_bar]=P;
          else
          {
            ExtMapBuffer1[first_bar]=R;
            ExtMapBuffer2[first_bar]=S;
          }
          first_bar--;
    } } }
    P = NormalizeDouble((yesterday_high + yesterday_low + yesterday_close)/3,Digits);
 

 

Учимся на своих ошибках и на чужих!

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий