Предложения по улучшению режима оптимизации в MT5

 

Описание проблемы:

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

int OnInit()
  {
   if(hourStart>hourStop)  return(INIT_PARAMETERS_INCORRECT);

   return(INIT_SUCCEEDED);
  }

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

 

Предложение по решение проблемы:

1. Научить оптимизатор анализировать не только сами параметры, но и содержимое OnInit(), на предмет подобного кода, как в примере, содержащего "INIT_PARAMETERS_INCORRECT".

2. Научить оптимизатор перераспределять задачи, в случае если освободились остальные агенты, а работа иных агентов по плану завершиться не в ближайшие 5 минут.

Если кому известны способы решения описанной проблемы без изменения MT5, то прошу ими поделиться!

 
Aleksey Vyazmikin:

2. Научить оптимизатор перераспределять задачи, в случае если освободились остальные агенты, а работа иных агентов по плану завершиться не в ближайшие 5 минут.

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

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

Не надо пока ничего улучшать!

Пусть то что есть сначала работает без ошибок!

Пора наверно приостановить улучшения и навести порядок в уже сделанном.

 
А что такое навести порядок? На мой взгляд это и есть улучшения/исправления мелких недостатков.
 
elibrarius:
А что такое навести порядок? На мой взгляд это и есть улучшения/исправления мелких недостатков.

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

Я вот например трое суток не мог запустить тестирование (то есть совсем никак) в режиме "каждый тик на основе" на рублёвом счете, пока не внесли исправление.

Периодически возникают и другие мелкие и не очень проблемы и неточности. Доверие к программе как к точному инструменту для финансовой деятельности подрывается.

Кстати Ваше предложение:

2. Научить оптимизатор перераспределять задачи, в случае если освободились остальные агенты, а работа иных агентов по плану завершиться не в ближайшие 5 минут.

Я бы сформулировал как:

Если свободное ядро может выполнить задачу быстрее чем уже запущенное, до задача должна передаваться ему.

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

 
Yury Kirillov:

Если свободное ядро может выполнить задачу быстрее чем уже запущенное, до задача должна передаваться ему.

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


А как у процессора могут быть медленные и быстрые ядра?

 
Alexey Volchanskiy:

А как у процессора могут быть медленные и быстрые ядра?


Ядра распределенной сети облачных вычислений.

 
Yury Kirillov:

Ядра распределенной сети облачных вычислений.т, я поэтому и спросил.


Вообще-то их агентами называют, поэтому и удивился.

Причина обращения: