Обсуждение статьи "Создание самооптимизирующихся советников на MQL5"

 

Опубликована статья Создание самооптимизирующихся советников на MQL5:

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

Разработка торгового бота, способного адаптироваться к текущим рыночным условиям, является ключом к стабильным алгоритмическим торговым стратегиям. Наша цель — выйти за рамки создания узкоспециализированных ботов, ограниченных несколькими символами. Мы намерены разрабатывать системы, способные обучаться и адаптироваться к любому торговому символу. В этой статье мы уделим основное внимание использованию MQL5 для разработки ботов, которые могут самостоятельно оптимизироваться под любую торговую среду.

Вопреки некоторым представлениям, MQL5 идеально подходит для этой задачи. Его API предоставляет обширные матричные и векторные функции, позволяющие создавать компактные модели машинного обучения. В этом введении особое внимание уделяется использованию MQL5 для создания самооптимизирующихся ботов. Объектно-ориентированное программирование сокращает повторы кода и повышает адаптивность к различным временным рамкам и рыночным условиям.

Выбор матричных и векторных возможностей MQL5 имеет значительные преимущества по сравнению с такими альтернативами, как ONNX и Python. Использование модели ONNX требует отдельных экземпляров модели для каждого торгового символа и новых моделей для любых незначительных изменений параметров, таких как корректировки временных рамок. Напротив, MQL5 обеспечивает адаптивность без необходимости управления многочисленными моделями для различных условий.

Автор: Gamuchirai Zororo Ndawana

 

Большое спасибо за то, что поделились этой информацией и нашли время, чтобы объяснить ее в очень приятной и читабельной манере. Превосходно.

С уважением,

Антонио

 
Antonio Simon Del Vecchio #:

Большое спасибо за то, что поделились этой информацией и нашли время, чтобы объяснить ее в очень приятной и читабельной манере. Превосходно.

С уважением,

Антонио

Вы слишком добры, Антонио, спасибо за теплые слова.
 
Большое спасибо Гамучираю, это потрясающе, очень вовремя и актуально в наш век торговли советниками.

Вы лучшие :-)
 
Douglas I #:
Большое спасибо Гамучираю, это потрясающе, очень вовремя и актуально в наш век торговли советниками.

Вы лучшие :-)
Спасибо, Дуглас, я рад помочь.

Поехали.🔥
 

Спасибо за публикацию, в очередной раз очень уникальный подход. Мне очень интересно понять и внедрить эту оценку. Я пришел с такими информативными объяснениями, это удовольствие читать и значительно улучшает мое понимание. Ценю ваше время, потраченное на создание этого

С уважением, Нил

 
linfo2 #:

Спасибо за публикацию, в очередной раз очень уникальный подход. Мне очень интересно понять и внедрить эту оценку. Я пришел с такими информативными объяснениями, это удовольствие читать и значительно улучшает мое понимание. Ценю ваше время, потраченное на создание этого

С уважением, Нил

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

 
Пробуя LinearRegressionEA в выходные, я получаю неопределенные значения для значений m[0] и b[0] в LinearRegression,mqh, class Predict() metod thus returns undefined -nan, doing back testing in Strategy Tester.
Method Trained() has returned true at that point.
Может ли это быть как-то связано с тем, что я не в торговых часах?

UPDATE: Скорее всего, это проблема с историческими данными. Я работаю в режиме "реальных тиков". Пробую бэктест на данных за один месяц, все работает. Посмотрю, смогу ли я добавить код, который не позволит неопределенным данным проскользнуть незамеченными. Я вижу, что там есть некоторые проверки на неопределенные m[0] и d[0], но, возможно, нужно больше. Проверю завтра.



 
Gunnar Forsgren Strategy Tester.
Method Trained() has returned true at that point.
Может ли это быть как-то связано с тем, что я не в торговых часах?

UPDATE: Скорее всего, это проблема с историческими данными. Я работаю в режиме "реальных тиков". Пробую бэктест на данных за один месяц, все работает. Посмотрю, смогу ли я добавить код, который не позволит неопределенным данным проскользнуть незамеченными. Я вижу, что там есть некоторые проверки на неопределенные m[0] и d[0], но, возможно, нужно больше. Проверю завтра.



Мое наблюдение с бэктестом "каждый тик" было решено путем явного экспорта файлов данных истории тиков и баров из списка символов и сохранения их по пути к файлу, на который будет ссылаться тестер.
Файлы должны охватывать диапазон дней, для которых выполняются тесты. Это может быть удобно для случая, когда период прошлого неоднократно используется для улучшения стратегии.
По умолчанию тестер загружает эти данные из сети при каждом запуске теста, и, очевидно, иногда это ненадежно. Хранить эти данные локально, кажется, работает лучше.
Обычно при первой попытке тестера ссылаться на них локально есть некоторые пути к файлам акробатика, пока не придет к знать правильный путь,
для иллюстрации в моем случае Windows путь "C:\Users\<имя пользователя>\Appdata\Roaming\MetaQuotes\Terminal\Common\Files".
Этот пост предоставил подсказки: https://www.mql5.com/en/forum/367098#comment_21816898

Where to locate files for Strategy tester to find them
Where to locate files for Strategy tester to find them
  • 2021.04.12
  • Anthony Eric Gillon Dawson
  • www.mql5.com
MT5 has a very bizarre way of handling files...
 
Gunnar Forsgren Strategy Tester.
Method Trained() has returned true at that point.
Может ли это быть как-то связано с тем, что я не в торговых часах?

UPDATE: Скорее всего, это проблема с историческими данными. Я работаю в режиме "реальных тиков". Пробую бэктест на данных за один месяц, все работает. Посмотрю, смогу ли я добавить код, который не позволит неопределенным данным проскользнуть незамеченными. Я вижу, что там есть некоторые проверки на неопределенные m[0] и d[0], но, возможно, нужно больше. Проверю завтра.



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


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

Ваше решение звучит очень многообещающе, как оно продвигается?

 
Gunnar Forsgren #:

Мое наблюдение о бэктесте "каждый тик" было устранено путем явного экспорта файлов данных истории тиков и баров из списка Symbols и сохранения их по пути к файлу, на который будет ссылаться тестер.
Файлы должны охватывать диапазон дней, за которые проводятся тесты. Это может быть удобно для случая, когда период прошлого неоднократно используется для улучшения стратегии.
По умолчанию тестер загружает эти данные из сети при каждом запуске теста, и, очевидно, иногда это ненадежно. Хранить эти данные локально, кажется, работает лучше.
Обычно при первой попытке тестера ссылаться на них локально есть некоторые пути к файлам акробатика, пока не придет к знать правильный путь,
для иллюстрации в моем случае Windows путь "C:\Users\<имя пользователя>\Appdata\Roaming\MetaQuotes\Terminal\Common\Files".
Этот пост предоставил подсказки: https://www.mql5.com/en/forum/367098#comment_21816898

Да, действительно, наличие локальных данных - это значительное улучшение. Имея локальные данные, мы можем не только изменять коэффициенты линейной регрессии, но и оптимизировать параметры наших технических индикаторов на лету. Вы попали в точку.

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