Баг MQL5 при работе c доступом к таймсериям iClose/iOpen и т.д. - страница 6

 

Я таки словил зависание iTime на PERIOD_M1.


Моя система:

2018.11.15 10:03:35.115 Terminal        MetaTrader 5 x64 build 1944 started (MetaQuotes Software Corp.)
2018.11.15 10:03:35.118 Terminal        Windows 10 (build 17134) x64, IE 11, UAC, Intel Core i3-3120M  @ 2.50GHz, Memory: 4141 / 8077 Mb, Disk: 154 / 415 Gb, GMT+2
2018.11.15 10:03:35.118 Terminal        C:\Users\barab\AppData\Roaming\MetaQuotes\Terminal\D0E8209F77C8CF37AD8BF550E51FF075

запускается обычно, никаких Portable.

На AUDUSD, M5 запустил советника "Test CopyTime.mq5" в  10:08:20

2018.11.15 10:08:20.159 Experts expert Test CopyTime (AUDUSD,Daily) loaded successfully

Код советника

//+------------------------------------------------------------------+
//|                                                Test CopyTime.mq5 |
//|                              Copyright © 2018, Vladimir Karputov |
//|                                           http://wmua.ru/slesar/ |
//+------------------------------------------------------------------+
#property copyright "Copyright © 2018, Vladimir Karputov"
#property link      "http://wmua.ru/slesar/"
#property version   "1.00"
//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit()
  {
//---

//---
   return(INIT_SUCCEEDED);
  }
//+------------------------------------------------------------------+
//| Expert deinitialization function                                 |
//+------------------------------------------------------------------+
void OnDeinit(const int reason)
  {
//---

  }
//+------------------------------------------------------------------+
//| Expert tick function                                             |
//+------------------------------------------------------------------+
void OnTick()
  {
   datetime CM1_T[1];
   datetime CM2_T[1];
   CopyTime(_Symbol,PERIOD_M1,0,1,CM1_T);
   CopyTime(_Symbol,PERIOD_CURRENT,0,1,CM2_T);
   Comment("CopyTime PERIOD_CURRENT: "+TimeToString(CM2_T[0],TIME_DATE|TIME_SECONDS)+"\n"+
           "CopyTime PERIOD_M1: "+TimeToString(CM1_T[0],TIME_DATE|TIME_SECONDS));
  }
//+------------------------------------------------------------------+

Затем в 

2018.11.15 10:27:45.583 Network '10169544': connection to MetaQuotes-Demo lost

принудительно разорвал соединение интернет (роутер выключил)


После восстановления соединения в 

2018.11.15 10:32:58.823 Network '10169544': authorized on MetaQuotes-Demo through Access Point EU 2 (ping: 50.64 ms)

код

CopyTime(_Symbol,PERIOD_M1,0,1,CM1_T)

перестал выдавать текущее время открытия бара на M1, а всё время выдаёт последнее время перед разрывом связи.


2018.11.15 10:08:20.159 Experts expert Test CopyTime (AUDUSD,Daily) loaded successfully
2018.11.15 10:27:45.583 Network '10169544': connection to MetaQuotes-Demo lost
2018.11.15 10:32:58.823 Network '10169544': authorized on MetaQuotes-Demo through Access Point EU 2 (ping: 50.64 ms)
2018.11.15 10:32:58.823 Network '10169544': previous successful authorization performed from 178.165.123.77 on 2018.11.15 10:03:38
2018.11.15 10:32:58.900 Network '10169544': terminal synchronized with MetaQuotes Software Corp.
2018.11.15 10:32:58.900 Network '10169544': trading has been enabled - hedging mode
2018.11.15 10:33:00.653 Network '10169544': scanning network for access points
2018.11.15 10:33:19.062 Network '10169544': scanning network finished
2018.11.15 10:33:19.062 Network '10169544': auto connecting to a better access point with 95 % quality (previous: 88 %)
2018.11.15 10:33:19.062 Network '10169544': connection to MetaQuotes-Demo lost
2018.11.15 10:33:19.716 Network '10169544': authorized on MetaQuotes-Demo through Access Point EU 4 (ping: 65.57 ms)
2018.11.15 10:33:19.716 Network '10169544': previous successful authorization performed from 178.165.123.77 on 2018.11.15 10:32:58
2018.11.15 10:33:19.825 Network '10169544': terminal synchronized with MetaQuotes Software Corp.
2018.11.15 10:33:19.825 Network '10169544': trading has been enabled - hedging mode


Может дело в статичном массиве 

datetime CM1_T[1];

и нужно использовать динамический массив?


Добавлено: заменил CM1_T[1] на динамический CM1_T[]. После принудительного разрыва связи минуты на три, строка

CopyTime(_Symbol,PERIOD_M1,0,1,CM1_T)

выдаёт последнее известное время с M1 перед разрывом связи.

Файлы:
 
Vladimir Karputov:

Я таки словил зависание iTime на PERIOD_M1.

Моя система:

запускается обычно, никаких Portable.

На AUDUSD, M5 запустил советника "Test CopyTime.mq5" в  10:08:20

Код советника

Затем в 

принудительно разорвал соединение интернет (роутер выключил)

После восстановления соединения в 

код

перестал выдавать текущее время открытия бара на M1, а всё время выдаёт последнее время перед разрывом связи.

Может дело в статичном массиве 

и нужно использовать динамический массив?

Попробуйте поставить на М30, и получать данные так-же с М30. У меня именно так и замирает, что и показано в видео. Переключение таймфейма не помогает, только удаление индикатора, и последующая его установка.

 
Vitaly Muzichenko:

Попробуйте поставить на М30, и получать данные так-же с М30. У меня именно так и замирает, что и показано в видео. Переключение таймфейма не помогает, только удаление индикатора, и последующая его установка.

Подтверждаю, игры с перезагрузкой индикатора не помогают на 100%, скажем так из 3 раз наверное 1 раз удается полноценно перезапустить индикатор и конечно же, чтобы не гадать на кофейной гуще, проще выгрузить индикатор и повторно его загрузить на инструмент.

Но это ахтуг товарищи, о какой автоматизации торговли может идти речь при таких танцах с бубном.

 
Vladimir Karputov:

*** Может дело в статичном массиве ***

У меня динамические массивы, так как изначально написано что лучше использовать их при CopyХХХ, проблема не в типе массива.

 
Знаете, по работе, мне приходиться очень,очень много писать в службы технической поддержки разных компаний (Symantec, DeviceLock, Kaspersky, FortiNet, Xspider и т.д.), но еще ни разу не было, чтобы на описанную мной проблему(БАГ), мне самому же приходилось искать причины ее возникновения, мда.... Остается еще только самому написать фикс :)
 
Farkhat Guzairov:

... но к сожалению, на продукт MQ, было мной потрачено около 10 лет. 

еще лет через 10 всё будет работать как надо )))))))))))))))))))))

 
Похожая проблема была порядка полугода назад. Писал арбитражного робота, поэтому работал с большим списком символов одновременно. Так вот, зависают не все, некоторые продолжают обновляться, а часть (как правило значительно большая) замирает. Благо в роботе была защита от работы с устаревшими котировками, так что проблема была только в уменьшении активности. Помогало только повторное прицепление советника на график.
 
Будем воспроизводить и исправлять.
 
Renat Fatkhullin:
Будем воспроизводить и исправлять.

Как скоро можно ждать исправления?

 
Farkhat Guzairov:

Как скоро можно ждать исправления?

С заморозкой обновления чужого невидимого таймфрейма после реконнекта связи разобрались и исправили. Причина была в неправильных статусах кеша именно после реконнекта.

Бета версия 1946 доступна через Help -> Check Desktop Updates -> Latest Beta Version.

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