Постановка задачи

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

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

Но в этой задаче нет конкретики. Что мы подразумевает под «будущим движением»? Будущее — это 5 минут, 1 час, 1 день, 1 месяц? А может что-то среднее? На какое минимальное движение цены мы будем реагировать. Какими метриками мы можем оценить точность работы нашей модели? Наша цель должна быть конкретной и измеримой.

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

ZigZag на ценовом графике инструмента

ZigZag на ценовом графике инструмента

Для настройки индикатора используются три параметра:

  • Depth — задает количество свечей для поиска экстремумов. С ростом параметра индикатор выделяет наиболее значимые экстремумы.
  • Deviation — определяет количество пунктов между двумя соседними экстремумами для отображения на графике.
  • Backstep — указывает минимальном расстояние между соседними экстремумами в свечах.

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

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

Задача прогнозирования предстоящего направления движения представляется задачей бинарной классификации. Основываясь на данных индикатора ZigZag, в каждой конкретной точке у нас может быть либо движение вверх ценового графика (Buy), либо движение вниз ценового графика (Sell). Это не противоречит общепринятому делению трендовых движений на BUY, SELL и FLAT, так как флетовые движения представляют собой чередующиеся колебания Buy и Sell небольшой амплитуды.

В то же время средствами математической статистики мы не можем дать однозначный ответ о направлении предстоящего движения. Мы можем дать лишь вероятностный ответ, основанный на нашем прошлом опыте. Этот опыт мы будем «черпать» из обучающей выборки.

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

Таким образом, задача прогнозирования будущего движения становится конкретной и измеримой. Сформулируем ее как прогнозирование наиболее вероятного направления предстоящего ценового движения и его ожидаемой силы.