Библиотеки: MultiTester - страница 22

 
Сам и отвечаю на свой вопрос: mqh-файлы не нужно отдельно компелировать. А вы тотоже начали искать, правда-же? Всё работает. Спасибо.
 

Когда просматриваете результаты Оптимизации, то бывает нравятся какие-то одиночные проходы и хочется о них быстро получить какую-то полезную информацию, чтобы потом как-то использовать ее.

Для меня оказался очень удобным такой способ.

#define private public
  #include <fxsaber\MultiTester\MTTester.mqh>
#undef private

void OnDeinit( const int Reason )
{
  if (!MQLInfoInteger(MQL_OPTIMIZATION) && MQLInfoInteger(MQL_TESTER))
  {
    const datetime EndTime = TimeCurrent() - TimeCurrent() % (24 * 3600) + 24 * 3600;
        
    const string Str =          TimeToString(EndTime, TIME_DATE) + ": " +
                                DoubleToString(TesterStatistics(STAT_PROFIT), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_TRADES), 0) + ", " +          
                                DoubleToString(TesterStatistics(STAT_PROFIT_FACTOR), 2) + ", " +          
                                DoubleToString(TesterStatistics(STAT_EXPECTED_PAYOFF), 2) + ", Fit = " +          
                                DoubleToString(TesterStatistics(STAT_CUSTOM_ONTESTER), 2) + "\n";

    MTTESTER::SetClipboard(_Symbol + " " + Str); // Поместили строку одиночного прохода в буфер обмена.
  }

После одиночного прохода вся нужная инфа в кратком виде доступна в буфере обмена в виде строки. Вставляю ее через CTRL+V туда, где удобнее сейчас.

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


ЗЫ Строку формируете сами, конечно. Выше - только пример. Главное, что в буфер обмена помещается.

 

fxsaber, спасибо за мультитестер! Ваши публикации как всегда на высоте!


Я, прежде чем изобретать велосипед, хочу спросить совета.

В результате оптимизации параметров советника по списку символов с помощью мультитестера получается список файлов .opt и результаты оптимизации можно смотреть только отдельно по каждому символу.

А как их объединить в усредненный по всем символам результат? Допустим, я хочу получить стандартный MT5 2D график двух параметров (из квадратов зеленых оттенков).

Или как проще свести все результаты в экселевскую таблицу, ручной экспорт в эксель всех результатов по S&P500 не очень удобен..

fxsaber
fxsaber
  • www.mql5.com
Предупреждение для тех, кто не знает (почти все). При передаче мастер-пароля (даже на короткое время) от MT4/5-торгового счета другому лицу автоматически происходит передача не только имени, на кого зарегистрирован торговый счет (как при передаче инвест-пароля), но и реального email-адреса и номера телефона, на которые зарегистрирован торговый...
 
Sunriser:

В результате оптимизации параметров советника по списку символов с помощью мультитестера получается список файлов .opt и результаты оптимизации можно смотреть только отдельно по каждому символу.

А как их объединить в усредненный по всем символам результат? Допустим, я хочу получить стандартный MT5 2D график двух параметров (из квадратов зеленых оттенков).

Или как проще свести все результаты в экселевскую таблицу, ручной экспорт в эксель всех результатов по S&P500 не очень удобен..

Свести в один все opt-файлы мультиоптимизации возможно через TesterCache.

TesterCache
TesterCache
  • www.mql5.com
MT5-тестер автоматически сохраняет оптимизационные кеши (данные оптимизации) в файлах  Tester\cache\*.opt . И умеет экспортировать/импортировать их. Данная библиотека позволяет работать с этими данными. Сценарии Вывод более полных данных, чем это предоставляет MT5-тестер. Создание критериев оптимизации в любое время после проведенной...
 
Hey, this looks like an amazing tool, I'm trying to use google translate but I just don't get how to work with it. Is there some tutorial on English? I don't get at what point I can activate it and make the list of the symbols to be tested with my expert. Or do I need to edit a code file manually and them import it? Thanks!
 
Thierry Waltrich:
Hey, this looks like an amazing tool, I'm trying to use google translate but I just don't get how to work with it. Is there some tutorial on English? I don't get at what point I can activate it and make the list of the symbols to be tested with my expert. Or do I need to edit a code file manually and them import it? Thanks!

Здесь есть люди, которые активно используют этот (или на его основе) инструмент. Было бы замечательно, если бы они помогли Вам разобраться.

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

 

Удобный способ запуска форвардов при ручном анализе результатов Оптимизаций.

// Запуск форварда из таблицы результатов Оптимизации (запустить в Терминале).
#include <fxsaber\MultiTester\MTTester.mqh> // https://www.mql5.com/ru/code/26132

sinput datetime inForward = D'2020.01.01'; // Forward from

const bool Init = EventSetMillisecondTimer(100);

void OnTimer()
{
  static const string Forward = "[Tester]\r\nFromDate=" + TimeToString(inForward, TIME_DATE) +
                                "\r\n[TesterInputs]\r\ninBestInterval_Action=true";
  static bool Ready = true;
  static bool Flag = false;
  
  static string Settings;
  
  if (Ready)
    Ready = MTTESTER::IsReady();
  else if (MTTESTER::IsReady())
    Ready = (Flag = !Flag) ? !(MTTESTER::GetSettings(Settings) && MTTESTER::SetSettings2(Forward) && MTTESTER::ClickStart(false))
                           : MTTESTER::SetSettings2(Settings);
}

Открываю таблицу Оптимизации любого советника и на интересуемых проходах жму "Запустить одиночное тестирование". Получаю на выходе форвард прохода.

Сильно экономит время (у меня проход длится пару секунд), особенно с BestInterval.

 
Thierry Waltrich:
Hey, this looks like an amazing tool, I'm trying to use google translate but I just don't get how to work with it. Is there some tutorial on English? I don't get at what point I can activate it and make the list of the symbols to be tested with my expert. Or do I need to edit a code file manually and them import it? Thanks!

Вам нужно в тестере стратегий выбрать Expert, который вы хотите оптимизировать и задать оптимизируемые параметры.

Затем скомпилировать Пример1 и перетащить его на любой Chart (запустить), он начнет запускать ваш эксперт на тех Charts и Time Frames, которые заданы в коде Пример 1. 

Таким образом вам нужен MultitesterExpert, который как автомат запускает ваш оптимизируемый Expert на разных _Symbol / _Period etc..

Изучив комментарии в Пример 1 и Пример 2 вы сможете на их основе сделать собственный MultitesterExpert.

 

GetSettings(Str) ломает тестирование на локальных агентах.

GetSettings(Str) я использовал для выяснения какой тип моделирования тиков использован в тесте. 

Пример:

В код примера эксперта Moving Average добавил следующее:

#include <fxsaber\MultiTester\MTTester.mqh>

int OnInit()
  {

// штатный код советника

//получим настройки тестера
   string  Str;
   if(MQLInfoInteger(MQL_TESTER) && MTTESTER::GetSettings(Str))
     {
      Print(Str);
     }
   return(INIT_SUCCEEDED);
  }

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

На локальные агенты раздается несоразмерное кол-во зданий, и они не выполняются.


Можете навскидку подсказать что-то?

Файлы:
 
Sunriser:

Можете навскидку подсказать что-то?

В OnTesterInit сделать GetSettings и передать оттуда полученные значения через ParametersSetRange в sinput переменную.

На локальных Агентах эта sinput-переменная будет говорить о том, что за режим.


ЗЫ Режим по реальным тиками можно определить без DLL.