Кодирование свечных моделей (Часть 3): Частотный анализ односвечных структур
Введение
Финансовые ценовые ряды объединяют множество взаимодействующих факторов — макроэкономические данные, ликвидность, политику, новости и поведение трейдеров, — поэтому графики часто выглядят зашумленными. Тем не менее, движение цен неоднократно приводит к появлению узнаваемых форм свечей и локальных структур. В частях 1–2 мы формализовали это наблюдение: отдельные свечи были преобразованы в конечный алфавит символов (Часть 1), а также разработаны инструменты для перечисления возможных комбинаций символов (Часть 2). Нерешенным оставался практический, основанный на данных вопрос: какие из этих закодированных типов свечей действительно встречаются на реальных рынках, как часто и какие воспроизводимые результаты может использовать практикующий специалист?
Эта статья устраняет данный базовый пробел, предоставляя целенаправленный, воспроизводимый частотный анализ символов отдельных свечей. Целевая аудитория: трейдеры, разработчики алгоритмов и исследователи, которым нужен измеримый рыночный профиль в качестве входных данных для дальнейшего моделирования. Область применения и ограничения: мы анализируем только отдельные символы свечей (однобуквенные паттерны), а не многосвечные последовательности, и рассматриваем варианты Марубозу как единую категорию, а все свечи, не подпадающие под эти определения, относим к неклассифицированной категории, обозначаемой символом подчёркивания (“_”).
Используя выборку из 1500 свечей из GBP/USD и золота (XAUUSD) на таймфреймах H1, M15 и M5, мы: (1) применяем схему кодирования из Части 1 к историческим барам, (2) подсчитываем количество вхождений символов A/G/H/E/a/g/h/e/D/_ и (3) вычисляем абсолютные количества и процентные доли. Результатом является воспроизводимый скрипт в MQL5 и отчет в формате TXT, которые вместе дают: закодированную серию, количество и проценты для каждого символа, а также простые сводные показатели (доминирующие символы, доля неклассифицированных свечей и бычья/медвежья симметрия). Эти измеримые выходные показатели должны служить стабильной основой для следующего этапа: частотного анализа двухбуквенных паттернов и вероятностей переходов.
Частотный анализ широко используется во многих дисциплинах, включая лингвистику, генетику и науку о данных, для выявления доминирующих структур в больших массивах данных. Применение того же принципа к закодированным свечным данным позволяет определить, какие рыночные структуры встречаются наиболее часто, какие являются относительно редкими, и проявляют ли определенные комбинации повторяющееся поведение, которое может потребовать дальнейшего исследования.
Цель
Основная цель этой статьи — провести статистический частотный анализ закодированных свечных паттернов с использованием реальных рыночных данных. В частности, мы исследуем возникновение отдельных свечных структур (односимвольных паттернов) в исторических ценовых рядах.
Используя золото (XAUUSD) и GBPUSD в качестве примеров, мы:
- Преобразуем исторические свечные данные в алфавитную систему кодирования, как в Части 1.
- Извлечем отдельные закодированные символы из закодированной рыночной последовательности.
- Вычислим частоту встречаемости и процентное соотношение каждого символа.
- Сравним распределение паттернов по различным финансовым инструментам.
- Определим преобладающие свечные структуры в наборе данных.
Для достижения этих целей мы разработаем скрипт на языке MQL5, способный автоматически кодировать исторические данные о ценах, извлекать последовательности паттернов, подсчитывать их количество и генерировать статистические сводки.
Результаты этого анализа обеспечат количественную основу для будущих исследований надежности паттернов, вероятностей переходов, анализа условной встречаемости и предсказательного моделирования. Вместо того чтобы рассматривать свечные паттерны исключительно как визуальные образования, их можно рассматривать как измеримые статистические события, поведение которых можно систематически анализировать и сравнивать на разных рынках.
В конечном итоге, частотный анализ служит мостом между генерацией паттернов и статистическим моделированием. Как только будут поняты характеристики появления закодированных свечных структур, трейдеры и исследователи смогут перейти к изучению того, обладают ли часто встречающиеся паттерны пригодными для использования рыночными закономерностями и несут ли редкие паттерны уникальную информационную ценность.
Частотный анализ отдельных свечей
В этом разделе мы рассмотрим частотное распределение отдельных типов закодированных свечей для золота (XAUUSD) и пары GBPUSD на таймфреймах H1, M15 и M5. Цель состоит в том, чтобы выявить доминирующие структуры свечей в закодированном ряду ценового движения и определить, встречаются ли определенные типы свечей чаще, чем другие.
Прежде чем обсуждать результаты, важно уточнить два аспекта схемы кодирования, представленной в Части 1. Во-первых, символ подчеркивания ('_') обозначает неклассифицированные свечи. Это свечи, которые не удовлетворяют ни одному из предопределенных правил классификации бычьих или медвежьих свечей и, следовательно, объединены в одну неклассифицированную категорию.
Во-вторых, класс Марубозу (Часть 1) включает три связанных определения свечей. Они немного различаются, но все демонстрируют сильное направленное тело с минимальным количеством теней или без них; поэтому они рассматриваются как единая категория для кодирования и анализа.
- Закодированная серия GBPUSD
Серия GBPUSD H1
Для пары GBPUSD на часовом таймфрейме в общей сложности 1500 свечей были преобразованы в соответствующие буквенные представления с использованием схемы кодирования, разработанной в Части 1. На рисунке 1 представлен полученный закодированный ценовой ряд, где каждая буква обозначает определённую свечную структуру, идентифицированную по историческим рыночным данным.

Рисунок 1: Закодированная серия GBPUSD H1
На рисунке 1 рынок представлен в виде последовательности закодированных символов, а не в виде традиционных свечных графиков. Такое преобразование позволяет анализировать движение цен с помощью статистических и вычислительных методов. Как обсуждалось ранее, символ подчеркивания (_) обозначает свечи, которые не соответствуют ни одному из заранее заданных критериев классификации бычьих или медвежьих свечей и, следовательно, подпадают под категорию неклассифицированных свечей.
После преобразования свечных данных в символическую форму следующим шагом стало изучение частоты появления каждого типа свечей. Итоги подведены в таблице 1.
Таблица 1: GBPUSD H1 - количество и процент свечей (окно: 1500)
| Тип свечей | Количество | Процент |
|---|---|---|
| Бычий Марубозу 'A' | 310 | 20.67% |
| Бычий волчок 'G' | 86 | 5.73% |
| Бычий пин-бар 'H' | 28 | 1.87% |
| Бычий перевернутый пин-бар 'E' | 50 | 3.33% |
| Медвежий Марубозу 'a' | 311 | 20.73% |
| Медвежий волчок 'g' | 90 | 6.00% |
| Медвежий пин-бар 'h' | 38 | 2.53% |
| Медвежий перевернутый пин-бар 'e' | 48 | 3.20% |
| Доджи 'D' | 8 | 0.53% |
| Неклассифицированные '_' | 531 | 35.40% |
Среди категорий бычьих свечей наибольшую частоту встречаемости показал символ 'A' — 310 случаев, что составляет 20,67% от общей выборки. Далее следуют 'G' с 86 случаями (5,73%), 'E' с 50 случаями (3,33%) и 'H' с 28 случаями (1,87%).
Аналогично, в категориях медвежьих свечей наибольшее количество наблюдений было зафиксировано у свечи 'a' — 311 раз (20,73%), далее следуют 'g' — 90 раз (6,00%), 'e' — 48 раз (3,20%) и 'h' — 38 раз (2,53%). Нейтральная свеча, представленная 'D', встречалась 8 раз, что составляет 0,53% от общего числа свечей в наборе данных.
Неклассифицированная категория свечей '_' зафиксировала 531 случай, что составляет 35,40% от всех наблюдений. Это указывает на то, что более трети проанализированных свечей не соответствуют заранее заданным правилам кодирования и могут потребовать дальнейшего подразделения или уточнения в будущих исследованиях.
Анализ классифицированных типов свечей показывает, что бычьи свечи составили 474 случая (31,60%), а медвежьи — 487 наблюдений (32,46%). Разница между двумя группами относительно невелика, что свидетельствует о сбалансированном распределении бычьего и медвежьего ценового движения на рынке за анализируемый период.
Более детальное изучение соответствующих пар бычьих и медвежьих свечей выявляет высокую степень симметрии. Например, частота встречаемости 'A' и 'a', 'G' и 'g', а также 'E' и 'e' очень схожа. Это почти полное соответствие предполагает, что используемая система кодирования отражает поведение рынка, в значительной степени сбалансированное между восходящими и нисходящими ценовыми движениями.
Учитывая эту наблюдаемую симметрию, разумно предположить, что неклассифицированная совокупность свечей также может демонстрировать аналогичный баланс между бычьими и медвежьими структурами.
Процесс кодирования не присваивает направление неклассифицированным свечам, поэтому 531 неклассифицированный случай можно примерно поровну разделить между бычьими и медвежьими свечами. Это невозможно проверить в рамках существующей схемы, но симметрия в классифицированных категориях подтверждает эту гипотезу.
В целом, частотный анализ показывает, что закодированная рыночная серия обладает относительно сбалансированной бычье-медвежьей структурой. Этот вывод закладывает статистическую основу для последующего анализа многосвечных паттернов, где комбинации закодированных символов могут быть исследованы для определения того, встречаются ли определенные последовательности чаще, чем можно было бы ожидать случайно.
Серия GBPUSD M15
Чтобы выяснить, сохраняются ли частотные характеристики, наблюдаемые на таймфрейме H1, на более низких таймфреймах, тот же анализ был проведен на 1500 свечах GBPUSD с 15-минутного (M15) таймфрейма. Свечи были преобразованы в соответствующие закодированные алфавитные серии, как показано на рисунке 2.

