Хочется понять что происходит

 
Хотелось бы начать обсуждение глюков работы тестера.
В сообщении - Глюк в Тестере на граффике М1 (Модель: все тики) https://forum.mql4.com/ru/7471 Попытка обсудить глюк. На мой взгляд. хотелось бы начать с очевидных глюков.

Вот такой у нас эксперт. Он ставит вертикальные линии на графике. На текущем графике.

int start()
  {
  
 
 LastUp=iFractals(Symbol(),Period(),MODE_UPPER,3);
 LastDTUp=iTime(Symbol(),Period(),3); 
   
 if (LastUp>0)
   {
    Print("Max"+LastUp);
   LastMAX=LastUp;
   k++;
   ObjectCreate("VertLine"+k,OBJ_VLINE,0,LastDTUp,0);
     LastUp=0;
  }
 
    return(0);
  }

Какой результат?

1. Моментально ставит вертикальные линии с 2000.00.13. Почему-то пропускает с 18.Frb.2000. Это видно на графике. Отмечены только iFractals он автоматически их ставит при запуске.

2. Резко замедляет скорость в 2003 .04. Дальше работает как черепаха. На мониторе загрузки процессора и памяти все OK.

Можно продолжить и дальше продолжить. Но может я что-то не-то делаю?





Как вообще что-то можно тестировать?. Хелп. =?
 
Какой кошмар... По моему, с такими знаниями делать столь сильные утверждения рановато.

По шагам:
  • Не забывайте включать галочку "Пересчитать", чтобы тестироваться по нужному периоду (по скриншоту видно, что ранее выставлялись ручные пределы дат)
  • Тестер принудительно пропускает первые 100 баров графика, чтобы не работать без истории. Поэтому нет линий в феврале. Вот выдержка из встроенной помощи терминала МетаТрейдер:



  • Используется потиковое моделирование, а это десятки миллионов ценовых тиков. На каждом фрактале выводится от 1000 до 1500 вертикальных линий (в H4 обычно объемы от 500 до 1500 тиков и на каждом тике выводится линия). В результате на график выводятся сотни тысяч (а если дождаться конца, то и миллионы!) вертикальных линий. Как влияют сотни тысяч (нажмите на Ctrl+B и посмотрите на список) графических объектов на скорость работы компьютера/терминала? Очень плохо влияют.



    Код надо писать аккуратнее и думать о ресурсах.

Все работает верно.

Как раз вчера Рашид Умаров (Rosh) написал очень интересную статью "Тестер в терминале MetaTrader 4: Это необходимо знать". Вообще рекомендую полностью перечитать весь раздел "Статьи" этого сайта - все детально разъясняется на русском языке.
 
Спасибо за ответ. Буду разбираться =).
 Отмечу, что тормоза действительно врзникают от вывода графических объектов. Но не от не от 10.тысяч как Вы сказали, а на 5000.
На тестировании следует убрать вывод гр.объектов?. 
Для всех объектов такие тормоза?  
 
Почему наличие этих объектов влияют на скорость тестирования все равно непойму =(. Наверное что-то в архетиктуре тестера  перемудрили=).


 Запускаю эксперта на M5. Может такая скорость и предполагается для тестирования. Но уж слишком медленно. =(
 Один день моделирует примерно 0.5 мин. Как можно тестирвать, что либо?
Я может что-то не то делаю? Советник пустой. в start() пусто.

--
Штирлец долго бился над задачей и не как не мог сделать, чтобы ответы сошлись .
 
"Я может что-то не то делаю?" - Очень здравая мысль.

Стоит задаться вопросом, а зачем вообще нужны графические объекты в твоём эксперте? Вернее даже КОМУ они нужны.
Правильно сделанному эксперту они не нужны вообще - ни при тестировании, ни при работе.
 
И куда тебе 5000 объектов на графике, D.Will? Сколько реальной информации ты извлекаешь из этого огромного количества?
 
По моему как раз при тестировании объекты и нужны. Если конечно речь идёт о тестировании стратегии, а не о подгонке. Разумеется, чрезмерное количество превращает их из источника информации в источник шума. Но, насколько я понимаю, до тех пор пока не нажата кнопка "показать график" операции с объектами мало отличаются от других операций и никакого специфически радикального воздействия на скорость оказывать не должны.
 
Mathemat:
И куда тебе 5000 объектов на графике, D.Will? Сколько реальной информации ты извлекаешь из этого огромного количества?


Согласен. Но на этапе тестирования. Необходимо.
 
lna01:
Но, насколько я понимаю, до тех пор пока не нажата кнопка "показать график" операции с объектами мало отличаются от других операций и никакого специфически радикального воздействия на скорость оказывать не должны.


Нет, всё-таки здесь я не совсем прав. Всё дело в строковых именах. То есть объекты, пока не приходит время их рисовать, должны относиться к тому же классу, что и глобальные переменные. То есть к тяжеловесам.

 
И всетаки не все так гладго. Как утверждают разработчики.

Колличество объектов выводимых скажем iFractals -какое на график, и на раюботу индикатора или советника несказываются.
Торомоза возничающие из-за наличии более 5000 объектов, говорят об архитектурных ошибках.

Еще одна неприятная особенность.

Мой эксперт работает на истории, все хорошо. Когда задаю временной интервал. Произвожу пересчет и запускаю тест, работает он очень медленно.

С чем связанно такое поведение?
 
D.Will писал (а):
Я может что-то не то делаю? 
T.e. вот эту гипотезу ты решил отмести как несостоятельную? Вот так вот сразу ты разглядел архитектурные ошибки. А то что iFractals рисует объекты только на некоторых барах, а ты создаешь новый объект на каждом тике, ты не заметил. Разницу между баром и тиком знаешь?
D.Will писал (а):
Мой эксперт работает на истории, все хорошо. Когда задаю временной интервал. Произвожу пересчет и запускаю тест, работает он очень медленно.
Вот это желательно перевести на русский - что значит "хорошо работает на истории", но не работает на "тесте". Прогон по истории - это и есть тест.


 
timbo:
D.Will писал (а):
Я может что-то не то делаю? 
T.e. вот эту гипотезу ты решил отмести как несостоятельную? Вот так вот сразу ты разглядел архитектурные ошибки. А то что iFractals рисует объекты только на некоторых барах, а ты создаешь новый объект на каждом тике, ты не заметил. Разницу между баром и тиком знаешь?
D.Will писал (а):
Мой эксперт работает на истории, все хорошо. Когда задаю временной интервал. Произвожу пересчет и запускаю тест, работает он очень медленно.
Вот это желательно перевести на русский - что значит "хорошо работает на истории", но не работает на "тесте". Прогон по истории - это и есть тест.





На истории работает нормально. Правельно себя ведет.Так  как и задуманно. В нужном месте ставит графический объекты, отрывает и закрывает ордера.  И  вообще не тормозит.

Как только я хочу проверить на заданном участке скажем 2006.1.21-2006. 2.10. Тормоза жуткие. Все работает очень медленно.

Да и проблема основная даже не в это.


Поясняю подробнее основную проблему.

Эксперт выдает другие значения на тестируемом интервале. Точнее  - никаких результатов. Те данные которые должны быть готовы по окончании одного тика равны 0.  

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

Но я думал, что  тестировани на всей истории, и при тестировании на  интервале, для эксперта это одно и тоже. 

Предположим сам эсперт написан криво, даже если и так, такого поведения не должно быть.


Спасибо. Если прокоментируете.
Причина обращения: