Скачать MetaTrader 5

После оптимизации тест на подобранных параметрах не совпадает

Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий
Alexey Burnakov
3011
Alexey Burnakov  

Добрый день!

 Использую МТ4. 

Очень удивился (. Провожу оптимизацию весь день, получил результаты. Они показались мне черезчур хорошими. Ну, думаю, ладно, попробуем разобраться.

Запустил отдельные тесты на нескольких вариантах подобранных параметров. Результаты с оптимизацией не совпадают! Причем у меня были заданы и даты, и спред 30, и все как обычно.

После недолгих размышлений стало понятно, что, несмотря на то, что спред я задал перед оптимизацией 30 пипок, она проводилась с НУЛЕВЫМ спредом. То есть, я ставлю на тесте спред 1 и все на 99.9% совпадает. Ставлю 30 пунктов и все намного хуже.

Почему такое может произойти?

Раньше, примерно год назад я с этим же самым кодом воспроизводил оптимизацию в точности. Что поменялось?

 

Мой кусок кода по открытию и закрытию сделок, там вырезаны условия, но видны типы цен. Вроде я делаю все верно... 

//--- проверка условия на закрытие сделки

   if(OrdersTotal() > 0)
      {
      for(int i=OrdersTotal()-1; i>=0; i--)
         {
         OrderSelect(i, SELECT_BY_POS, MODE_TRADES);
         
         if(OrderType()==OP_BUY)
            {
            ...
               OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue);
               }
            }
            
         if(OrderType()==OP_SELL)
            {
            ...
               OrderClose(OrderTicket(),OrderLots(),Ask,3,Red);
               }
            }
         }
      }





//--- проверка условия на открытие сделки
   if(OrdersTotal() < max_orders)
      {
      ...
               OrderSend(Symbol(),OP_SELLLIMIT,lot,NormalizeDouble(Bid + limit * Point, Digits),0,
               0,
               0,
               0,EA_Magic,TimeCurrent()+wait_time_open_minutes*60,clrRed);
               return;
               }
            }
            
         if(...)
               {
               OrderSend(Symbol(),OP_BUYLIMIT,lot,NormalizeDouble(Ask - limit * Point, Digits),0,
               0,
               0,
               0,EA_Magic,TimeCurrent()+wait_time_open_minutes*60,clrBlue);
               return;
               }
            }
         }
      }
Alexey Burnakov
3011
Alexey Burnakov  
С утра еще раз запустил опт. И что думаете, теперь тест совпадает. Похоже, есть какой-то баг, иногда предложенный спред не учитывается. Я попробую разобраться.
Yuri Evseenkov
2314
Yuri Evseenkov  
Alexey Burnakov:

Добрый день!

Запустил отдельные тесты на нескольких вариантах подобранных параметров. Результаты с оптимизацией не совпадают! Причем у меня были заданы и даты, и спред 30, и все как обычно.


У меня обратная ситуация.  В алгоритме используется генератор случайных чисел. При повторном тестировании с одними и теми же параметрами результаты разные, что естественно при влиянии на алгоритм ГСЧ. А вот когда оптимизация повторно запускается с теми же параметрами, результаты совпадают. Получается что ГСЧ не срабатывает при каждом новом проходе.
Maxim Romanov
4147
Maxim Romanov  
Yuri Evseenkov:
У меня обратная ситуация.  В алгоритме используется генератор случайных чисел. При повторном тестировании с одними и теми же параметрами результаты разные, что естественно при влиянии на алгоритм ГСЧ. А вот когда оптимизация повторно запускается с теми же параметрами, результаты совпадают. Получается что ГСЧ не срабатывает при каждом новом проходе.
узнать бы как там реализован ГСЧ
СанСаныч Фоменко
6483
СанСаныч Фоменко  

Че-то не понял. Вчера тестер работал нормально, а сегодня вот что.

Запускаю в тестере советник с набором параметров, один из которых равен 2. Получаю прибыль. Меняю этот параметр на 10 - получаю прибыль. Запускаю оптимизацию по этому параметру от 1 с шагом 1 до 10 - прибыль нулевая при всех 10 значениях параметра??? 