Рисунок 2: Закодированная серия GBPUSD M15
Частотное распределение закодированных типов свечей сведено в таблице 2.
Таблица 2: GBPUSD M15 количество и процент свечей (окно: 1500)
| Тип свечей | Количество | Процент |
|---|---|---|
| Бычий Марубозу 'A' | 306 | 20.40% |
| Бычий волчок 'G' | 77 | 5.13% |
| Бычий пин-бар 'H' | 35 | 2.33% |
| Бычий перевернутый пин-бар 'E' | 44 | 2.93% |
| Медвежий Марубозу 'a' | 314 | 20.93% |
| Медвежий волчок 'g' | 82 | 5.47% |
| Медвежий пин-бар 'h' | 45 | 3.00% |
| Медвежий перевернутый пин-бар 'e' | 44 | 2.93% |
| Доджи 'D' | 13 | 0.87% |
| Неклассифицированные '_' | 540 | 36.00% |
Среди бычьих категорий свечей категория 'A' показала наибольшую частоту — 306 случаев, что составляет 20,40% от общей выборки. Далее следуют 'G' с 77 случаями (5,13%), 'E' с 44 случаями (2,93%) и 'H' с 35 случаями (2,33%).
В категориях медвежьих свечей наиболее часто встречалась 'a' — 314 случаев (20,93%), за ней следовала 'g' — 82 случая (5,47%), 'h' — 45 случаев (3,00%) и 'e' — 44 случая (2,93%).
Нейтральная свеча, представленная 'D', встречалась 13 раз, что составляет 0,87% от общего числа свечей в наборе данных. При этом неклассифицированная категория свечей '_' зафиксировала 540 случаев, что составляет 36,00% от всех наблюдений.
В совокупности категории бычьих свечей составили 462 случая (30,80%), а категории медвежьих — 485 случаев (32,33%). Аналогично анализу H1, разница между количеством бычьих и медвежьих свечей относительно невелика.
Здесь наблюдается та же симметрия, что и в случае GBPUSD H1. Последовательность этой симметрии на таймфреймах H1 и M15 указывает на то, что используемая модель кодирования отражает внутренний баланс между бычьими и медвежьими ценовыми движениями на рынке GBPUSD.
Серия GBPUSD M5
Анализ был дополнительно расширен до 5-минутного (M5) таймфрейма, чтобы определить, остаются ли наблюдаемые частотные характеристики стабильными на более мелком таймфрейме. Как и в случае с предыдущими наборами данных, 1500 свечей были преобразованы в закодированные алфавитные представления, как показано на рисунке 3.

Рисунок 3: Закодированная серия GBPUSD M5
Частотное распределение закодированных типов свечей сведено в таблице 3.
Таблица 3: GBPUSD M5 количество и процент свечей (окно: 1500)
| Тип свечей | Количество | Процент |
|---|---|---|
| Бычий Марубозу 'A' | 329 | 21.93% |
| Бычий волчок 'G' | 71 | 4.73% |
| Бычий пин-бар 'H' | 39 | 2.60% |
| Бычий перевернутый пин-бар 'E' | 43 | 2.87% |
| Медвежий Марубозу 'a' | 337 | 22.47% |
| Медвежий волчок 'g' | 59 | 3.93% |
| Медвежий пин-бар 'h' | 44 | 2.93% |
| Медвежий перевернутый пин-бар 'e' | 44 | 2.93% |
| Доджи 'D' | 46 | 3.07% |
| Неклассифицированные '_' | 488 | 32.53% |
В категориях бычьих свечей доминирующей структурой оставалась 'A', которая встречалась 329 раз, что составляет 21,93% от общего числа случаев. Далее следуют 'G' с 71 случаем (4,73%), 'E' с 43 случаями (2,87%) и 'H' с 39 случаями (2,60%).
Среди категории медвежьих свечей 'a' снова показала наибольшую частоту — 337 случаев (22,47%), за ней следует 'g' с 59 случаями (3,93%). Как 'e', так и 'h', встречались по 44 раза каждая, что составляет 2,93% от общего набора данных.
Нейтральная категория свечей 'D' зафиксировала 46 случаев, что соответствует 3,07% от общего числа. Это представляет собой заметное увеличение по сравнению с наборами данных H1 и M15. Неклассифицированная категория свечей '_' составила 488 случаев (32,53%), что ниже, чем доля, наблюдаемая в наборе данных M15.
Суммарное количество бычьих свечей составило 482 (32,13%), а количество медвежьих — 484 (32,26%), что еще раз демонстрирует удивительно сбалансированное распределение между бычьими и медвежьими рыночными структурами.
Примечательно, что на таймфрейме M5 увеличилось количество нейтральных свечей ('D'). Частота доджи-подобных структур превысила частоту нескольких классифицированных бычьих и медвежьих категорий, включая E/e и H/h. Это говорит о том, что на более низких таймфреймах может быть больше периодов неопределенности или равновесия, когда ни покупатели, ни продавцы не устанавливают явного направленного преимущества в течение одного свечного интервала.
Несмотря на увеличение активности нейтральных свечей, общая бычья-медвежья симметрия остается очевидной. Частота соответствующих пар бычьих и медвежьих свечей продолжает демонстрировать тесное соответствие, подтверждая наблюдения, сделанные как в анализе H1, так и в анализе M15.
В целом, результаты по трем таймфреймам GBPUSD показывают устойчивую статистическую структуру. Преобладание категорий A/a, значительная доля неклассифицированных свечей и почти симметричное распределение бычьих и медвежьих паттернов, по-видимому, являются устойчивыми характеристиками закодированной серии ценового движения на паре GBPUSD. Основное отличие на более младших таймфреймах заключается в увеличении количества нейтральных свечных структур, что может отражать более шумный и неопределенный характер краткосрочных рыночных движений.
- Закодированная серия золота
Изучив частотные характеристики закодированного ряда GBPUSD, мы теперь обращаем внимание на золото (XAUUSD), чтобы определить, существуют ли аналогичные статистические свойства у другого финансового инструмента. Известно, что золото демонстрирует отчетливые характеристики волатильности и динамику рынка по сравнению с основными валютными парами. Поэтому анализ распределения закодированных свечей позволяет оценить надежность используемой системы кодирования для различных классов активов.
Серия XAUUSD H1
Та же методология, что и для GBPUSD, была использована для набора данных по золоту за таймфрейм H1. Всего отобрано 1500 свечей, которые были преобразованы в соответствующие буквенные представления в соответствии со схемой кодирования, представленной в Части 1. На рисунке 4 представлен результирующий закодированный ряд свечей.

Рисунок 4: Закодированная серия XAUUSD H1
Частотное распределение закодированных типов свечей сведено в таблице 4.
Таблица 4: XAUUSD H1 Процент свечей (Окно: 1500)
| Тип свечей | Количество | Процент |
|---|---|---|
| Бычий Марубозу 'A' | 286 | 19.07% |
| Бычий волчок 'G' | 94 | 6.27% |
| Бычий пин-бар 'H' | 27 | 1.80% |
| Бычий перевернутый пин-бар 'E' | 39 | 2.60% |
| Медвежий Марубозу 'a' | 310 | 20.67% |
| Медвежий волчок 'g' | 108 | 7.20% |
| Медвежий пин-бар 'h' | 44 | 2.93% |
| Медвежий перевернутый пин-бар 'e' | 33 | 2.20% |
| Доджи 'D' | 0 | 0.00% |
| Неклассифицированные '_' | 559 | 37.27% |
Среди бычьих категорий свечей категория 'A' показала наибольшую частоту — 286 случаев, что составляет 19,07% от общей выборки. Далее следуют 'G' с 94 случаями (6,27%), 'E' с 39 случаями (2,60%) и 'H' с 27 случаями (1,80%).
В категориях медвежьих свечей наиболее часто встречалась 'a' — 310 случаев (20,67%), за ней следовала 'g' — 108 случаев (7,20%), 'h' — 44 случая (2,93%) и 'e' — 33 случая (2,20%).
Интересно, что в анализируемой выборке не было обнаружено ни одной нейтральной свечи ('D'). Неклассифицированная категория '_' составила 559 случаев, что составляет 37,27% от набора данных, что является самым высоким показателем на данный момент.
Агрегирование классифицированных типов свечей выявило 446 бычьих свечей (29,73%) и 495 медвежьих свечей (33,00%). Хотя медвежьи структуры встречались чаще, чем бычьи, разница в 49 случаев составляет лишь небольшую часть от общей выборки. Следовательно, общее распределение остается относительно сбалансированным.
Сравнение соответствующих пар бычьих и медвежьих свечей выявляет устойчивую степень симметрии. Частота встречаемости A/a, G/g, E/e и H/h остается близкой, несмотря на незначительные вариации. Это наблюдение предполагает, что восходящие и нисходящие движения цен происходят со схожими структурными характеристиками. Учитывая этот баланс, разумно расширить ранее выдвинутую гипотезу о том, что неклассифицированная совокупность свечей также приблизительно равномерно распределена между бычьими и медвежьими структурами.
Серия XAUUSD M15
Чтобы исследовать, сохраняются ли статистические свойства, наблюдаемые на таймфрейме H1, на более младшем таймфрейме, анализ был повторен с использованием 1500 свечей золота с таймфрейма M15. На рисунке 5 представлен закодированный ряд свечей.

Рисунок 5: Закодированная серия XAUUSD M15
Частотное распределение закодированных символов сведено в таблице 5.
Таблица 5: XAUUSD M15 Количество и процент свечей (Окно: 1500)
| Тип свечей | Количество | Процент |
|---|---|---|
| Бычий Марубозу 'A' | 317 | 21.13% |
| Бычий волчок 'G' | 89 | 5.93% |
| Бычий пин-бар 'H' | 33 | 2.20% |
| Бычий перевернутый пин-бар 'E' | 39 | 2.60% |
| Медвежий Марубозу 'a' | 324 | 21.60% |
| Медвежий волчок 'g' | 90 | 6.00% |
| Медвежий пин-бар 'h' | 34 | 2.27% |
| Медвежий перевернутый пин-бар 'e' | 41 | 2.73% |
| Доджи 'D' | 2 | 0.13% |
| Неклассифицированные '_' | 531 | 35.40% |
В категориях бычьих свечей снова доминирующей структурой стала 'A', которая встречалась 317 раз, что составляет 21,13% от общего числа случаев. Далее следуют 'G' с 89 случаями (5,93%), 'E' с 39 случаями (2,60%) и 'H' с 33 случаями (2,20%).
В категориях медвежьих свечей наиболее часто встречающимся оставалась категория 'a' — 324 случая (21,60%), за ней следовали 'g' — 90 случаев (6,00%), 'e' — 41 случай (2,73%) и 'h' — 34 случая (2,27%).
Нейтральная категория свечей ('D') встречалась всего 2 раза (0,13%), что указывает на то, что структуры типа 'неопределенность' остаются относительно редкими в наборе данных Gold M15. Неклассифицированная категория '_' составила 531 случай (35,40%).
При группировке по направлению рынка бычьи свечи встречались 478 раз (31,86%), а медвежьи — 489 раз (32,60%). Разница между двумя группами составила всего 11 случаев, что составляет менее 1% от общей выборки.
Этот результат предоставляет еще более убедительные доказательства бычье-медвежьей симметрии, чем та, которая наблюдалась в наборе данных H1. Частота появления соответствующих пар бычьих и медвежьих свечей остается практически одинаковой, что свидетельствует о том, что закодированная структура рынка поддерживает стабильное равновесие между активностью покупателей и продавцов. Следовательно, предположение о приблизительном балансе бычьих и медвежьих свечей в неклассифицированной категории остается правдоподобным для таймфрейма M15.
Серия XAUUSD M5
Анализ был дополнительно расширен до таймфрейма M5, чтобы определить, сохраняются ли наблюдаемые статистические характеристики при более детальном рассмотрении рынка. Как и ранее, 1500 свечей золота были преобразованы в соответствующие закодированные буквенные серии, как показано на рисунке 6.

