Автоматическая проверка продуктов в Маркете (вопросы и предложения) - страница 6

 
Andrey Khatimlianskii:

Да, действительно, забыл про "@global_initializations".

Получается, само рисование баров и индикаторных буферов занимает столько времени?

А если скомпилировать в релиз и запустить визуализатор за тот же промежуток, промотав сразу в конец ("пропустить до.."), сколько займет времени?

Ну, и сколько? 

 
Prostocar:
Здравствуйте у меня в терминале исчез маркет не могу установить советников и индикаторы из маркета переустановка терминала не помогла так же не обновляются ранее купленые продукты на маркете  кто знает как решить проблему 

Вы так и не ответили на вопрос:

Проверить это можно в терминале, в окне Инструменты, во вкладке "Журнал".


Второй вопрос: к какому серверу Вы подключаетесь? Попробуйте подключиться к MetaQuotes-Demo.

 
MetaQuotes Software Corp.:

Логи с автовалидатора показали, что тестирование на M1 не может пройти месячный интервал за час.

В то время как на H1 тот же индикатор проходит тест за пару минут.

Ищите причину в своем коде.

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

При обработке первого события OnCalculate индикатор пытается подгрузить историю тиков за последний день, пробегаясь побарово функцией CopyTicksRange. Если каждый бар получает хоть сколько-нибудь тиков, полученная история отрисовывается и далее идет обработка тиков онлайн. Если какие-то бары истории не получили ни одного тика, обработчик OnCalculate возвращает 0 и запускает 5-секундный таймер. На следующих событиях OnCalculate индикатор продолжает пытаться загрузить историю тиков. В обработчике OnTimer, таймер останавливается, и если за 5 прошедших секунд все вызовы OnCalculate не смогли подгрузить историю, происходит запрос рефреша с помощью вызова ChartSetSymbolPeriod(0, NULL, 0).

Обращаю внимание, что все выполняется асинхронно, и никаких зависаний по логике нет. В худшем случае, если предположить, что база тиков почему-то вообще недоступна, получится серия рефрешей с периодом 5 секунд. Но индикатор при этом вообще не рассчитывается, т.к. данных нет. Влияние рефрешей было исследовано, его нет - см. замечание ниже. 

Этот код работает нормально у меня в онлайне на разных серверах, разных символах/таймфреймах и в тестере.

Этот же код яко-бы где-то зависает в автовалидаторе. Методом тыка (чего по-хорошему не должно быть при наличии нормального фидбека, логов и пр.) я обнаружил следующее.

Если закомментировать получение дневной истории тиков, индикатор проходит автовалидацию нормально.

Поскольку факторов запроса истории много, я не могу сказать, что именно и в каком сочетании "подвешивает" автовалидатор:

  • CopyTicksRange в отсутствии исторических тиков (хотя как их может не быть? но даже если их нет, индикатор не рассчитывается, сразу возвращает управление среде, онлайн тики продолжают свободно "тикать", я эмулировал у себя такую ситуацию - зависаний нет);
  • таймер;
  • ChartSetSymbolPeriod (в качестве стресс-теста я запускал индикатор с данным рефрешем в экстремальном режиме (на каждом тике), и это не приводит к какому-либо замедлению и заметной нагрузке на CPU, этот запрос тоже асинхронный);
  • я добавил счетчик неудачных рефрешей, чтобы останавливать их после заданного числа попыток (5), но это не влияет на успех.

Если рефреш запрашивается из обработчика OnTimer - автовалидация не проходит. Если рефреш перенести в OnCalculate - автовалидация проходит. Таким образом, есть косвенные признаки того, что именно вызов ChartSetSymbolPeriod из OnTimer дает негативный эффект. Я специально запускал такую комбинацию в тестере - никаких проблем. Очевидно, что автовалидатор отличается от доступного публично тестера.

Поскольку выявленные условия прохождения валидации не особо ясны (как минимум странны) и требуют искусственного усложнения кода методом тыка, они неприемлемы для релизного продукта.

 
Добрый день! Прошу помощи, при автовалидации выдает ошибку  об отсутствии индикатора, индикатор через ресус задан, на других терминалах скомпилированный файл работает без проблем как в тесте так и на реале. В чем может быть ошибка?
Файлы:
2yr38jvml4.png  32 kb
 
RODION SLOTIN:
Добрый день! Прошу помощи, при автовалидации выдает ошибку  об отсутствии индикатора, индикатор через ресус задан, на других терминалах скомпилированный файл работает без проблем как в тесте так и на реале. В чем может быть ошибка?

Попробуйте не использовать двойные расширения и тире. Это просто навскидку.

 
RODION SLOTIN:


Подскажите пожалуйста, где именно?

#resource          "\\Indicators\\guru.ex4"

double SigUp= iCustom(Symbol(),0,"\\Experts\\SnowyOwl.v1-1.eng.ex4::Indicators\\guru.ex4",Sensitivity,PopUp_Alert,5,0);


Надо так писать (пример):

#resource "\\Indicators\\trend_channel.ex4"

iCustom(Symbol(),0,"::Indicators\\trend_channel.ex4",kstd,bars,shift,0,bars);

а у Вас какая-то глупость написана

 
Там еще почему-то и папка Libraries в логе указана. Почему так? Евгений правильно написал про обращение к ресурсу. Так должно работать локально (если все папки по-умолчанию, MQL4/Experts, MQL4/Indicators). Когда почините локальный запуск, то скорее всего, сработает и в автовалидаторе.
 

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

Пытаюсь загрузить свой продукт на Маркет. Автоматическая валидация выдает следующую ошибку:

test on EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Однако этого не может быть. Я выкладываю VWAP, где мышкой двигается точка старта. Компиляцию скрипт проходит без ошибок и все прекрасно работает. Возможно автоматическая валидация не может взаимодействовать со скриптами, где надо выбирать точку старта?

Что еще может быть причиной? В индикаторе есть выбор - считать с учетом объемов или без. ПО умолчанию стоит "без", но, возможно, валидатор пробегает все возможные параметры и спотыкается на расчете с объемами на валютных парах. Что делать-то?

 
Anton Polkovnikov:

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

Пытаюсь загрузить свой продукт на Маркет. Автоматическая валидация выдает следующую ошибку:

test on EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Однако этого не может быть. Я выкладываю VWAP, где мышкой двигается точка старта. Компиляцию скрипт проходит без ошибок и все прекрасно работает. Возможно автоматическая валидация не может взаимодействовать со скриптами, где надо выбирать точку старта?

Что еще может быть причиной? В индикаторе есть выбор - считать с учетом объемов или без. ПО умолчанию стоит "без", но, возможно, валидатор пробегает все возможные параметры и спотыкается на расчете с объемами на валютных парах. Что делать-то?

Попытка импорта скомпилированных файлов (даже EX4/EX5) и DLL

Программы, распространяемые через Маркет, должны быть гарантированно безопасны для пользователей. Поэтому любые попытки использования DLL или функций из скомпилированных файлов EX4/EX5 считаются ошибкой. Такие продукты не будут опубликованы на Маркете.

Если вашей программе необходимо использовать дополнительные индикаторы, которых нет в поставке, используйте Ресурсы.


Обращение к пользовательским индикаторам через iCustom()

Если для работы вашей программы необходимо обращение к данным пользовательского индикатора, то вам необходимо поместить все нужные индикаторы в Ресурсы. Продукты из Маркета должны быть готовыми к работе в любом неподготовленном окружении, поэтому они должны содержать всё необходимое  в своем EX4/EX5 файле. Рекомендуемые по теме статьи:


https://www.mql5.com/ru/articles/2555#dll_and_libraries_prohibited

 
Anton Polkovnikov:

test on EURUSD,H1 (netting) 2019.05.01 00:00:30 array out of range in 'Anchored VWAP with no Volume.mq5' (387,30) Однако этого не может быть. 

Выход за пределы массива в строке 387 символ 30. Это же написано. Надо массив проверять.

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