Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий
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
Сделал тест эксперт простой:
Порядок поиска ошибки:
- Загружаем символ, который ранее не использовался (нет истории)
- Запускаем на графике эксперта
- Смотрим журнал:
- Эксперт показывает, что при CopyBuffer он сначала выходит (нет баров)
- Потом эксперт получает какое то непонятное значение буфера ().
- Потом снова засыпает и снова все сначала.
постоянно одно и то же: Копирует один бар, и выходит с функции.
Если после этого перезапустить терминал. То ВСЕ ОК!!! странно
ладно...
Нет не ОК, запускаю пару, которую не использую и опять тормоза.
Понятно, что терминал запрашивает загрузку истории.
Но зависает сама функция 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 времени
Какой сервер?
На MetaQuotes-Demo не воспроизводится. В визуализаторе первый бар EURUSD,M5 - 2020.02.03 00:00
Какой сервер?
На MetaQuotes-Demo не воспроизводится. В визуализаторе первый бар EURUSD,M5 - 2020.02.03 00:00
Здравствуйте.
Сервер Roboforex Demo Hedge Визуализация начинаются с 3 февраля 00.05 и без визуализации начинается с 3 февраля 00.00
проверил на MetaQuotes - все ок. И визуализация и без начинаются с 3 февраля 00.00
количество сделок сходится.
Разница в количестве тиков.
Здравствуйте.
Сервер Roboforex Demo Hedge Визуализация начинаются с 3 февраля 00.05 и без визуализации начинается с 3 февраля 00.00
проверил на MetaQuotes - все ок. И визуализация и без начинаются с 3 февраля 00.00
количество сделок сходится.
Разница в количестве тиков.
странно.
провел тесты еще раз.
котировки начинаются с 3 февраля 00,05 первый бар...
Но советник как -то словил сигнал на 00.00 баре.
Ищу...
Если не торговать (выборка сигналов) с 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
пока не нашел связи. скорее всего просто не загружается бар с сервера у этого брокера..
после смена с разных серверов - баг пропал... надо думать..
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования
Здравствуйте.
Попытаюсь изложить это в отдельную тему, чтобы сообщения не терялись!
Позже добавлю то, что я писал на форуме месяц назад на живом графике.
Итак суть:
В начале заметил ошибку и тормоза при обращении к старшим ТФ D1 и W1 из советника, который установлен например на М5.
Сейчас я обнаружил такую же ошибку в тестере стратегий на другом эксперте (который никак не пересекается с предыдущем)
Мои действия:
Начало ошибки:
Разные результаты теста при тестировании с Визуализацией и без визуализации!
Тестер настройки:
Ошибка:
Но если выбрать любой индикатор с ТФ D1 и выше, то результаты получаются разные.
Выбираем H4
В режиме визуализации и с ТФ H4:
Без визуализации и с ТФ H4:
А теперь выбираем D1
В режиме визуализации и с ТФ D1 :
Без визуализации и с ТФ D1 :
Как видно по картинкам, Если сигнал брать с ТФ D1 и выше - то совершенно другие сигналы получает советник в режиме визуализации и без.
Я пытался прошерстить код, найти свою ошибку.
Но такая же проблема с CopyRates на живом графике!!!! именно на этих ТФ происходит зависание! при копировании данных .
Такой ошибки не было ранее, или до конца года. Может она возникла с каким то обновлением или это потому, что начало года и какие то тормоза при копировании данных .
Просьба , если у кого то есть такие же эксперты, чтобы проверили свои.