Автоматическое тестирование советника перед добавлением в Маркет - страница 2

 
Stanislav Korotky:

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

Если верить профилированию, то с графическими объектами интерфейса получается супер медленно, все самые большие тормоза создаёт графика. Но на практике советник без графики у меня работал не на много быстрее. Гораздо больше замедляли работу другие функции (в силу своей сложности), которые добавлялись в процессе разработки. Но сейчас профилировщик говорит, что графика виновата, то есть, совсем другое. Поэтому, даже не знаю, что и делать, собственно. Скорее всего придётся перебрать весь код по винтикам. Но я совершенно без понятия что это может дать... А если ничего не поможет и сложный алгоритм нельзя оптимизировать, то что выбрасывать рабочий советник, на разработку которого ушел год...

P.S.: Если, валидация, это тестирование в тестере советников без визуализации, тогда главный параметр, это максимальная задержка в обработчике OnTick. Но, наверно, никто не знает, какая она должна быть, для прохождения валидации. Возможно, нужны ещё какие то дополнительные параметры и т.п. Но судя по отзывам программистов, которые как и я столкнулись с данной проблемой, их никто не знает.

 
Mihail Matkovskij:
В общем, ерунда всё это. Убрал все функции, где вызывается ChartRedraw() и остальные функции, связанные с визуальным отображением в тестере, но результат не изменился, советник по прежнему не проходит валидацию. В результате, что можно сделать я вообще без понятия. Обычное профилирование проходит на графике, а валидация в тестере, судя по всему... В общем, не знаю что и делать.

Только сегодня разработчики включили в отчет автовалидатора лог тестирования. Попробуйте ещё раз, может быть лог подскажет Вам решение.

Есть ещё мысль: возможно, при каких-то условиях тестирования какая-то функция начинает зацикливаться. Как я убедился на своем опыте, при автовалидации используют такие нереальные тесты, как тест при отсутствии котировок, тест при огромном депозите (у меня ставили больше $1 млрд). К сожалению, эти условия они пока держат в секрете, о них можно только догадываться, методом тыка пытаясь смоделировать найденную ими ошибку.

 
Vadim Zotov:

Только сегодня разработчики включили в отчет автовалидатора лог тестирования. Попробуйте ещё раз, может быть лог подскажет Вам решение.

Есть ещё мысль: возможно, при каких-то условиях тестирования какая-то функция начинает зацикливаться. Как я убедился на своем опыте, при автовалидации используют такие нереальные тесты, как тест при отсутствии котировок, тест при огромном депозите (у меня ставили больше $1 млрд). К сожалению, эти условия они пока держат в секрете, о них можно только догадываться, методом тыка пытаясь смоделировать найденную ими ошибку.

При отсутствии истории котировок на чарте. Одна свеча и всё ))) Тест с миллиарда до лампочки, должно упереться в максимальный лот, а вот максимально возможное открытие позиций и ордеров, а у некоторых это 10 штук, тут важно не уйти в ошибку.
 
Vladimir Zubov:
При отсутствии истории котировок на чарте. Одна свеча и всё ))) Тест с миллиарда до лампочки, должно упереться в максимальный лот, а вот максимально возможное открытие позиций и ордеров, а у некоторых это 10 штук, тут важно не уйти в ошибку.
Немного уточню, я некорректно выразился: нужно было сказать "при недостатке котировок" (когда история котировок не загружена). А в тест с миллиарда я "уперся" лично сам, при попытке ставить более максимального лота для брокера тестер генерит ошибку. Поэтому проверка на максимум очень актуальна.
 
Реально, нужно избегать все ситуации и тут MQ прав, если нет котировок и одна свеча, а вы просите 100 то MQ Прав)))
 
глоб переменные и их перебор на каждом тике могут очень сильно тормозить, а также чтение/запись/перезапись итд файла