Обсуждение статьи "Архитектура системы машинного обучения в MetaTrader 5 (Часть 1): Утечка данных и исправление меток времени"

 

Опубликована статья Архитектура системы машинного обучения в MetaTrader 5 (Часть 1): Утечка данных и исправление меток времени:

Прежде чем мы сможем даже начать использовать машинное обучение в нашей торговле на MetaTrader 5, крайне важно разобраться с одной из самых недооцененных ловушек — утечкой данных. Эта статья раскрывает, как утечка данных, в частности ловушка с временными метками в MetaTrader 5, может исказить производительность нашей модели и привести к ненадежным торговым сигналам. Углубляясь в механику этой проблемы и предлагая стратегии ее предотвращения, мы прокладываем путь к созданию надежных моделей машинного обучения, которые будут давать достоверные прогнозы в условиях реальной торговли.

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

Как временные метки MetaTrader 5 вводят вас в заблуждение

EURUSD M5 - MetaTrader5

MetaTrader 5 маркирует 5-минутный бар, начинающийся в 18:55, то есть 2-й последний бар сверху, как:
Время Open High Low Close

2 Apr 18:55

  1.08718

  1.08724

  1.08668

  1.08670

Отмечая время в начале, MetaTrader 5 подразумевает, что данные этого бара были доступны в 18:55:00 -за целых 5 минут до его фактического закрытия! Если ваша модель использует это в обучении, это все равно что дать студенту ответы на экзамен за 5 минут до начала тестирования. Чтобы противостоять этому, мы должны избегать использования предварительно скомпилированных временных баров MetaTrader 5, а вместо этого использовать тиковые данные для создания баров, которые мы используем в наших моделях.

Автор: Patrick Murimi Njoroge

 

Бары, ориентированные на активность, не решают всех проблем, которые вы упомянули для временных баров. Например, вы написали:

The Subtle Intra-Bar Leakage: However, a more subtle form of data leakage can still occur within the very formation of that time bar. If a significant event transpires midway through a 1-minute bar (e.g., at 09:00:35), any features derived from that bar (such as its high price or a flag for the event) will inevitably incorporate this information by the bar's end.

Если вы строите пользовательские бары равного объема, равного диапазона или другие тиковые бары, вы все равно пометите такой бар одной меткой, и он будет сливать (точнее, размывать) информацию о высокой цене по всему бару.

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

На самом деле, подход с постоянными таймфреймами, да еще и ограничивающий их М1, проблематичен в контексте утечки данных в МТ5. Маркировать бары М1 временем окончания не намного лучше, чем временем начала, имхо.


Для тех, кто интересуется построением пользовательских баров (графиков) нативно в MT5, есть статья с реализацией на MQL5 баров equal-volume, equal-range и renko. Разумеется, в открытом коде можно пометить бары с временем окончания.

Custom symbols: Practical basics
Custom symbols: Practical basics
  • www.mql5.com
The article is devoted to the programmatic generation of custom symbols which are used to demonstrate some popular methods for displaying quotes. It describes a suggested variant of minimally invasive adaptation of Expert Advisors for trading a real symbol from a derived custom symbol chart. MQL source codes are attached to this article.
 
Stanislav Korotky #:

Бары, ориентированные на активность, не решают всех проблем, которые вы упомянули для временных баров. Например, вы написали:

Если вы строите пользовательские бары равного объема, равного диапазона или другие тиковые бары, вы в любом случае пометите такой бар одной меткой, и он будет сливать (точнее, размывать) информацию о высокой цене по всему бару.

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

На самом деле, подход с постоянными таймфреймами, да еще и ограничивающий их М1, проблематичен в контексте утечки данных в МТ5. Маркировать бары М1 временем окончания не намного лучше, чем временем начала, имхо.


Для тех, кто интересуется построением пользовательских баров (графиков) нативно в MT5, есть статья с реализацией на MQL5 баров equal-volume, equal-range и renko. Разумеется, в открытом коде можно пометить бары с временем окончания.

Бары, управляемые активностью, направлены на улучшение статистических свойств информации, содержащейся в барах, например, уменьшение гетероскедастичности и улучшение нормальности. Предложенное мной решение проблемы тонкой внутрибарной утечки заключается в маркировке баров с помощью времени их окончания, так что все события, происходящие внутри бара, отражаются в метке времени. Полезный пример - использование в обучении модели характеристик, полученных из временной метки, таких как преобразования Фурье. Если вы используете соглашение MetaTrader5, в котором бары маркируются по началу периода, то вы дезинформируете свою модель. Это различие может не иметь большого значения для некоторых моделей, но оно оказывает огромное влияние на те, которые нацелены на использование циклической природы рынков. Надеюсь, я прояснил свои намерения.


 
Stanislav Korotky #:

Бары, основанные на активности, не решают всех проблем, которые вы упомянули для временных баров. Например, вы написали:

Если вы создаете бары того же объема, диапазона или другие тиковые пользовательские бары, вы в любом случае будете помечать такой бар одной меткой, и информация о максимальной цене будет просачиваться (точнее, размываться) по всему бару.

Единственный способ решить эту проблему - создавать "бары" с учетом специфических особенностей (которые вы будете использовать). Например, если основными характеристиками являются максимумы или минимумы, попробуйте создать "зигзагообразный бар" с экстремумами, отмеченными точно по времени.

Подход с постоянным таймфреймом, и в частности ограничение M1, проблематичен в контексте утечки данных MT5. Маркировка баров М1 временем окончания имхо не намного лучше, чем временем начала.


Для тех, кто интересуется созданием пользовательских баров (графиков) нативно в MT5, есть статья с MQL5-реализацией баров Equal Volume, Equal Range и Renko. Разумеется, в открытом коде можно пометить бары временем окончания.

Что вы имеете в виду, когда говорите: "Если вы создаете бары с одинаковым объемом, диапазоном или другие тиковые пользовательские бары, вы в любом случае будете помечать такой бар одной меткой, и информация о максимальной цене будет просачиваться (точнее, размываться) по всему бару"?

 
Patrick Murimi Njoroge #:

Что вы имеете в виду, когда говорите: "Если вы создаете бары с одинаковым объемом, диапазоном или другие пользовательские бары на основе тиков, вы все равно будете помечать такой бар одной меткой, и информация о максимальной цене будет просачиваться (или, точнее, размываться) по всему бару"?

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

Теперь я понимаю значение слова blur.