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

 
hini #:

Исправлена проблема с получением входных данных тестера в версии b5120. В процессе отладки было обнаружено, что для массива static const int ControlID[] = {0xE81E, 0x804E} второй элемент (0x804E) возвращает Handle равный 0, тогда как первый элемент (0xE81E) возвращает валидный Handle. При использовании этого Handle получение входных данных тестера работает корректно.

Тестирование показало, что данный метод работает и в версии b4879, и, предположительно, в b4885 тоже не должно быть проблем.

Возможно, проще всего изменить порядок

Вы уверены, что используете актуальную версию MTTester.mqh? Там следующий код.

  static long GetHandle( const int &ControlID[] )
  {
    static const bool MT5_b5050 = (::TerminalInfoInteger(TERMINAL_BUILD) > 5000);

    long Handle = MTTESTER::GetTerminalHandle();
    const int Size = ::ArraySize(ControlID);

    for (int i = 0; i < Size; i++)
      if (!MT5_b5050 || (ControlID[i] != 0xE81E))
        Handle = user32::GetDlgItem(Handle, ControlID[i]);

    return(Handle);
  }
 
fxsaber #:
Вы уверены, что используете актуальную версию MTTester.mqh? Там следующий код.

Я помню, что обновился до последней версии, но не знаю, почему я пропустил обновление этого файла. Теперь все работает нормально.

 
Добрый день!

Перестал компилироваться прилагаемый скрипт.
Выдается ошибка:
преобразование параметра типа 'short[260]' в 'ushort[] &' недопустимо MTTester.mqh 156 39
int user32::GetClassNameW(long,ushort&[],int) winuser.mqh 1414 37

Может быть, что-то нужно поменять в MTTester.mqh ?

Ранее он прекрасно компилировался.

Не могли бы вы помочь?

С уважением, Александр
Файлы:
_Noc.mq5  62 kb
 
klycko #:
Перестал компилироваться прилагаемый скрипт.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MultiTester

fxsaber, 2025.06.08 16:57

Из КБ скачиваю исходники только нажатием на соответствующий файл, как на картинке.

Только что его таким образом скачал для проверки - компилируется без ошибок.

 
fxsaber #:

Большое спасибо!

Все снова заработало!

 

Скачал как показано на картинке выше, но ошибка в cmopile

Mttester.mqh скомпилирован с ошибкой pls check for new build MT5 V5 BULD 5142


ОШИБКИ :


тип преобразования параметра 'short[260]' в 'ushort[] &' недопустим MTTester.mqh 135 39

'ReadFile' - ни одна из перегрузок не может быть применена к вызову функции MTTester.mqh 1283 21


 
dave365 #:

Закачал, как показано на изображении выше, но в cmopile ошибка

Форум о трейдинге, автоматизированных торговых системах и тестировании торговых стратегий

Библиотеки: MultiTester

fxsaber, 2025.06.12 14:55

Размер текущей версии файла MTTester.mqh на данный момент составляет 123 822 байта.

 

Привет @fxsaber

Надеюсь, у вас все хорошо.

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

У меня есть советник, который я написал для тестирования/оптимизации индификатора на 9 символах. Я реализовал код следующим образом в советнике.

//+------------------------------------------------------------------+
//|MultiTesterBase.mq5 |
//|Copyright 2025, MetaQuotes Ltd. |
//| https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2025, MetaQuotes Ltd."
#property link      "https://www.mql5.com"
#property version   "1.00"

#include <fxsaber\MultiTester\MultiTester.mqh>

#define  EA_NAME "IndicatorTesting\\EAs\\ash_indicator_testing.ex5"

// эта функция отвечает за формирование списка задач
void SetTesterSettings()
{
   TesterSettings.Add(EA_NAME, "EURUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "AUDNZD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "EURGBP", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "AUDCAD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "CHFJPY", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "CADSGD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "BTCUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "XAUUSD", PERIOD_CURRENT);
   TesterSettings.Add(EA_NAME, "US500", PERIOD_CURRENT);
}
//+------------------------------------------------------------------+

Но я не знаю, что делать после этого, так как я хочу оптимизировать параметры по заданным символам, в тестере я должен был выбрать ash_indicator_testing ea, потому что если я этого не сделаю, у меня не будет параметров оптимизации. После этого я применил вставленный выше фрагмент кода, т.е. (multitester ea) на график! Это правильный ход действий или я делаю это неправильно? Потому что я не смог найти достаточно информации об использовании.

Пожалуйста, направьте меня на это.

С наилучшими пожеланиями

 
Hafiz Tamur Ahmed #:

Пожалуйста, направьте меня

Исторически сложилось так, что MultiTester.mqh не используется для написания взаимодействия с Тестером, т.к. там применяется событийная модель, которая слишком сложна. Поэтому сразу рекомендую использовать иной подход - через MTTester.mqh.


Вот хороший пример.

Форум по трейдингу, автоматическим торговым системам и тестированию торговых стратегий

Библиотеки: MultiTester

fxsaber, 2024.01.17 12:13

#include <fxsaber\MultiTester\MTTester.mqh>    // https://www.mql5.com/ru/code/26132

#define _CS(A) ((!IsStopped()) && (A))
#define PAUSE 200

void Run( const string Settings )
{
  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);

  MTTESTER::CloseNotChart();
    
  if (_CS(MTTESTER::SetSettings2(Settings)))
    MTTESTER::ClickStart(false);

  while (_CS(!MTTESTER::IsReady()))
    Sleep(PAUSE);
}

void OnStart()
{
  string Settings[] = {"[Tester]\n" +
                       "Expert=Input_String_Example_Alternative.ex5\n" +
                       "Symbol=EURUSD\n" +
                       "Period=M1\n" +
                       "Optimization=2\n" +
                       "Model=4\n" +
                       "FromDate=2023.01.01\n" +
                       "ToDate=2024.01.01\n" +
                       "ForwardMode=0\n" +
                       "Deposit=1000000000\n" +
                       "Currency=USD\n" +
                       "ProfitInPips=1\n" +
                       "Leverage=100\n" +
                       "ExecutionMode=0\n" +
                       "OptimizationCriterion=6\n" +
                       "[TesterInputs]\n" +
                       "inAmount=1||1||1||10||N\n" +
                       "inCount=2||2||1||20||N\n" +
                       "inPeriod=3||3||1||30||N\n" +
                       "inKoef=4.56||4.56||0.456000||45.600000||N\n" +
                       "inLog=7.89||7.89||0.789000||78.900000||N\n" +
                       "inFlag=true||false||0||true||N"
                      };

  for (uint i = ArraySize(Settings); (bool)i--;)
    Run(Settings[i]);
}

Настройки Тестера сохраняются через CTRL+C/V. Вы можете сохранить их в отдельные файлы, а затем заполнить данными из них массив Settings[] в исходнике выше.


Дополнительный пример.

Optimize EA over a time window
Optimize EA over a time window
  • 2025.06.30
  • Maker
  • www.mql5.com
Is it possible to make the Strategy Tester to Optimize EA running it automatically multiple times over a range of time windows...
 

Thanks for the reply but im not able to understand the implementation in controller EA, like how it should be implemented and how it should be used! applying on chart or be used in tester. Because i have been reading the forum but i haven't seen any pop up appear or anything of that sort the only thing that happend on my side when i applied the controller EA onto my chart is a line stating waiting for the tester and for what is been carried out, and the strategy tester below consistently flickering. i was not able to do anything with tester!

Would be greate if a complete end to end guide is provided in the library docs so that it will be easy for new comers like me to understand and implement things according to their scenarios!

Best Regards

CC: @fxsaber