Тестер стратегий MetaTrader 5: ошибки, баги, предложения по улучшению работы - страница 23

 
Slava:

Tester stopped because OnInit returns non-zero code

Поэтому и статистики нет

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

 
Andrey Pogoreltsev:

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

Надо смотреть логи агента.

Ошибка 14 означает нулевую цену бида по данному инструменту. То есть, в историю попал левый бар

PS Лучше запустить одиночное тестирование. Тогда ошибка точно попадёт в лог тестерного агента. При оптимизации ошибки выводятся только до окончания OnInit

 

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


input group "ORDER"
input double K = 30;
input double TP_0 = 500;
input double MaxLoss = 0.25;
input group "FUNCTIONS"
input bool MultipleStopOrders = true;
input bool CloseAllPosReversSig = true;
input group "MONEY MANAGEMENT SETTING"
input double StartLot = -0.01;
input group "ORDERS SETTING"
input int MagicNumber_ = 2000; // Magic Number
input int Slippage = 50;       // Slippage
 
Slava:

Большая просьба не менять входные параметры советника, которые не заданы в буфере обмена.

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

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

fxsaber, 2019.11.06 11:24

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

  1. Выбираешь лучший проход для запуска одиночного прогона (через ПКМ).
  2. Если понравился, то отключаешь оптимизацию и увеличиваешь интервал.
  3. Жмешь Старт.

Больше всего уходит времени на п.2. При этом часто совершаются ошибки. Хочется полу-автоматизировать. И решение есть!


Скопируйте в буфер обмена этот текст

[Tester]
Optimization=0
FromDate=2019.01.01


Затем просто нажимайте во вкладке Настройки CTRL+V. Это автоматически будет отключать оптимизацию и выставлять нужную дату.


ЗЫ Поторопился радоваться. Входные параметры советника сбрасываются на дефолтные при таком буфере.

 
fxsaber:

Большая просьба не менять входные параметры советника, которые не заданы в буфере обмена.

Да. Исправим поведение.

PS Описанное поведение не воспроизводится. Если во вставляемом тексте нет секции [TesterInputs], то вкладка настроек эксперта вообще никак не задевается

 
Slava:
Да. Исправим поведение

Спасибо!

 
fxsaber:

Спасибо!

Не воспроизводится
 
Slava:

PS Описанное поведение не воспроизводится. Если во вставляемом тексте нет секции [TesterInputs], то вкладка настроек эксперта вообще никак не задевается 

Советник

input int Range = 0; // 0 .. 100

double OnTester() { return(Range); }


Воспроизведение


 
Возможно, такой штатный функционал никому хуже не сделает.

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

Особенности языка mql5, тонкости и приёмы работы

fxsaber, 2019.11.06 16:57

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

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

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

// Выключает Оптимизацию ( и одиночный проход)
bool OptimizationStop( void )
{
  return(!MTTESTER::IsReady() && MTTESTER::ClickStart(false));
}


Применение.

// Демонстрация прерывания Оптимизации.

sinput int inAmountPasses = 20; // Через сколько проходов закончить
input int Range = 0; // 0..10000

double OnTester()
{
  int Data[];
  
  return(FrameAdd(NULL, 0, 0, Data)); // Сгенерировали TesterPass
}

void OnTesterPass()
{
  static int Amount = 0;
  
  ulong Pass;
  string Name;
  long ID;
  double Value;
  int Data[];

  while (FrameNext(Pass, Name, ID, Value, Data))
    if (++Amount > inAmountPasses)
    {
      OptimizationStop(); // Как достигли нужного количества проходов, выключили оптимизатор.
      
      break;
    }
}
 
fxsaber:

Советник


Воспроизведение


Разберёмся
Причина обращения: