профилировщик на исторических данных

 

Написал советник на Зигзаге. 

тест за 2 месяца длится 43 секунды. 

Подставляю другой зигзаг. Тест длится 10 секунд. 

При этом и в первом случае и во втором Функция вызова Зигзага не является самой затратной. 

Например функция отслеживания времени показывает загрузку в 30 %. 

А как тогда оценить затраты на Зигзаг ? 

 
Dmitiry Ananiev:

функция отслеживания времени показывает загрузку в 30 %.

Зачем она?

А как тогда оценить затраты на Зигзаг ?

Запустить профилировщик прямо на индикаторе.

ЗЫ

Профайлинг OnTick

Добавление еще одной строки

#define PROFILER_OnTick // Замеряет чистое время выполнения всех OnTick - немного замедляет общую работу
#include <TesterBenchmark.mqh>

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

TesterBenchmark
TesterBenchmark
  • голосов: 14
  • 2017.07.24
  • fxsaber
  • www.mql5.com
При написании разных версий кода может возникнуть необходимость измерения влияния их на общую производительность советника в тестере. Это позволяет не только понять, насколько оптимален написанный код по сравнению с другим, но и дает предпосылки к будущей быстрой оптимизации советника. Такой подход позволяет выявить "бутылочное горлышко" в...
 

функция отслеживания времени нужна для того чтоб торговать только ночью. Выглядит вот так.


bool TradeTime()
  {

   bool rez=false;
   datetime cur=TimeCurrent(dt);

// Print (dt.day_of_week,"    ", dt.hour);

   if(StartHour<EndHour)
     {
      if(((dt.hour==StartHour && dt.min>=StartMinute) || (dt.hour>StartHour)) && ((dt.hour==EndHour && dt.min<=EndMinute) || (dt.hour<EndHour)))
         rez=true;
     }

   if(StartHour>EndHour)
     {
      if((dt.hour==StartHour && dt.min>=StartMinute) || (dt.hour>StartHour) || (dt.hour==EndHour && dt.min<=EndMinute) || (dt.hour<EndHour))
         rez=true;
     }
   if(dt.day_of_week==5 && dt.hour>=EndHourTradeFriday) rez=false;
   if(dt.day_of_week<=1 && dt.hour<StartHourTradeMonday) rez=false;

   return rez;
  }
//+------------------------------------------------------------------+


Проблема не в ней. 

Как узнать на сколько тормозит стандартный зигзаг от нестандартного.  ПРИ этом скорость советника с нестандартным зигзагом возрастает в разы.

 
Dmitiry Ananiev:

Как узнать на сколько тормозит стандартный зигзаг от нестандартного.  ПРИ этом скорость советника с нестандартным зигзагом возрастает в разы.

Задали вопросы и тут же на него и ответили. А так рецепт прежний

 

Вообще лет 15 пишу советники и никогда не писал индикаторы

Вот этот Зигзаг https://www.mql5.com/ru/code/11206 меня вполне устраивает. 
Может кто встречал его для МТ5. Или помогите перевести его в в MQL5

Zigzag R
Zigzag R
  • голосов: 5
  • 2007.01.25
  • MetaQuotes Software Corp.
  • www.mql5.com
Этот вариант Zigzag'а является простой оптимизацией старого варианта Zigzag.mq4, к которому привыкли сотни тысяч пользователей MetaTrader еще с версии МТ3 (язык MQL2). Использование индикатора без оптимизации делало сложным и долгим тестирование советников, использующих значения пользовательского индикатора Zigzag. Оптимизированный вариант...
 
https://www.mql5.com/ru/code/263
Профессиональный ZigZag
Профессиональный ZigZag
  • голосов: 24
  • 2011.01.14
  • Aleksandr Chugunov
  • www.mql5.com
Внимание! Данный индикатор создан на основе одной из версий кода Просто ZZ (зиг-заг) и публикуется здесь с разрешения автора PPC (я принимал непосредственное участие в тестировании и указание на ошибки в алгоритме). Данный код является переписанным один к одному версии индикатора под платформу MetaTrader 4. Что такое ЗигЗаг? С моей точки...
 
fxsaber:
https://www.mql5.com/ru/code/263

ну в принципе похоже но немного не так. Все равно спасибо огромное. 

 

Извиняюсь, что не в свою тему пишу, но так-же возникает вопрос профилирования

Почему пустая функция выедает основные ресурсы?

Что нужно сделать, чтобы это устранить?


 
Vitaly Muzichenko:

Извиняюсь, что не в свою тему пишу, но так-же возникает вопрос профилирования

Почему пустая функция выедает основные ресурсы?

Что нужно сделать, чтобы это устранить?


Мне кажется, что она и должна пожирать все ресурсы. Ведь она и есть чаще всех вызываемая.

 
Alexey Viktorov:

Мне кажется, что она и должна пожирать все ресурсы. Ведь она и есть чаще всех вызываемая.

И убить её нельзя, то есть в индикаторе она должна быть обязательно?

 
Vitaly Muzichenko:

И убить её нельзя, то есть в индикаторе она должна быть обязательно?

А зачем? Может это проблема профилировщика? Не верю я ему.

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