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

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

Просмотров:
9316
Рейтинг:
(35)
Опубликован:
2019.07.19 22:21
Обновлен:
2024.10.29 15:14
MQL5 Фриланс Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Бывает, нужно советник прогнать на множестве символов. Для этого в MT5-тестере существует режим "Все символы, выбранные в окне Обзора рынка". Получается прогон одних и тех же настроек советника на разных символах.


Но иногда требуется сделать много различных запусков MT5-тестера. Данная библиотека позволяет это.


Возможности.

Можно задавать любое количество комбинаций символов, таймфреймов, интервалов. И проводить на них не только одиночные прогоны, но и оптимизацию, включая форвард.


Сценарии.

  • Исследование, на каких символах и/или интервалах и/или таймфреймах ТС показывает хорошие результаты.
  • Проведение оптимизации на последовательных интервалах с целью оценки автооптимизационных перспектив ТС.


Использование.

Настраиваем MT5-Тестер, как нам нужно.

На картинке показано, что будет проводиться Оптимизация полным перебором по реальным тикам на определенном интервале.


Создаем список нужных оптимизаций. Например, можно запустить советник из поставки к данной библиотеке.

С настройками, как на картинке, он запустит оптимизацию по всем символам из Обзора рынка, при этом для каждого символа сделает оптимизацию на M1 и M15 таймфреймах.


Результат будет таким


И теперь можно спокойно смотреть результаты оптимизации штатными средствами MT5-тестера.


Программирование.

Пример1.

Рассмотрим сначала совсем простой пример.

    #include <fxsaber\MultiTester\MultiTester.mqh> // Множественные прогоны/оптимизации в Тестере.
    
    // Эта функция отвечает за формирование списка заданий.
    void SetTesterSettings()
    {
      TesterSettings.Add("AUDCAD"); // Прогнать AUDCAD с настройками, что заданы в Тестере.
      
      TesterSettings.Add("EURUSD", PERIOD_H1); // Прогнать EURUSD H1 с настройками, что заданы в Тестере.
      
      TesterSettings.Add("GBPUSD", PERIOD_M6, D'2019.07.01', D'2019.09.01'); // Прогнать GBPUSD M6 на заданном интервале.
    }

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


    Пример2.

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

    #include <fxsaber\MultiTester\MultiTester.mqh> // Множественные прогоны/оптимизации в Тестере.
    
    sinput bool Period_M1 = false;         // Включить M1
    sinput bool Period_M5 = false;         // Включить M5
    sinput bool Period_M15 = false;        // Включить M15
    sinput bool  false; // Только кастомные символы
    
    // Эта функция отвечает за формирование списка заданий.
    void SetTesterSettings()
    {
      // Перебираем все символы из Обзора рынка.
      for (int i = SymbolsTotal(true) - 1; i >= 0; i--)
      {
        const string Name = SymbolName(i, true);
    
        if (!OnlyCustomSymbols || SymbolInfoInteger(Name, SYMBOL_CUSTOM))
        {
          if (Period_M1)
            TesterSettings.Add(Name, PERIOD_M1); // Если M1-задан, добавляем каждый символ с таким ТФ.
    
          if (Period_M5)
            TesterSettings.Add(Name, PERIOD_M5); // Если M1-задан, добавляем каждый символ с таким ТФ.
    
          if (Period_M15)
            TesterSettings.Add(Name, PERIOD_M15); // Если M15-задан, добавляем каждый символ с таким ТФ.
    
          if (!Period_M1 && !Period_M5 && !Period_M15) // Если ни один ТФ не задан, запустим на ТФ советника.
            TesterSettings.Add(Name);
        }
      }
    }

    Во втором примере формируется список заданий, исходя из отмеченных ТФ и символов в Обзоре рынка. Опять же смотрим комментарии в исходнике.


    Итак, все, что нужно, это прописать эту строку

    #include <fxsaber\MultiTester\MultiTester.mqh> // Множественные прогоны/оптимизации в Тестере.


    и написать только одну функцию, формирующую задания интуитивно понятным способом.

    // Эта функция отвечает за формирование списка заданий.
    void SetTesterSettings()


    Особенности.

    • Требует разрешения использования DLL. Вызываются несколько WinAPI-функций из user32.dll. Поэтому не подходит для Маркета, если не обходить.
    • В поставке в файле MTTester.mqh содержатся методы управления MT5-тестером, которые удобно использовать и в других проектах.
    • Есть возможность возобновления задания с прерванного места.

    Relative Vigor EA Relative Vigor EA

    Торговая стратегия по индикатору iRVI (Relative Vigor Index, RVI)

    Day iRSI Current iMA Day iRSI Current iMA

    Торговая стратегия на индикаторе iRSI (Relative Strength Index, RSI) с дневного таймфрейма и двух iMA (Moving Average, MA) с текущего таймфрейма

    Relative Vigor EA 2 Relative Vigor EA 2

    Модификация первой версии "Relative Vigor EA" - изменён блок генерации сигнала

    RSI Custom Smoothing 2 RSI Custom Smoothing 2

    Модификация первой версии "RSI Custom Smoothing"