iBarShift не корректная работа в визуальном режиме

 

Столкнулся с такой непоняткой.

В индикатор вставляю код

datetime D0=D'2000.01.01';
int start()
  {
      
      //определяем начальный бар
      Print(" D0 =",TimeToStr(D0));
      Nstat = iBarShift("EURUSD",PERIOD_M15,D0);
      Print(" Nstat = ",Nstat);
      Print(" iTime(Nstat) = ",TimeToStr(iTime(NULL,0,Nstat)));
      Print(" Время первого бара = ",TimeToStr(iTime(NULL,0,Bars-1)));
      
      Nstat = iBarShift("EURUSD",PERIOD_M5,D0);
      Print(" 'EURUSD' Nstat = ",Nstat);
      Nstat = iBarShift("EURUSD",PERIOD_M30,D0);
      Print(" 'EURUSD' Nstat = ",Nstat);
   
    ............
    ..............
  }
При прогоне в визуальном режиме получаем следующее



Тут же если просто кидаю на график, то все правильно.



Пробовал на 2-х разных терминалах, на разных билдах....

Ну, что это такое???
 
Вопрос - Вы после закачки данных по 2000 год перезапускали терминал?
 
Roger писал(а) >>
Вопрос - Вы после закачки данных по 2000 год перезапускали терминал?

Терминалы стоят очень давно. Получается, перезапускал неоднократно.

П.С. На разных терминалах время сбоя одинаковое 2010.05.06 21:11:56 Dserg_MA_Rev_v4.3_open EURUSD,M15: iTime(Nstat) = 2007.12.13 11:45
 

https://www.mql5.com/ru/forum/125756

Там не только это. Индюки в тестере неработают корректно. Лучше не рисковать.

 
Andrei01 писал(а) >>

https://www.mql5.com/ru/forum/125756

Там не только это. Индюки в тестере неработают корректно. Лучше не рисковать.



Вы предлагаете покинуть Форекс насовсем??? ))

 
lasso >>:


Вы предлагаете покинуть Форекс насовсем??? ))

А Вы только Форекс связываете с риском?

Вообщето и жить тоже рисковано... можно умереть. :))

 
Andrei01 писал(а) >>

А Вы только Форекс связываете с риском?

Вообщето и жить тоже рисковано... можно умереть. :))

Oper писал(а) >>
Стратегии ни одна не работают.И Лавина туда же...Как жить?
Ребяты,где тут у вас ветка для псессимистов?
Я пойду и поселюсь там.Открою обменный пункт обмена шила на мыло.
Назову..."Рога и копыта".Вход-по предварительной записи.
Demi писал(а) >>

есть такая - Классический анализ "не работает"

)))))))))) Тогда Вам сюда.

А вообще хочется получить инфу по сабжу. И улыбаться не хочется.... (

 
Прежде чем задавать вопрос, неплохо бы ответ на него поискать по форуму и в документации.
 
gip писал(а) >>
Прежде чем задавать вопрос, неплохо бы ответ на него поискать по форуму и в документации.

Согласен с Вами.
1) К документации обращаюсь в первую очередь. Итак:

1. iBarShift 

int iBarShift( string symbol, int timeframe, datetime time, bool exact=false) 

Поиск бара по времени. Функция возвращает смещение бара, которому принадлежит указанное время. 
Если для указанного времени бар отсутствует ("дыра" в истории), то функция возвращает, в зависимости от параметра exact, -1 
или смещение ближайшего бара.

2) Поискал. Минут 20-дцать потратил честно.
Форум большой - всё не перечитаешь.
Так, подскажите, если Вы в материале?
 
Доверять iBarShift так как это делаете вы нельзя. Если в истории есть дыра он вернет непонятно что, а дыр полно. Лучше перепроверить полученное значение.
А теперь вопрос: На каком промежутке истории вы запускаете тест? Я вот запустил на своем стандартном (с 2008 года), принт левой даты получил. Запустил с 1999.12.31, получил время последнего бара, а именно 1999.12.31 23:00, а после него извините, Новый Год)
 
datetime D0=D'2000.01.01';
int start()
  {
      
      //определяем начальный бар
      Print(" D0 =",TimeToStr(D0));
      Nstat = iBarShift("EURUSD",PERIOD_M15,D0,false);
      Print(" Nstat = ",Nstat);
      Print(" iTime(Nstat) = ",TimeToStr(iTime(NULL,0,Nstat)));
      Print(" Время первого бара = ",TimeToStr(iTime(NULL,0,Bars-1)));
      
      Nstat = iBarShift("EURUSD",PERIOD_M5,D0,false);
      Print(" 'EURUSD' Nstat = ",Nstat);
      Nstat = iBarShift("EURUSD",PERIOD_M30,D0,false);
      Print(" 'EURUSD' Nstat = ",Nstat);
   
    ............
    ..............
  }
еще если данный код используется в тестере не на евро то тоже будет возвращать непонятно что, а так как исправил (по идее) будет возвращать нужный бар если не попадет на дыру в истории, в этом случае вернет ближайший бар
Причина обращения: