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

 

Советник висит на H1, при приходе тика обновляются предопределенные переменные, запускается функция старт.

Если функция старт не закончила работу и пришел новый тик, то обращение к iTime(NULL,0,0) вернет значение на момент старта программы, а запрос с тф M15 новое.

Используйте RefreshRates() и проверку на ошибку 4066 и будет Вам щастье :)

 
Swan >>:Если функция старт не закончила работу и пришел новый тик, то обращение к iTime(NULL,0,0)

ы? ЕМНИП, iTime всегда возвращает наиболее свежую имеющуюся информацию.

 
Swan >>:

Советник висит на H1, при приходе тика обновляются предопределенные переменные, запускается функция старт.

Если функция старт не закончила работу и пришел новый тик, то обращение к iTime(NULL,0,0) вернет значение на момент старта программы, а запрос с тф M15 новое.

Используйте RefreshRates() и проверку на ошибку 4066 и будет Вам щастье :)


Спасибо за проблеск надежды! Почему только значение времени для М15 нулевого тика равно времени нулевого H1? В самом тике кроме времени хлам стоит?

 
Choomazik >>:

Советник в аттачменте, не влез в комментарий. Заранее спасибо!

Если Вы уверены, что проблема в этом, попробуйте

1.

заменить блок

   if(array1[0][0] != iTime(NULL,0,i)) 
   {
      return (0);
   }

на

if (iTime[NULL, 0, 0] != iTime[NULL, sPeriod, 0])
{
   return (0);
}

2.

Вставить RefreshRates() перед каждым ArrayCopyRates.

 
TheXpert >>:

ы? ЕМНИП, iTime всегда возвращает наиболее свежую имеющуюся информацию.

iTime конкретно не проверял, iClose(NULL,0,0) возвращает значение на момент старта программы или на время последнего RefreshRates().

 
TheXpert >>:

Если Вы уверены, что проблема в этом, попробуйте

1.

заменить блок

на

2.

Вставить RefreshRates() перед каждым ArrayCopyRates.


Большое спасибо!

 

С другого таймфрейма получаются последние данные, а с текущего устаревшие :)

RefreshRates() желательно перед всеми обращениями к текущему тф, Sleepов по коду многа

 
Swan >>:

С другого таймфрейма получаются последние данные, а с текущего устаревшие :)

RefreshRates() желательно перед всеми обращениями к текущему тф, Sleepов по коду многа

Спасибо за ревью!

 

Добавлю еще как меня ДЦ отшил:


I'm sorry we are not able to offer MetaQuotes support.
Can I suggest the online community ? http://www.mql4.net/


Вот так :)




 
Choomazik >>:

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

int MyLock(string lockName)
{
	return (0);
	return (Lock(lockName));
}

Заглушка?

Swan >>:

С другого таймфрейма получаются последние данные, а с текущего устаревшие :)

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

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