Смотри, как бесплатно скачать роботов
Ищи нас в Telegram!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Библиотеки

Benchmark - библиотека для MetaTrader 5

Просмотров:
1919
Рейтинг:
(14)
Опубликован:
2020.10.01 14:37
Обновлен:
2020.10.08 06:21
\MQL5\Scripts\ \MQL5\Include\fxsaber\Benchmark\
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Библиотека предназначена для быстрого и удобного измерения времени выполнения некоторых частей кода.


Исходный код.

int f1() { Sleep(100); return(1); }
int f2() { Sleep(200); return(2); }
int f3() { Sleep(300); return(3); }

int g()
{
  return((f1() + f2() + f3() == 6) ?
                       f1() * f2() : 0);
}

void OnStart()
{
  if (g() == 2)   
    Print(f3() == 3);

  Print(f1());
  Print(f2());
}

    Результат выполнения.

            true
            1
            2


    Пример измерения.

    Измерим некоторые части исходного кода выше.

    // #include <fxsaber\Benchmark\Microseconds.mqh> // https://www.mql5.com/ru/forum/282062/page28#comment_18584846
    #include <fxsaber\Benchmark\Benchmark.mqh> // Измерение времени выполнения функций/методов, выражений и частей кода.
    #define _B2(A) _B(A, 500) // Алертим все, что исполняется дольше 500 микросекунд.
    
    int f1() { Sleep(100); return(1); }
    int f2() { Sleep(200); return(2); }
    int f3() { Sleep(300); return(3); }
    
    int g()
    {
      return(_B2(f1() + f2() + f3() == 6) ?
                           _B2(f1() * f2()) : 0);
    }
    
    void OnStart()
    {
      if (_B2(g()) == 2)   
        Print(_B2(f3() == 3));
    
      _BV(
      Print(f1());
      Print(f2());, 150) // Алерт, если исполнение дольше 150 микросекунд.
    }


    Результат выполнения.

            Alert: Time[Test9.mq5 10 in g: f1()+f2()+f3()==6] = 646715 mсs.
            Alert: Time[Test9.mq5 11 in g: f1()*f2()] = 326081 mсs.
            Alert: Time[Test9.mq5 16 in OnStart: g()] = 973158 mсs.
            Alert: Time[Test9.mq5 17 in OnStart: f3()==3] = 326057 mсs.
            true
            1
            2
            Alert: Time[Test9.mq5 19: Print(f1());Print(f2());] = 327744 mсs.


    Видно, сколько и что выполнялось.


    Где использовать?

    Полезно при поиске узких мест производительности. Позволяет быстро вставить замер в интересуемые участки исходного кода. Выявить провалы производительности при длительной работе MQL-программ.

    OneSayStreet OneSayStreet

    Стратегия по двум индикаторам: MA и RVI

    OHLC and indicators to CSV Panel OHLC and indicators to CSV Panel

    Утилита: сохранение значений OHLC баров и нулевого буфера выбранного индикатора в csv файл

    Opened Positions Opened Positions

    Утилита: суммарная информация по позициям

    Exponential Weighted Moving Average Exponential Weighted Moving Average

    Exponential Weighted Moving Average - экспоненциально взвешенная скользящая средняя (EWMA).