В каком порядке поступают все же бары, сначала М15 потом H1, или порядок неопределен? - страница 4

 
TheXpert >>:

Есть подозрение, что если написать Period() вместо соотв. нуля, информация тоже будет свежайшая.

int start()
   {
   for(int i=0;i<10;i++)
      {
      Print(TimeToStr(iTime(Symbol(),Period(),0),TIME_DATE|TIME_MINUTES));
      Sleep(60000);
      }
   }

Меня терзают смутные сомнения©, что при компиляции iTime() текущего тф и символа заменяется на Time[].

 
TheXpert >>:

А что это за интересный кусок кода?

Заглушка?

Есть подозрение, что если написать Period() вместо соотв. нуля, информация тоже будет свежайшая.

Конечно заглушка. Насчет Period() и iTime(): без разработчиков не обойтись?

 
Swan >>:

Меня терзают смутные сомнения©, что при компиляции iTime() текущего тф и символа заменяется на Time[].

Есть подозрения, что только когда 0 вместо периода.

Choomazik >>:

Конечно заглушка. Насчет Period() и iTime(): без разработчиков не обойтись?

Фух (облегченно). Swan уже написал тестовую прилагу. Надо только хорошо попросить его допроверить упомянутный мной случай.

 
TheXpert >>:

Есть подозрения, что только когда 0 вместо периода.

Фух (облегченно). Swan уже написал тестовую прилагу. Надо только хорошо попросить его допроверить упомянутный мной случай.

Вешаем советничег на M1, в цикле повторяемом 10 раз, каждые 60 секунд принтицо iTime(Symbol(),Period(),0), бары меняются, выводится одно значение.

 

Посмотрел код. Есть строка. ArrayCopyRates(array1, NULL, sPeriod); Где проверка на -1 ?

--- Не в тему ---

 
Choomazik писал(а) >>

Может, как решение, работать таки на М15 и самому формировать H1 из M15?

В тестере тестировать на М15 и обращаться к другому H1, а не наоборот, если я правильно понял.

 
Integer >>:

В тестере тестировать на М15 и обращаться к другому H1, а не наоборот, если я правильно понял.

ни то ни другое в реале хорошо не работает... в тестере все-равно как....

 
Choomazik писал(а) >>

ни то ни другое в реале хорошо не работает... в тестере все-равно как....

if((prevtime) == (Time[0]))
{
return (0);
}
prevtime = Time[0];

   double array1[][6];
   ArrayCopyRates(array1, NULL, sPeriod);
   
   if(array1[0][0] != iTime(NULL,0,i)) 
   {
      return (0);
   }
Возможна только одна попытка на бар. Это труба. Хотя бы местами поменять проверку соответствия веремени на двух таймфреймах и установку prevtime
 
Сначала надо потянуть данные с другого таймфрейма (Rates), проверить на ошибку 4066, потом проверить время, если две проверки пройдены (ошибка и время совпадает), то выполнять все остальное. Еще не помешает просто проверить значение цены с друго таймфрейма (iClose) и количество баров, у свежеустановленого терминала может быть вообще не загружено ни одного бара, или быть загружен 1 бар, и это может продолжаться долго, а ошибки 4066 при этом может не быть.
 
Integer >>:

Возможна только одна попытка на бар. Это труба. Хотя бы местами поменять проверку соответствия веремени на двух таймфреймах и установку prevtime

спасибо, но не в этом дело. Наводку на (возможное?) решение дали тут: 'Платная поддержка Метатрейдера разработчиком?'

Причина обращения: