Тестер: Автоматическая оптимизация торгового робота в процессе реальной торговли

 

New article Автоматическая оптимизация торгового робота в процессе реальной торговли has been published:

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

Author: Igor Malcev

 
Спасибо за хорошую статью! Теперь все желающие проводить автооптимизацию смогут это реализовать ознакомившись с представленной в статье технологией.
 
solandr:
Спасибо за хорошую статью! Теперь все желающие проводить автооптимизацию смогут это реализовать ознакомившись с представленной в статье технологией.
Спасибо за коментарий! Удовлетворение от проделанной работы получаеш только тогда, когда видиш что твоя работа востребована.
 

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

 
В 204 билде MetaTrader, разработчики немного изменили структуру htm отчёта оптимизатора. Скорее всего, библиотека работать не будет.
 
FION:

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


Спасибо за оценку. Да,  развитие предполагается, а так же расширение функциональности.
 
Belford:
В 204 билде MetaTrader, разработчики немного изменили структуру htm отчёта оптимизатора. Скорее всего, библиотека работать не будет.

Проверим, если так то исправим не проблема, спасибо.
 
Уважаемый XEON!
Огромное спасибо за статью, уверен будет пользоваться большим спросом. Особенно у тех, кому приходиться переоптимизировать советников, скажем, в 23,59 по гринвичу.(у каждого своя стратегия), и неважно один раз в сутки или 1 раз в неделю.
Прошу прощения за невежество, но в кодах я не разбираюсь обсолютно. Тревиальный вопрос: Есть у меня советник (тот-же МАКD sampl), но с установленным блоком управления размерами позиций (lot_lib.mqh, MACD Sample.mq4 от Kompostera?, ему отдельное спасибо. выложен на этом-же сайте в разделе - библиотеки). Приходиться отимизировать его каждые трое суток, с периодом переоптимизации 2 недели, на 5 минутах, EURUSD. Можно-ли будет к Вам обратиться, (не безвозмездно) доработать именно этот советник?
Спасибо!
С уважением! Павел.
 

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

  if(StartTest)
    {                                        
      // Если с момента запуска прошло больше установленного времени 
      // ожидания тестирования
      if(TimeLocal() - TimeStart > TimeOut*60)
        {            
          // Обнулим флаг
          StartTest = false;                              
        }
    }
Универсальности данной функции он не даёт. Объясняю почему. Компы у всех разные, скорость выполнения оптимизации у всех разная, период оптимизируемых данных у всех может быть разный и если человек не просчитал заранее ожидаемое время прогона оптимизации, ему возвращаются неполные данные оптимизации, т.е. не весь прогон, а только его часть.

Я решил этот вопрос следующим способом, я не рассчитываю время оптимизации, для меня этот параметр совсем неважен, т.к. условия оптимизации можно задать таким способом что после серии убытков запускается оптимизация за месяц, а в определенное время скажем только за неделю. Разница во времени будет достаточно заметно отличаться.

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

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

Таким способом убиваем 2-х зайцев:
1. Обновляем историю катеровок по всем таймфреймам и всем нужным валютным парам, эксперт при работе может использовать другие валютные пары.
2. Гарантированно получаем все переборы оптимизации и анализируем из по окончании работы терминала-тестера.

Мне осталось еще реализовать функцию зациклованности оптимизации эксперта нескольких валютных пар по которым работает эксперт. Этот момент впринципе сделан был, но из-за того что оказывается была изменена структура htm отчёта оптимизатора все накрылось медным тазом и я вернулся к старому варианту и билду собственно тоже.
 
Paha:
Уважаемый XEON!
Огромное спасибо за статью, уверен будет пользоваться большим спросом. Особенно у тех, кому приходиться переоптимизировать советников, скажем, в 23,59 по гринвичу.(у каждого своя стратегия), и неважно один раз в сутки или 1 раз в неделю.
Прошу прощения за невежество, но в кодах я не разбираюсь обсолютно. Тревиальный вопрос: Есть у меня советник (тот-же МАКD sampl), но с установленным блоком управления размерами позиций (lot_lib.mqh, MACD Sample.mq4 от Kompostera?, ему отдельное спасибо. выложен на этом-же сайте в разделе - библиотеки). Приходиться отимизировать его каждые трое суток, с периодом переоптимизации 2 недели, на 5 минутах, EURUSD. Можно-ли будет к Вам обратиться, (не безвозмездно) доработать именно этот советник?
Спасибо!
С уважением! Павел.

Уважаемый Paha я готов бесплатно сделать то что вы просите, но у меня к вам будет ответная просьба: для проверки гипотезы описанной в начале статьи нехватает статистики, немогли-бы вы примерно 1 раз в неделю выкладывать сюда отчеты о работе экспертов, 1 - без автоматической оптимизации параметров, 2 - с автоматической оптимизацией параметров. Думаю такая статистика пригодилась бы многим.
С уважением xeon
 
HIDDEN:


XEON, обрати внимание на то, что у тебя в коде есть такой кусок:

Универсальности данной функции он не даёт. Объясняю почему. Компы у всех разные, скорость выполнения оптимизации у всех разная, период оптимизируемых данных у всех может быть разный и если человек не просчитал заранее ожидаемое время прогона оптимизации, ему возвращаются неполные данные оптимизации, т.е. не весь прогон, а только его часть.
Я решил этот вопрос следующим способом, я не рассчитываю время оптимизации, для меня этот параметр совсем неважен, т.к. условия оптимизации можно задать таким способом что после серии убытков запускается оптимизация за месяц, а в определенное время скажем только за неделю. Разница во времени будет достаточно заметно отличаться.
Я копирую в папку терминала файл по окончании работы терминал-тестера и пока данный файл не появится в нужном нам каталоге терминала, процесс будет зациклен, как только появился файл, зацикливание сбрасывается, и идет анализ полученных данных. При этом гарантированно, что терминал-тестер уже отработал и все данные записаны в нужные места для анализа.


Согласен, не совсем удобный вариант, но на мой взгляд лучше чем зацикливание эксперта до момента получения файла, потому что в случае сбоя (не важно по каким причинам) эксперт будет в "коме" , что гораздо хуже, ИМХО. У меня есть несколько иное решение этой задачи, но это в следующей версии.


Плюс ко всему в терминале-тестере в момент оптимизации советника у меня экспертом закачиваются все катеровки по нужным валютным парам и нужным таймфреймам и при деините этого эксперта как раз создаётся и копируется файл по которому эксперт в тестере прерывает зациклованность и анализирует параметры.
Таким способом убиваем 2-х зайцев:
1. Обновляем историю катеровок по всем таймфреймам и всем нужным валютным парам, эксперт при работе может использовать другие валютные пары.
2. Гарантированно получаем все переборы оптимизации и анализируем из по окончании работы терминала-тестера.

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

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


Насчет изменения структуры html отчета, - в ближайшее время (как только появится немного свободного времени) я с этим разберусь и если понадобится, внесу изменения в библиотеку
Причина обращения: