Ошибка с загрузкой индикаторов с старших ТФ (D1 например)

 

Здравствуйте. 

Попытаюсь изложить это в отдельную тему, чтобы сообщения не терялись! 

Позже добавлю то, что я писал на форуме месяц назад на живом графике. 


Итак суть:

В начале заметил ошибку и тормоза при обращении к старшим ТФ D1 и W1 из советника, который установлен например на М5. 

Сейчас я обнаружил такую же ошибку в тестере стратегий на другом эксперте (который никак не пересекается с предыдущем)

Мои действия:

  1. Советник проверяет комплекс сигналов с 3 индикаторов (2 индикатора + 3 ТФ)
  2. Если эти индикаторы и ТФ берут данные с любых ТФ до D1 (все что ниже)! тогда ошибок нет! И тест с Визуализацией и без визуализации проходит одинаково! 
  3. Но если выбрать любой индикатор с  ТФ D1 и выше, то результаты получаются разные. 

Начало ошибки:

Разные результаты теста при тестировании с Визуализацией и без визуализации! 


Тестер настройки:

  1. Если эти индикаторы и ТФ берут данные с любых ТФ до D1 (все что ниже)! тогда ошибок нет! И тест с Визуализацией и без визуализации проходит одинаково! 

Ошибка:

Но если выбрать любой индикатор с  ТФ D1 и выше, то результаты получаются разные


Выбираем H4

В режиме визуализации и с ТФ H4:


Без визуализации и с ТФ H4:





А теперь выбираем D1 

В режиме визуализации и с ТФ D1 :


Без визуализации и с ТФ D1 :



Как видно по картинкам, Если сигнал брать с ТФ D1 и выше - то совершенно другие сигналы получает советник в режиме визуализации и без. 

Я пытался прошерстить код, найти свою ошибку. 

Но такая же проблема с CopyRates на живом графике!!!! именно на этих ТФ происходит зависание! при копировании данных .

Такой ошибки не было ранее, или до конца года. Может она возникла с каким то обновлением или это потому, что начало года и какие то тормоза при копировании данных .


Просьба , если у кого то есть такие же эксперты, чтобы проверили свои. 

 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Vladislav Andruschenko, 2020.01.29 11:15

Нашел такой неприятный момент. Билд 2305


История: 

Советник читает данные с 8 индикаторов и 8 ТФ (в том числе и D1 и W1).

Выводит данные в таблицу. 

Если работать с валютной парой, с которой работаешь давно, то все хорошо.

Если загрузить валютную пару, с которой не работал, то получается ошибка:


Советник пытается получить сигналы с D1 например, Но зависает, Зависает на CopyBuffer

 пытался поймать ошибку, но в журнале экспертов пусто - советник зависает и не выводит в журнал ничего.

А вот открыл логи терминала и обнаружил такую ошибку:

2020.01.29 11:59:35.915 History 'EURPLN' file opening or reading error [32]
2020.01.29 11:59:35.915 History 'EURPLN' file opening or reading error [5]
2020.01.29 11:59:35.915 History 'EURPLN' file opening or reading error [5]

 


Если отключить получение сигналов на D1 и W1 то все нормально. 



Заглянул в папку истории, там только файл 2020.hcc

Других файлов и Cache нет. 




попробовал данный скрипт: https://www.mql5.com/ru/docs/series/timeseries_access


зависает на W1 

2020.01.29 12:40:03.220  mt5 20200129 (EURPLN,H4)       ===============   1   ===============   2020.01.29 12:40:00
2020.01.29 12:40:03.220  mt5 20200129 (EURPLN,H4)       Loaded previously 
2020.01.29 12:40:03.220  mt5 20200129 (EURPLN,H4)       First date 2020.01.02 10:00:00 - 16031 bars
2020.01.29 12:40:03.220  mt5 20200129 (EURPLN,H4)       ===============   5   ===============   2020.01.29 12:40:00
2020.01.29 12:40:03.220  mt5 20200129 (EURPLN,H4)       Loaded previously 
2020.01.29 12:40:03.220  mt5 20200129 (EURPLN,H4)       First date 2020.01.02 10:00:00 - 3378 bars
2020.01.29 12:40:03.221  mt5 20200129 (EURPLN,H4)       ===============   15   ===============   2020.01.29 12:30:00
2020.01.29 12:40:03.221  mt5 20200129 (EURPLN,H4)       Loaded previously 
2020.01.29 12:40:03.221  mt5 20200129 (EURPLN,H4)       First date 2020.01.02 10:00:00 - 1135 bars
2020.01.29 12:40:03.222  mt5 20200129 (EURPLN,H4)       ===============   30   ===============   2020.01.29 12:30:00
2020.01.29 12:40:03.222  mt5 20200129 (EURPLN,H4)       Loaded previously 
2020.01.29 12:40:03.222  mt5 20200129 (EURPLN,H4)       First date 2020.01.02 10:00:00 - 568 bars
2020.01.29 12:40:03.223  mt5 20200129 (EURPLN,H4)       ===============   16385   ===============   2020.01.29 12:00:00
2020.01.29 12:40:03.223  mt5 20200129 (EURPLN,H4)       Loaded previously 
2020.01.29 12:40:03.223  mt5 20200129 (EURPLN,H4)       First date 2020.01.02 10:00:00 - 284 bars
2020.01.29 12:40:03.223  mt5 20200129 (EURPLN,H4)       ===============   16388   ===============   2020.01.29 12:00:00
2020.01.29 12:40:03.223  mt5 20200129 (EURPLN,H4)       Loaded previously 
2020.01.29 12:40:03.223  mt5 20200129 (EURPLN,H4)       First date 2020.01.02 08:00:00 - 78 bars
2020.01.29 12:40:03.224  mt5 20200129 (EURPLN,H4)       ===============   16408   ===============   2020.01.29 00:00:00
2020.01.29 12:40:03.224  mt5 20200129 (EURPLN,H4)       Loaded previously 
2020.01.29 12:40:03.224  mt5 20200129 (EURPLN,H4)       First date 2020.01.02 00:00:00 - 20 bars




Сделал тест эксперт простой:

Порядок поиска ошибки:


  1. Загружаем символ, который ранее не использовался (нет истории)
  2. Запускаем на графике эксперта
  3. Смотрим журнал:
  4. Эксперт показывает, что при CopyBuffer он сначала выходит (нет баров) 
  5. Потом эксперт получает какое то непонятное значение буфера ().
  6. Потом снова засыпает и снова все сначала.  


постоянно одно и то же: Копирует один бар, и выходит с функции. 



Если после этого перезапустить терминал. То ВСЕ ОК!!! странно

ладно... 


Нет не ОК, запускаю пару, которую не использую и опять тормоза. 




Понятно, что терминал запрашивает загрузку истории. 

Но зависает сама функция CopyBuffer, т.е. пока вся история не загрузится - все висит.

Глюки только на D1 и W1 

на других ТФ все ок. 

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

Скорее всего из-за того, что Машка с перидом 100 , а недели только за 2020 год и их мало. Но почему тогда не загружает 2019 год на лету? 

хотя написано , что:

При запросе данных из индикатора, если запрашиваемые таймсерии еще не построены или их необходимо загрузить с сервера, то функция сразу же вернет -1, но при этом сам процесс загрузки/построения будет инициирован.

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


 

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Ошибки, баги, вопросы

Vladislav Andruschenko, 2020.01.29 15:12


Спасибо за ответ.

  • 0. У меня антивирус DRWEB , потом я его отключал и пробовал
  • Есть также синхронизация Synology - отключал, то же самое 
  • Есть также GoodSync - тоже отключил
  • 1. Выставлял разное количество баров. 
  • 2. Свободного места 503 GB из 1.81 Tb (7200 WD RED )
  • Система Windows 7 64 на SSD (300 GB свободно из 500)
  • 3. Ошибки выше 

32 - The process cannot access the file because it is being used by another process.

5 - Access is denied.

Возникали только один раз, потом я описал выше, что проблема только при D1 и W1 другие ТФ функционируют нормально.


Но это скорее всего потому, что не может быть загружен файл 2019 hcc (потому что используется МАШКА 100) Нет, периоды менял, все то же самое



Попробовал еще раз, для наглядности вывожу данные на панель.

Посчиталось все, кроме W1 - и все. Висит. (от советника не зависит, я проверял)


Висит на момент CopyBuffer  - хотя при недоступности данных советник просто получает 0 и дальше работает, но в текущем случае - он просто не реагирует больше на события графика и не печатает ничего в журнал.  Никаких циклов нет. 


Потом, просто перегрузил терминал и все ок:


Все. ! Эта пара залилась историей. 




После перегрузки терминала все пары, по которым я собрал историю - работают без зависаний. 



Если в всех индикаторах поменять периоды на 1 или 2 (2 недели) то все ок на новой паре.

Как только период переваливает на историю прошлого года, то все. Опять зависает навсегда - перегрущил терминал все ок.


Если остановить эксперт (выгрузить с графика) то он отвисает и записывает в логи все принты, которые зависли после CopyBuffer. 


т.е. код: и Принт, который завис

//+------------------------------------------------------------------+
//| Expert initialization function                                   |
//+------------------------------------------------------------------+
int OnInit(void)
  {
//--- secceed
   return(INIT_SUCCEEDED);
  }
