Непонятный баг при оптимизации внешних параметров советника, имеющих тип enum (перечисления)

 

Здравствуйте, коллеги.

Столкнулся с проблемой, решения которой так и не смог найти на просторах Интернета. Поэтому решил побеспокоить местных экспертов.

Суть проблемы такова: в советнике есть параметр типа enum, например такой

#property strict

enum sgnl
  {
   sgRSI,       // RSI
   sgBB,        // Bollinger Bands
   sgKeltner    // Keltner Channel
  }; 

input  sgnl  AverageSignalSource  = sgBB; // Источник сигнала для усреднения(индикатор)

Я провожу оптимизацию по этому параметру, т.е. оптимизатор перебирает варианты параметра [dsRSI, dsBB, dsKeltner], по сути же целые числа 0,1,2. Как результат во вкладке "Результаты оптимизация" появляется строка с параметрами прогона. Но спустя какое-то время, или просто после тестирования советника по этому набору, на вкладке результатов значения параметра вдруг становятся совершенно случайными. Должны быть от 0 до 2, а появляются 4356, или 16578, или 456 и т.д.


Естественно, что при попытке передать параметры в советник, в настройках появляются пустые поля... это ведёт к потере данных оптимизации. Главное, происходит это спонтанно, однозначных причин выявить не удается.

 
lsv107:

Здравствуйте, коллеги.

Столкнулся с проблемой, решения которой так и не смог найти на просторах Интернета. Поэтому решил побеспокоить местных экспертов.

Суть проблемы такова: в советнике есть параметр типа enum, например такой

Я провожу оптимизацию по этому параметру, т.е. оптимизатор перебирает варианты параметра [dsRSI, dsBB, dsKeltner], по сути же целые числа 0,1,2. Как результат во вкладке "Результаты оптимизация" появляется строка с параметрами прогона. Но спустя какое-то время, или просто после тестирования советника по этому набору, на вкладке результатов значения параметра вдруг становятся совершенно случайными. Должны быть от 0 до 2, а появляются 4356, или 16578, или 456 и т.д.


Естественно, что при попытке передать параметры в советник, в настройках появляются пустые поля... это ведёт к потере данных оптимизации. Главное, происходит это спонтанно, однозначных причин выявить не удается.

по приведённому коду, как минимум dsBB и gsBB не эквивалентны.
 
Maxim Kuznetsov:
по приведённому коду, как минимум dsBB и gsBB не эквивалентны.

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

 
lsv107:

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

Я уже писал об этой проблеме, но администрация проигнорировала мое сообщение...

Мой пост https://www.mql5.com/ru/forum/1111/page2390#comment_10739276


Решение проблемы, явное указание енум переменных, во всяком случае у меня .

Ошибки, баги, вопросы
Ошибки, баги, вопросы
  • 2019.02.21
  • www.mql5.com
Общее обсуждение: Ошибки, баги, вопросы
 
Vladimir Pastushak:

Я уже писал об этой проблеме, но администрация проигнорировала мое сообщение...

Решили же эту проблему!

А в данном топике описывается проблема MT4 неозвученного билда, а не MT5.

 
Slava:

Решили же эту проблему!

А в данном топике описывается проблема MT4 неозвученного билда, а не MT5.

Я правильно вас понял, что эта проблема решена в MT5, но не в MT4? Или же есть решение и для MT4? По поводу билда, то я думал, что и так понятно - я использую последний доступный билд клиентского терминала, а именно 1170.

 

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

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

#property strict

enum sgnl
  {
   sgRSI,       // RSI
   sgBB,        // Bollinger Bands
   sgKeltner    // Keltner Channel
  }; 

input  sgnl  AverageSignalSource  = sgBB; // Источник сигнала для усреднения(индикатор)

Я провожу оптимизацию по этому параметру, т.е. оптимизатор перебирает варианты AverageSignalSource - [dsRSI, dsBB, dsKeltner], по сути же целые числа 0,1,2. Как результат во вкладке "Результаты оптимизация" появляется строка с подобранными оптимизатором параметрами. Но спустя какое-то время, или просто после тестирования советника по этому набору (опять же не сразу), на вкладке результатов значения параметра вдруг становятся совершенно случайными. Должны быть от 0 до 2, а появляются 435634545, или 16578, или 456 и т.д.


Вы же знаете, что оптимизация может длиться несколько суток, а представьте, что результаты вы можете потерять в одну минуту, благодаря описанному багу. Представили? Я лично о такой проблеме знаю давно, поэтому сохраняю отчет оптимизации, потом произвожу его анализ в сторонней программе, откуда и парсинг результатов делаю по необходимости. Но мои клиенты привыкли работать только с терминалом, да и мне не очень хочется обучать их пользоваться сторонними программами. Поэтому буду очень благодарен, если кто-то из разработчиков или местных экспертов подскажет мне решение проблемы.

 
lsv107:

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

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

Я провожу оптимизацию по этому параметру, т.е. оптимизатор перебирает варианты AverageSignalSource - [dsRSI, dsBB, dsKeltner], по сути же целые числа 0,1,2. Как результат во вкладке "Результаты оптимизация" появляется строка с подобранными оптимизатором параметрами. Но спустя какое-то время, или просто после тестирования советника по этому набору (опять же не сразу), на вкладке результатов значения параметра вдруг становятся совершенно случайными. Должны быть от 0 до 2, а появляются 435634545, или 16578, или 456 и т.д.


Вы же знаете, что оптимизация может длиться несколько суток, а представьте, что результаты вы можете потерять в одну минуту, благодаря описанному багу. Представили? Я лично о такой проблеме знаю давно, поэтому сохраняю отчет оптимизации, потом произвожу его анализ в сторонней программе, откуда и парсинг результатов делаю по необходимости. Но мои клиенты привыкли работать только с терминалом, да и мне не очень хочется обучать их пользоваться сторонними программами. Поэтому буду очень благодарен, если кто-то из разработчиков или местных экспертов подскажет мне решение проблемы.


Об этой проблеме только ленивый не писал, разве что только те , которые не используют enum 

да есть такая проблема только в мт4. 

В мт4 нет смысла оптимизировать, поэтому уже наверно все забили давно на эту проблему в мт4. 

 
Vladislav Andruschenko:


Об этой проблеме только ленивый не писал, разве что только те , которые не используют enum 

да есть такая проблема только в мт4. 

В мт4 нет смысла оптимизировать, поэтому уже наверно все забили давно на эту проблему в мт4. 

В MT5 это уже исправили.

Вы давно проверяли?

К тому же здесь описываются совсем другие симптомы

значения параметра вдруг становятся совершенно случайными

 
lsv107:

Я правильно вас понял, что эта проблема решена в MT5, но не в MT4? Или же есть решение и для MT4? По поводу билда, то я думал, что и так понятно - я использую последний доступный билд клиентского терминала, а именно 1170.

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

Извините, не понял. Что не воспроизводится?

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