Рисунок 6: Закодированная серия XAUUSD M5
Частотное распределение закодированных типов свечей сведено в таблице 6.
Таблица 6: XAUUSD M5 Количество и процент свечей (Окно: 1500)
| Тип свечей | Количество | Процент |
|---|---|---|
| Бычий Марубозу 'A' | 302 | 20.13% |
| Бычий волчок 'G' | 97 | 6.47% |
| Бычий пин-бар 'H' | 41 | 2.73% |
| Бычий перевернутый пин-бар 'E' | 34 | 2.27% |
| Медвежий Марубозу 'a' | 338 | 22.53% |
| Медвежий волчок 'g' | 99 | 6.60% |
| Медвежий пин-бар 'h' | 51 | 3.40% |
| Медвежий перевернутый пин-бар 'e' | 37 | 2.47% |
| Доджи 'D' | 2 | 0.13% |
| Неклассифицированные '_' | 499 | 33.27% |
В бычьих категориях доминирующим оставался паттерн 'A' с 302 случаями (20,13%), за ним следовали 'G' с 97 случаями (6,47%), 'H' с 41 случаем (2,73%) и 'E' с 34 случаями (2,27%). В медвежьих категориях наибольшую частоту встречаемости показал паттерн 'a' с 338 случаями (22,53%), за ним следовали 'g' с 99 случаями (6,60%), 'h' с 51 случаем (3,40%) и 'e' с 37 случаями (2,47%). Нейтральная категория свечей ('D') снова появилась всего 2 раза (0,13%), в то время как неклассифицированная категория '_' составила 499 случаев (33,27%), что представляет собой меньшую долю, чем наблюдалось в наборах данных таймфреймов H1 и M15.
Общее количество бычьих свечей составило 474 (31,60%), по сравнению с 525 медвежьими (35,00%). Хотя количество медвежьих свечей превысило количество бычьих на 51, эта разница остается относительно небольшой, если рассматривать ее в контексте общей выборки в 1500 случаев.
Частота соответствующих пар бычьих и медвежьих свечей продолжает демонстрировать устойчивую степень симметрии. Хотя незначительные отклонения становятся более очевидными на этом таймфрейме, общая структура остается сбалансированной, что позволяет предположить, что наблюдаемые различия в значительной степени отражают краткосрочные колебания рынка, а не устойчивую направленную тенденцию.
Последовательность этой симметрии на таймфреймах H1, M15 и M5 дополнительно подтверждает гипотезу о том, что неклассифицированная совокупность свечей примерно поровну разделена между бычьими и медвежьими структурами. По мере увеличения размера выборки совокупное распределение, по-видимому, сходится к сбалансированному представлению активности покупок и продаж.
Сравнительный анализ: GBPUSD и золото
Таблица 7: Сравнение GBPUSD и золота
| Показатель | GBPUSD H1 | Золото H1 | GBPUSD M15 | Золото M15 | GBPUSD M5 | Золото M5 |
|---|---|---|---|---|---|---|
| 'A '+ 'a' % | ~41.4 | ~39.7 | ~41.3 | ~42.7 | ~44.4 | ~42.7 |
| Бычий % | 31.60 | 29.73 | 30.80 | 31.86 | 32.13 | 31.60 |
| Медвежий % | 32.46 | 32.33 | 32.33 | 32.60 | 32.26 | 35.00 |
| Нейтральный 'D' % | 0.53 | 0.00 | 0.87 | 0.13 | 3.07 | 0.13 |
| Неклассифицированный % | 35.40 | 37.27 | 36.00 | 35.40 | 32.53 | 33.27 |
В целом, наборы данных по золоту похожи на данные по паре GBPUSD. На всех трех таймфреймах преобладают A/a, G/g обычно занимают второе место, а частоты бычьих и медвежьих структур практически совпадают. Это говорит о том, что схема кодирования улавливает структурные свойства, проявляющиеся на разных рынках. Такая согласованность укрепляет уверенность в методологии кодирования и обеспечивает прочную основу для последующего анализа частоты многосвечных паттернов. Неклассифицированные свечи стабильно высоки (32–37%) на всех таймфреймах и инструментах. Это отражает строгость наших пороговых значений из Части 1. Значительное меньшинство свечей не соответствует идеализированным Марубозу или другим определенным типам свечей. Их не следует игнорировать; функцию CandleType() можно расширить, включив в неё другие типы.
Практические выводы для трейдеров
С точки зрения торгового подхода, основанного на частотном анализе, данные показывают, что сосредоточение внимания на паттернах 'A' и 'a' (сильные свечи, близкие к марубозу) обеспечивает наибольшее количество торговых возможностей. Однако, поскольку они очень распространены, при использовании по отдельности они могут генерировать множество ложных сигналов. Напротив, паттерны, включающие 'H', 'h' или 'D', статистически редки — торговые стратегии, основанные на них, будут иметь мало исторических примеров для бэктестирования и вряд ли будут приводить к частым входам в сделку.
Почти симметричная частота бычьих и медвежьих сигналов также подчеркивает важность строгого управления рисками: на большой выборке рынок не отдает предпочтение ни одной из сторон. Любое предполагаемое "преимущество" от свечного паттерна должно быть обусловлено его контекстным расположением (например, поддержка/сопротивление, фаза тренда), а не простым дисбалансом направления.
Структура кода
Для проведения частотного анализа закодированных свечных паттернов был разработан набор пользовательских структур и функций. Программа сканирует исторические свечные данные, преобразует каждую свечу в соответствующий ей буквенный символ, подсчитывает количество вхождений каждого символа, вычисляет частотную статистику и, наконец, сохраняет результаты в выходной файл.
Структура CandleCounts - это пользовательская структура данных для хранения информации о каждом закодированном типе свечи. Она хранит код свечи, количество раз, когда этот код появляется в закодированной серии.
//+------------------------------------------------------------------+ //| Structure to hold candle type counts | //+------------------------------------------------------------------+ struct CandleCounts { int A; // bullish marubozu/Long/short int G; // bullish spinning top int H; // bullish pinbar int E; // bullish inverted pinbar int a; // bearish marubozu/Long/short int g; // bearish spinning top int h; // bearish pinbar int e; // bearish inverted pinbar int D; // doji int zero; // unclassified (_) int total; };
Функция CandleType() отвечает за преобразование свечи в закодированное буквенное представление. Функция вычисляет ключевые свойства свечи, включая размер тела свечи, длину верхней и нижней тени. Используя правила классификации, установленные в Части 1, функция оценивает эти характеристики и присваивает свече соответствующий буквенный символ. Если свеча не удовлетворяет ни одному из заранее заданных правил классификации, функция присваивает символ подчеркивания '_' для обозначения неклассифицированной свечи. Функция принимает позицию свечи в качестве входных данных и возвращает соответствующий закодированный символ в виде строки.
//+------------------------------------------------------------------+ //| Candle Type labeling function | //+------------------------------------------------------------------+ string CandleType(int shift) { //--- Get price data for the specified candle double open = iOpen(NULL, 0, shift); double close = iClose(NULL, 0, shift); double high = iHigh(NULL, 0, shift); double low = iLow(NULL, 0, shift); //--- Calculate candle components double body = MathAbs(close - open); double upperWick = high - MathMax(open, close); double lowerWick = MathMin(open, close) - low; //--- Handle bullish candles if(close > open) { if(body > 1.5 * upperWick && body > 1.5 * lowerWick) return "A"; // long body / marubozu if(2 * body < upperWick && 2 * body < lowerWick) return "G"; // spinning top if(lowerWick > 2.5 * body && lowerWick > 2 * upperWick) return "H"; // pinbar if(upperWick > 2.5 * body && upperWick > 2 * lowerWick) return "E"; // inverted pinbar } //--- Handle bearish candles else if(close < open) { if(body > 1.5 * upperWick && body > 1.5 * lowerWick) return "a"; if(2 * body < upperWick && 2 * body < lowerWick) return "g"; if(lowerWick > 2.5 * body && lowerWick > 2 * upperWick) return "h"; if(upperWick > 2.5 * body && upperWick > 2 * lowerWick) return "e"; } else if(close == open) return "D"; // doji //--- Return _ if no conditions met return "_"; }
Функция CountFromSeries() выполняет операцию подсчета частоты. После преобразования исторического ценового ряда в закодированную буквенную последовательность эта функция последовательно просматривает эту строку по одному символу и записывает появление каждого типа свечей.
Перед началом подсчета все счетчики сбрасываются до нуля, чтобы гарантировать, что предыдущие вычисления не повлияют на текущий анализ. Далее функция определяет длину закодированной серии и перебирает каждый символ, обновляя соответствующий счетчик частоты. Результат работы этой функции служит основой для расчета частот и их процентного соотношения.
//+------------------------------------------------------------------+ //| Count from an existing series string | //+------------------------------------------------------------------+ CandleCounts CountFromSeries(string series) { CandleCounts c; ZeroMemory(c); int len = StringLen(series); c.total = len; for(int i = 0; i < len; i++) { string ch = StringSubstr(series, i, 1); (ch == "A") ? c.A++ : (ch == "G") ? c.G++ : (ch == "H") ? c.H++ : (ch == "E") ? c.E++ : (ch == "a") ? c.a++ : (ch == "g") ? c.g++ : (ch == "h") ? c.h++ : (ch == "e") ? c.e++ : (ch == "D") ? c.D++ : c.zero++ ; //ch == "_") } return c; }
Функция FormatLine() отвечает за форматирование выходных записей в единообразный и удобочитаемый формат. Для каждого типа свечи функция объединяет метку свечи, закодированный символ, частоту и процент появления в заранее определенный текстовый формат, подходящий для отображения и вывода в файл. Использование специальной функции форматирования повышает читаемость кода и гарантирует, что все выходные записи имеют единую структуру.
//+------------------------------------------------------------------+ //| Format count + percentage line | //+------------------------------------------------------------------+ string FormatLine(string label, string code, int count, int total) { double pct = (total > 0) ? (count * 100.0 / total) : 0.0; return StringFormat("%-20s (%s): %3d (%5.2f%%)", label, code, count, pct); }
Функция SaveMarketStructureToFile() отвечает за генерацию итогового отчета.
Функция выполняет следующие задачи:
- Создает имя выходного файла.
- Открывает текстовый файл для записи.
- Проверяет, успешно ли открыт файл.
- Записывает результаты анализа частоты в файл.
- Закрывает файл после сохранения всех записей.
Если файл нельзя открыть, функция немедленно завершает работу и возвращается без записи каких-либо данных. В противном случае она продолжает генерацию полного отчета.
После успешного завершения отображается следующее сообщение: Результаты сохранены в файл.
Эта функция является заключительным этапом аналитического пайплайна, сохраняя сгенерированную статистику для дальнейшего анализа.
//+------------------------------------------------------------------+ //| Write series + counts + percentages to TXT file | //+------------------------------------------------------------------+ void SaveMarketStructureToFile(string series, int nlookback, string filename = "") { //--- Build default filename if none provided if(StringLen(filename) == 0) filename = _Symbol + "Mdata2.txt"; //--- opru/create file int handle = FileOpen(filename, FILE_TXT | FILE_WRITE); //--- check if file opened successfully if(handle == INVALID_HANDLE) { Print("Failed to open file: ", filename); return; } //--- 1) Write the continuous series string FileWriteString(handle, "=== MARKET CODED STRUCTURE " + TimeFrameToString(Period()) + " SERIES ===\n"); FileWriteString(handle, series); FileWriteString(handle, "\n\n"); //--- 2) Generate counts CandleCounts c = CountFromSeries(series); //--- 3) Build report with percentages string report = "=== CANDLE COUNTS & PERCENTAGES (Window: " + IntegerToString(nlookback) + ") ===\n" + "----------------------------------------------------------------\n" + FormatLine("Bullish Marubozu", "A", c.A, c.total) + "\n" + FormatLine("Bullish SpinTop", "G", c.G, c.total) + "\n" + FormatLine("Bullish Pinbar", "H", c.H, c.total) + "\n" + FormatLine("Bullish Inv.Pinbar", "E", c.E, c.total) + "\n" + FormatLine("Bearish Marubozu", "a", c.a, c.total) + "\n" + FormatLine("Bearish SpinTop", "g", c.g, c.total) + "\n" + FormatLine("Bearish Pinbar", "h", c.h, c.total) + "\n" + FormatLine("Bearish Inv.Pinbar", "e", c.e, c.total) + "\n" + FormatLine("Doji", "D", c.D, c.total) + "\n" + FormatLine("Unclassified", "_", c.zero, c.total) + "\n" + "----------------------------------------------------------------\n" + StringFormat("Total: %-3d (100.00%%)", c.total); //--- 4) Write report to file FileWriteString(handle, report); //--- close file FileClose(handle); //--- output message MessageBox(StringFormat("Results saved to file: %s", filename), "Prompt"); }
Ход выполнения программы
Анализ начинается со сканирования исторических свечных данных выбранного финансового инструмента и таймфрейма. Каждая свеча передается в функцию CandleType(), где она преобразуется в соответствующий ей буквенный символ в соответствии с правилами кодирования, определенными в Части 1. Эти символы объединяются для формирования закодированной рыночной серии.
После генерации закодированной серии вызывается функция SaveMarketStructureToFile() для создания окончательного статистического отчета. Внутри этой функции функция CountFromSeries() сканирует закодированную последовательность и записывает частоту каждого типа свечей. Затем абсолютные количества преобразуются в процентные значения.
Далее функция FormatLine() приводит каждую запись к стандартному формату вывода, содержащему метку свечи, закодированный символ, частоту и процентные показатели.
Наконец, функция SaveMarketStructureToFile() записывает отформатированные результаты в текстовый файл и закрывает его по завершении работы. Когда процесс успешно завершается, программа отображает сообщение: Результаты сохранены в файл.
Этот рабочий процесс можно кратко описать следующим образом: 
Рисунок 7: Рабочий процесс
Демонстрация использования кода
На рисунках 8–10 показано выполнение кода на паре GBPJPY на таймфреймах H1, M15 и M5. Закодированные статистические данные позволяют проводить сравнение с предыдущими исследованиями для принятия более обоснованных решений.

Рисунок 8: Закодированная серия GBPJPY H1 и статистика

Рисунок 9: Закодированная серия GBPJPY M15 и статистика

Рисунок 10: Закодированная серия GBPJPY M5 и статистика
Заключение
В данном исследовании схема символического кодирования была преобразована в практический, воспроизводимый этап профилирования рынка. Обработав периоды в 1500 баров для GBPUSD и XAUUSD на таймфреймах H1, M15 и M5, мы получили таблицы частоты для каждого символа, демонстрирующие устойчивые паттерны:
- Категория Марубозу (A/a) является наиболее часто встречающейся среди инструментов и таймфреймов. Категория волчок обычно является второй по распространенности.
- Суммарные показатели бычьих и медвежьих категорий близки во всех выборках, что подтверждает гипотезу о почти симметрии в классифицированной совокупности.
- Значительная часть (≈32–37%) свечей не классифицирована (“_”), что отражает строгие пороговые значения классификации; этот флаг следует интерпретировать как сигнал к корректировке правил или расширению таксономии при необходимости.
- На более младших таймфреймах (M5) в некоторых выборках наблюдается увеличение частоты появления нейтральных/доджи свечей, что согласуется с более высокой краткосрочной нерешительностью и шумом.
Практические результаты: скрипт в MQL5 и отчет в формате TXT позволяют (а) получить закодированную строку символов для любого символа/TF, (б) получить количество и процентное соотношение для A/G/H/E/a/g/h/e/D/_ и (в) использовать эти профили в качестве объективных входных параметров для дальнейшего тестирования. Важно отметить, что частота отдельных свечей сама по себе не является торговым преимуществом — любая гипотеза о предсказуемости требует контекстных фильтров (тренд, поддержка/сопротивление, позиция в последовательностях) и тестирования вне выборки.
Важно отметить, что количество свечей, используемых в анализе, не ограничено 1500. В зависимости от цели исследования трейдеры и исследователи могут анализировать либо меньшее, либо большее количество свечей, регулируя входной параметр Lookback, который определяет размер выборки, используемой в частотном анализе.
Следующий шаг: расширить этот аналитический пайплайн на последовательные двухсимвольные паттерны и статистику переходов. Эти частоты на уровне последовательностей и условные вероятности являются естественным продолжением, необходимым для оценки надежности паттернов и начала построения прогностических моделей.
Перевод с английского произведен MetaQuotes Ltd.
Оригинальная статья: https://www.mql5.com/en/articles/23009
Предупреждение: все права на данные материалы принадлежат MetaQuotes Ltd. Полная или частичная перепечатка запрещена.
Данная статья написана пользователем сайта и отражает его личную точку зрения. Компания MetaQuotes Ltd не несет ответственности за достоверность представленной информации, а также за возможные последствия использования описанных решений, стратегий или рекомендаций.
Интеграция MQL5 с пакетами обработки данных (Часть 6): Объединение рыночной обратной связи и адаптации модели
Изучение стандартной библиотеки MQL5 (Часть 12): Мультитаймфреймный дашборд на основе составного показателя
Индикатор Sigma Score для MetaTrader 5: Простой детектор статистических аномалий
Нейросети в трейдинге: Двухуровневая адаптация торговой политики (Банк навыков)
- Бесплатные приложения для трейдинга
- 8 000+ сигналов для копирования
- Экономические новости для анализа финансовых рынков
Вы принимаете политику сайта и условия использования