int h_ma1array=INVALID_HANDLE;
double ma1_buffer[];
//+------------------------------------------------------------------+
//| Expert new tick handling function                                |
//+------------------------------------------------------------------+
void OnTick(void)
  {
  for(int i=0;i<10;i++)
    {
     
   Print("==========================   "+i);
   h_ma1array=iMA(Symbol(),PERIOD_D1,100,0,0,0);
   Print("h_ma1array="+h_ma1array);
   if(h_ma1array==INVALID_HANDLE)
     {
      Print(" INVALID_HANDLE h_ma1array "+h_ma1array);
      h_ma1array=iMA(Symbol(),PERIOD_D1,100,0,0,0);
      return;
     }
   else
     {
     int buffers=0;
      if(buffers=CopyBuffer(h_ma1array,0,0,2,ma1_buffer)<2)
        {
        





























        
// Этот принт уже не выводится.......
         Print(__LINE__+" return "+" buffers="+buffers);       return;         }       if(!ArraySetAsSeries(ma1_buffer,true))         {          Print(__LINE__+" return");       return;         }      }    Print("ma1_buffer[1]="+ma1_buffer[1]+" ma1_buffer[0]="+ma1_buffer[0]);    }   } //+------------------------------------------------------------------+



В тестере при любом раскладе работает исправно и быстро:




Хотя количество файлов одинакорвое:

это в реале:


это в тестере




Этой ошибки не было в 2019 году, по крайней мере в конце 2019 года. 



Удалил всю историю - поставил на новую пару EURUSD - истории нет - запустил советник, он начал загружать данные - завис - история закачалась вплоть до 1999 года - советник отвис - все ок.


Наверное такое происходит с парами, по которым нет истории дальше 2019.... Но советник пытается запустить CopyBuffer индикатора с периодом, который дальше, чем есть история. Поэтому и зависает.

Хотя странно, что после спустя время - и перезагрузки терминала, все отвисает. 

Мысли вслух....  


 

Нашел.

Если начинать тест с 3 февраля!

То в режиме визуализации загружается первый бар в 00.05 


Тогда как в режиме без визуализации загружается первый бар в 00.00


на картинке внизу видно, что первый бар от 00.05 времени


 

ладно, какой то единичный случай.

с другими датами все ок.. ..... 

 
Vladislav Andruschenko:

Нашел.

Если начинать тест с 3 февраля!

То в режиме визуализации загружается первый бар в 00.05 


Тогда как в режиме без визуализации загружается первый бар в 00.00


на картинке внизу видно, что первый бар от 00.05 времени


Какой сервер?

На MetaQuotes-Demo не воспроизводится. В визуализаторе первый бар EURUSD,M5 - 2020.02.03 00:00

 
Slava:

Какой сервер?

На MetaQuotes-Demo не воспроизводится. В визуализаторе первый бар EURUSD,M5 - 2020.02.03 00:00


Здравствуйте.

Сервер Roboforex Demo Hedge Визуализация начинаются с 3 февраля 00.05 и без визуализации начинается с 3 февраля 00.00


проверил на MetaQuotes - все ок. И визуализация и без начинаются с 3 февраля 00.00

 количество сделок сходится.

Разница в количестве тиков. 




 
Vladislav Andruschenko:


Здравствуйте.

Сервер Roboforex Demo Hedge Визуализация начинаются с 3 февраля 00.05 и без визуализации начинается с 3 февраля 00.00


проверил на MetaQuotes - все ок. И визуализация и без начинаются с 3 февраля 00.00

 количество сделок сходится.

Разница в количестве тиков. 




Сбросьте в личку номер аккаунта и инвесторский пароль. Хочу посмотреть, что происходит
 

странно.

провел тесты еще раз. 

котировки начинаются с 3 февраля 00,05 первый бар...

Но советник как -то словил сигнал на 00.00 баре. 

Ищу...

 

@Slava

Если не торговать (выборка сигналов) с D1 (при этом тест на м5) то все ок!

Если торговать на D1 (при этом тест на м5) то с визуализацией тест начался с 00,05! а без визуализации 00,00 

Пытаюсь найти причину... 


И только если выбрать с 3 февраля по 26 февраля

[Tester]

Expert= 20200228.ex5

Symbol=EURUSD

Period=M5

Optimization=0

Model=4

FromDate=2020.02.03

ToDate=2020.02.26

ForwardMode=0

Deposit=1000

Currency=USD

ProfitInPips=0

Leverage=500

ExecutionMode=0

OptimizationCriterion=0

Visual=1

 

пока не нашел связи. скорее всего просто не загружается бар с сервера у этого брокера..

после смена с разных серверов - баг пропал... надо думать..