Аналог iBarShift - страница 17

 
Nikolai Semko:

Оказалось очень много нюансов. 

Если бы знал, насколько это будет заморочисто, не ввязывался бы )))

Этот вариант должен работать правильно.
Если кто-то обнаружит некорректную работу, то буду благодарен, если сообщит о проблеме.


Отлично!

Спасибо!

Встроил, пока всё кажется хорошо, единственно непонятки есть с рваными графиками(с текущего ТФ ищем H1), но я решил не разбираться, почему есть расхождение между другой версией (может там не верный расчет)...

//+------------------------------------------------------------------+ 
//| Получим iBarShift для заданного номера бара                      | +++
//+------------------------------------------------------------------+    
int iBarShift(const string Symb,const ENUM_TIMEFRAMES TimeFrame,datetime time,const bool Exact=false)
  {
   static int Res=-1;
   static string LastSymb=NULL;
   static ENUM_TIMEFRAMES LastTimeFrame=0;
   static datetime LastTime=0;
   static bool LastExact=false;
   static int PerSec=::PeriodSeconds(LastTimeFrame);
   
   if (LastTimeFrame!=TimeFrame) PerSec=::PeriodSeconds(TimeFrame);
   time-=time%PerSec;

   if((time!=LastTime) || (Symb!=LastSymb) || (TimeFrame!=LastTimeFrame) || (Exact!=LastExact))
     {
      Res=::Bars(Symb,TimeFrame,time,UINT_MAX)-1;
      if(Res<0) Res=0;

      LastTime = time;
      LastSymb = Symb;
      LastTimeFrame=TimeFrame;
      LastExact=Exact;
     }

   return(Res);
  }  

Но на недельках отработал явно последний вариант лучше!

 
Aleksey Vyazmikin:

Отлично!

Спасибо!

Встроил, пока всё кажется хорошо, единственно непонятки есть с рваными графиками(с текущего ТФ ищем H1), но я решил не разбираться, почему есть расхождение между другой версией (может там не верный расчет)...

Но на недельках отработал явно последний вариант лучше!

эту версию iBarShift в вашем последнем сообщении(тоже моя) лучше забыть. Она имеет ряд косяков. Долго объяснять.

используйте этот вариант.

 
Nikolai Semko:

эту версию iBarShift в вашем последнем сообщении(тоже моя) лучше забыть. Она имеет ряд косяков. Долго объяснять.

используйте этот вариант,  но только с этим дополнением.

Хорошо.