Инструменты статистического анализа и нечеткой логики

В среде разработки MetaEditor для обмена часто используемыми блоками кода выделен отдельный тип включаемых файлов с расширением mqh. Компания MetaQuotes в поставке MetaTrader 5 предлагает огромную Стандартную библиотеку, в которой представлены классы и методы для реализации самых различных задач. В том числе, доступны классы для анализа данных с использованием математической статистики и нечеткой логики.

Библиотека математической статистики предлагает функционал для работы с основными статистическими распределениями. В ней имеется боле двадцати распределений, и для каждого представлено по пять функций:

1. Расчет плотности распределения.

2. Расчет вероятностей.

3. Расчет квантилей распределения.

4. Генерация случайных чисел с заданным распределением.

5. Расчет теоретических моментов распределения.

Библиотека также позволяет рассчитать статистические характеристики заданного массива данных. С помощью этой библиотеки можно легко провести статистический анализ выборки из исторических данных анализируемого инструмента. Также можно сравнить статистические показатели нескольких инструментов и посмотреть на динамику статистических показателей одного инструмента на исторических данных различных временных интервалов.

Кроме того, можно провести разносторонний и комплексный анализ, а его результаты заложить в основу построения своей торговой системы.

Прежде чем говорить о возможностях библиотеки нечеткой логики, хочу немного рассказать о самом направлении. Понятие нечеткой логики (fuzzy logic) было предложено американским ученым Лотфи Заде (Lotfi Zadeh) в 1965 году. Данное нововведение позволяет добавить в расчеты некую долю субъективизма, присущего в реальной жизни. Ведь согласитесь, при описании тех или иных объектов и процессов мы часто используем нечеткие и приблизительные рассуждения.

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

Свечи

Свечи

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

В истории развития нечетких систем выделяют три этапа:

  1. 1960–70-е годы — развитие теоретических аспектов нечеткой логики и нечетких множеств.
  2. 1970–80-е годы — первые практические результаты в области управления нечетких систем.
  3. С 1980-х годов и до нашего времени — создание различных пакетов программ для построения нечетких систем значительно расширяет область применения нечеткой логики.

Рассмотрим основные понятия теории нечетких множеств.

Прежде всего это нечеткое множество — множество значений, объединяемых некими правилами.

Математическое описание этих правил объединяется в функцию принадлежности, которая является характеристикой нечеткого множества и обозначается MFC(x) — степень принадлежности значения x нечеткому множеству C.

Множество значений исходных данных, удовлетворяющих функции принадлежности, называется терм-множеством.

Совокупность нечетких множеств и их правил объединяются в нечеткую модель (систему).

Результаты работы нечеткой модели определяются из совокупности нечетких множеств с использованием системы нечетких логических выводов. В библиотеке нечеткой логики MQL5 реализованы системы нечеткого логического вывода Мамдани и Сугено.

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

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

С таким допуском при использовании привычной логики свечи с телом в 1 пункт и 4 пункта будут отнесены к классу Доджи и для используемой стратегии будут иметь одинаковое значение. В то же время свеча с телом в 6 пунктов уже не попадет в категорию Доджи и будет проигнорирована стратегией. Почему же отклонение в 3 пункта в первом случае (4 − 1 = 3) не имеет значения, а меньшее отклонение в 2 пункта (6 − 4 = 2) во втором случае вносит кардинальную разность. Применение нечеткой логики позволяет сглаживать эти углы и учитывать отклонения в обоих случаях.

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

Математически функцию принадлежности свечи к нечеткому множеству Доджи можно представить в виде:

График отнесение свечик классу Доджи (красный - математическая логика, зеленый - нечёткая логика)

График отнесения свечи к классу Доджи (красный — математическая логика, зеленый — нечёткая логика)

В данном случае мы получили частный случай симметричной треугольной функции активации. Для ее определения, по существу, нам хватило одного параметра a — границы диапазона в 5 пунктов. Центр распределения находится в точке 0. В общем же случае для определения треугольной функции принадлежности потребуется три параметра: нижняя граница, центр и верхняя граница нечеткого множества.

Существуют и другие функции принадлежности, но наибольшее распространение получили вышеупомянутая треугольная, трапецеидальная и гауссова функции принадлежности. При этом треугольная и трапецеидальная функции могут быть симметричными (когда левая и правая зоны размытости границ равны) и несимметричными.

График трапецеидальной функции отличается от графика треугольной функции наличием плато в верхней части. Для определения такой функции требуются четыре точки, указывающие верхние и нижние границы левой и правой зон размытости. В промежутке между зонами размытости функция принимает значение 1, а слева и справа от этих зон — 0. К примеру, введем правило для определения размера тела среднестатистической свечи с размером тела от 5 до 15 пунктов и зоной размытости границ в 5 пунктов. Математическая запись такого правила примет вид:

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

Совокупность терм-множеств Доджи (красный) и средне-статистическая свеча (зеленый).

Совокупность терм-множеств Доджи (красный) и среднестатистическая свеча (зеленый).

Обратите внимание, что на графике нет резкого разделения между Доджи и средней свечой в точке 5 пунктов, как это было бы при пороговом делении на классы. Вместо этого мы имеем пересечение линий в районе 2,5 пункта. При этом функция принадлежности примет значение около 0,5. Это означает, что свеча с телом в 2,5 пункта в равной степени относится к нечетким множествам Доджи и средней свечи. В таком случае для определения управляющего воздействия следует обратить внимание на вторичные факторы.

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

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

Лингвистическая переменная имеет:

  • название, в приведенных выше примерах это «Тело свечи»;
  • множество своих значений, называемых базовым терм-множеством. В нашем случае это свечи «Доджи», «Средняя (обычная)» и «Большая»;
  • множество допустимых значений;
  • синтаксическое правило, описывающее термы с помощью слов естественного языка;
  • семантическое правило, определяющее соответствие между значениями лингвистической переменной и нечетким множеством допустимых значений.

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

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

1. Выбор исходных данных.

2. Определение базы знаний (набора правил).

3. Определение метода нечеткого логического вывода.

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

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

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

Для нечетких множеств, как и для обычных, разработан ряд логических операций. Основными из них являются объединение (нечеткое «ИЛИ») и пересечение (нечеткое «И»). Создан общий подход к выполнению нечетких операций пересечения, объединения и дополнения.

Для построения процесса осуществления нечеткого логического вывода библиотека MQL5 предлагает реализацию двух основных методов: Мамдани (Mamdani) и Сугено (Sugeno).

При использовании метода Мамдани значение выходной переменной задается нечетким термом. Нечеткое правило данного метода можно описать в нижеследующем виде:

где:

  • X вектор входных переменных,
  • Y выходная переменная,
  • a — вектор исходных данных,
  • d — значение выходной переменной,
  • W — весовой коэффициент правила.

В методе Сугено, в отличие от Мамдани, значение выходной переменной задается не нечетким множеством, а линейной функцией от исходных данных. Правило данного метода имеет вид:

где b вектор весовых коэффициентов при свободных членах функции выходного значения.