Новая версия платформы MetaTrader 5 build 2190 - страница 46

 
fxsaber:

Выходит, все работает правильно.

Вопрос был не в том, что получил ноль, а в том, что выбор сделок по ID позиции равным нулю происходит. Завтра Ильяс скажет правильно или нет. Я считаю что ID позиции не может быть равен нулю. Соответственно никаких сделок не должно выбираться. Но, последнее слово за разработчиками.

 
Andrey Dik:

проверил на простом советнике:

режим "Полная оптимизация", CNT от 0 до 1'000'000, прошли все проходы:

и тоже самое но в режиме "Расчет математики":


ЗЫ сделал проверку, потому что мне не нужно что бы полный перебор параметров "где то остановился".

ЗЗЫ Билд 2230

нет, к сожалению, при полном переборе параметров оптимизатор останавливает оптимизацию если не видит улучшений в течении какого то (ведомого разработчикам) количества прогонов.

подсунул оптимизатору такую функцию:

input string   str1        = "";
input double   Param1_P    = -5.0;
input double   Param2_P    =  5.0;
input string   str2        = "";
input int      CNT_P       = 0;
input bool     CustomOpt_P = false;

double Param1 = 0.0;
double Param2 = 0.0;

int OnInit ()
{
  if (MQLInfoInteger(MQL_OPTIMIZATION) && CustomOpt_P)
  {
  }
  else
  {
    Param1 = Param1_P;
    Param2 = Param2_P;
  }
  
  return (INIT_SUCCEEDED);
}

void OnDeinit (const int reason)
{
}

void OnTick ()
{
}

double OnTester ()
{
  return (-fabs((Param1 * Param2)));
}

в итоге оптимизатор остановился на 10496-м проходе, хотя вариантов насчитывается 10010200201001!

Уважаемые @Renat Fatkhullin, @Slava, @Ilyas, так не должно быть ни в коем случае, тут полным перебором даже и не пахнет в режиме "Полная оптимизация", к тому же параметры перебираются совсем не по порядку с соответствующим шагом.

Пожалуйста, дайте (нехорошее слово, но...) возможность полного перебора.

PS Или, как предположение, полный перебор работает только если параметр один?

 
Alexey Viktorov:

Вопрос был не в том, что получил ноль, а в том, что выбор сделок по ID позиции равным нулю происходит. Завтра Ильяс скажет правильно или нет. Я считаю что ID позиции не может быть равен нулю. Соответственно никаких сделок не должно выбираться. Но, последнее слово за разработчиками.

В истории есть сделки с нулевым ID. По какой причине они не должны выбираться по своему ID?

 

1) Андрей, почему настройки оптимизации не привели?

Объясним и обоснуем почему генетика остановилась. Вы не в первый раз подсовываете слабый кастомный критерий.

2) Памяти то у вас хватит 10 млрд результатов сохранить и показать? При всем параде собираемых данных на каждый проход

 
Renat Fatkhullin:

1) Андрей, почему настройки оптимизации не привели?

Объясним и обоснуем почему генетика остановилась. Вы не в первый раз подсовываете слабый кастомный критерий.

2) Памяти то у вас хватит 10 млрд результатов сохранить и показать? При всем параде собираемых данных на каждый проход


[Tester]

Expert=#Works\In work\******\Test CNT.ex5

Symbol=EURUSD

Period=H12

Optimization=1

Model=1

FromDate=2019.11.26

ToDate=2019.11.27

ForwardMode=0

Deposit=100000

Currency=USD

ProfitInPips=0

Leverage=500

ExecutionMode=0

OptimizationCriterion=6

[TesterInputs]

str1=

Param1_P=-5||-5.0||0.0001||5.0||Y

Param2_P=5||-5.0||0.0001||5.0||Y

str2=

CNT_P=0||0||1||1000||Y

CustomOpt_P=false||false||0||true||N


Спасибо за скорый отклик, Ренат.

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

2. Можно сохранять на ЖД, если пользователю очень нужно - пусть озадачивается железом, это совершенно естественно

 

Генетику запускаю несколько раз. В кеше предыдущие результаты сохраняются.

Так надежнее находить другие локальные экстремумы, т.к. на первом запуске генетики рандому может не "повезти", где какой-нибудь "прыщ" в себя утягивает.

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


Хорошо бы прописать реальные сценарии использования ГА перед критикой/защитой.

 
fxsaber:

Генетику запускаю несколько раз. В кеше предыдущие результаты сохраняются.

Так надежнее находить другие локальные экстремумы, т.к. на первом запуске генетики рандому может не "повезти", где какой-нибудь "прыщ" в себя утягивает.

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


Хорошо бы прописать реальные сценарии использования ГА перед критикой/защитой.

в моем примере НЕ ГА, а для ГА 10000 проходов вполне достаточно - совершенно очевидно.

 
Andrey Dik:

в моем примере НЕ ГА, а для ГА 10000 проходов вполне достаточно - совершенно очевидно.

Тогда прописать сценарии использования полного перебора. Чтобы с жизнью как-то пересекались.

 

Андрей, вы издеваетесь?

Какой гладкий критерий? Вы же четко и осознанно уперлись в максимум как 0 при выборе от -25 до ноля!

Максимум функции в 0 вы ловите в первых же проходах в нулевом поколении и потом множество поколений тестер пытается улучшить этот ноль. Конечно все верно останавливает просчет тестер, дав шанс в нескольких следующих поколениях.


Мой вердикт:

  • Вы осознанно пытались мошенничать
  • Как и в прошлый раз вы осознанно подсунули негладкую функцию

Вы кого хотите обмануть? Меня? Повторно на точно таком же вопросе?


Вот он ваш предел - четко на нуле, максимум(0) мгновенно достигнут на самых первых попытках:


Генетика сработала абсолютно точно.
 
Andrey Dik:

подсунул оптимизатору такую функцию:

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

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