Alexey Burnakov
3011
Alexey Burnakov  
В общем, тестер шалит иногда.
Alexey Burnakov
3011
Alexey Burnakov  
Я еще про свою ситуацию добавлю. В журнал должно вывестись сообщение, что спред установлен такой-то. Тогда оптимизация его обрабатывает. Вот у меня этого сообщения могло не быть. Почему не знаю. Надо поразбираться. Если это баг, попробую описать.
Dmytro Zelenskyy
6128
Dmytro Zelenskyy  


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



"Столкнулся с неприятной ситуацией.

Свежезакачанный МТ4 Билд 940. (запущено 4-ре копии с разных папок через   /portable )

Закачиваются котировки с Альпари.

Оптимизируется по барам на М1 обычный советник с родными МТ4 индикаторами на истории 2008-2015.

Результаты оптимизации офигенно граальные.

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

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

Что сбивает тестер, пока не словил. "

  "И продолжение...


Глюк уже 950 билда тестера в картинках

Оптимизация дала сет  с прибылью 37619, кол-во сделок 52519, просадка 272

А этот же тестер дал прибыль -177926, кол-во сделок 52519, просадка 177931 (чтобы не войти в 0 баланс при тестировании пришлось увеличить с 100000 до 1000000)

П.С.

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

 

 

По моим наблюдениям все билды 9хх  страдают этой проблемой. Билды 8хх работают нормально.

Lilita Bogachkova
1536
Lilita Bogachkova  
Dmytro Zelenskyy:


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



"Столкнулся с неприятной ситуацией.

Свежезакачанный МТ4 Билд 940. (запущено 4-ре копии с разных папок через   /portable )

Закачиваются котировки с Альпари.

Оптимизируется по барам на М1 обычный советник с родными МТ4 индикаторами на истории 2008-2015.

Результаты оптимизации офигенно граальные.

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

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

Что сбивает тестер, пока не словил. "

  "И продолжение...


Глюк уже 950 билда тестера в картинках

Оптимизация дала сет  с прибылью 37619, кол-во сделок 52519, просадка 272

А этот же тестер дал прибыль -177926, кол-во сделок 52519, просадка 177931 (чтобы не войти в 0 баланс при тестировании пришлось увеличить с 100000 до 1000000)

П.С.

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

 

 

По моим наблюдениям все билды 9хх  страдают этой проблемой. Билды 8хх работают нормально.

В свое время MT4 такое лечилось удалением папки "tester" и пуском термина заново. Потом обычно (до обновления терминала) все работало корректно.
СанСаныч Фоменко
6483
СанСаныч Фоменко  
СанСаныч Фоменко:

Че-то не понял. Вчера тестер работал нормально, а сегодня вот что.

Запускаю в тестере советник с набором параметров, один из которых равен 2. Получаю прибыль. Меняю этот параметр на 10 - получаю прибыль. Запускаю оптимизацию по этому параметру от 1 с шагом 1 до 10 - прибыль нулевая при всех 10 значениях параметра??? 

Это еще не вся беда.

Обычный прогон тестера. Есть результаты под кнопкой "Результаты" куча сделок разной длительности. Под  кнопкой "Открыть график" - график есть, относится к периоду тестирования, а вот сделки на нем не нанесены.

Удалением папки "Тестер" не лечится.

Alexey Volchanskiy
19390
Alexey Volchanskiy  
Yuri Evseenkov:
У меня обратная ситуация.  В алгоритме используется генератор случайных чисел. При повторном тестировании с одними и теми же параметрами результаты разные, что естественно при влиянии на алгоритм ГСЧ. А вот когда оптимизация повторно запускается с теми же параметрами, результаты совпадают. Получается что ГСЧ не срабатывает при каждом новом проходе.

В каждом цикле оптимизации вызываются OnDeinit и OnInit. Попробуйте в каждом ините вызывать MathSrand с каким-нибудь инициализирующим числом. Наверное (не пробовал), GetTickCount не подойдет, попробуйте GetMicrosecondCount, тут от прогона к прогону должны меняться какие-то младшие разряды, то есть надо брать имено их.

Или запоминать число в глобальной переменной терминала и каждый раз делать ++ 

12
Авторизуйтесь или зарегистрируйтесь, чтобы добавить комментарий