Модель Технического Анализа

Следующая статья описывает аналитическую модель TS_DayTrader,
использованную в советнике Frankenstein.

Модель легла в основу индикатора iFrankenstein.ex5.

Мы опишем саму теоретическую модель, а также её непосредственное воплощение и
самые важные ассоциированные параметры.

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



Обзор Фреймворка

Система способна обнаруживать ряд паттернов.

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

  1. Key Level - Ключевой Уровень
  2. Test Level - Уровень Теста
  3. Сandle-pattern - Свечной паттерн
  4. Divergence - Дивергенция

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

Цель системы - торговля либо по цене "скачущей" внутри границ канала,
либо торговля прорыва границ канала.

Комплексная модель паттерна может включать в себя различные паттерны и их комбинации, например:


Фракталы

Большинство задействованных в TS_DayTrader моделей технического анализа используют C_iFR -
Модуль Фракталов - как главный источник данных.
Советник обычно запускает несколько C_iFR модулей(отдельно для каждого паттерна),
каждый может быть индивидуально настроен со своим таймфреймом.

C_iFR конструктивно схожий с 'Fractals.ex5' - хорошо известным индикатором MQL5:
Fractals

Для просмотра данных C_iFR из движка iFrankenstein установите 'Show fractal lines(C_iFR)' в значение true:
Fractals
Каждая фрактальная точка данных отмечает локальный ценовой экстремум - последний локальный ценовой минимум или максимум.

В отличие от 'Fractals.ex5', C_iFR может виртуализировать высшие таймфреймы используя
данные с таймфрейма основного окна графика.
Виртуализированный таймфрейм устанавливается при помощи параметра 'TF for the KeyLevels Fractals':
KL_config

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

iFrankenstein использует Ключевые Уровни для отслеживания, отображения и торговли горизонтальных каналов.


Ключевые Уровни

Ключевой Уровень, на графике, - это горизонтальная линия нарисованная от последнего известного ценового максимума или минимума.
(определяется по последнему фракталу из модуля C_iFR).
2 Ключевых Уровня формируют горизонтальный канал:
KeyLevels

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

iFrankenstein модель определяет 2 Ключевых Уровня: KLS1 и KLR1(или КУП1 и КУС1).
KLS1(КУП1) также известен как "уровень поддержки", KLR1(КУС1) как "уровень сопротивления".

Иногда называются как "медвежий" и "бычий".
Они зеркалируют друг друга.
Оба могут быть использованы для создания сигналов как на покупку BUY, так и на продажу - SELL.
Трейдер действует основываясь на предположении, что цена либо "коснется" уровня, отскочит от него и развернется,
или "пробьёт" его и продолжит движение в том же направлении, продолжая больший тренд.

Отслеживание реакций рынка на формирование каналов -
центральный принцип технического анализа в рамках теоретической модели TS_DayTrader.


Ключевой Уровень Поддержки(KLS1 или КУП1)

KLS1, в первую очередь, ассоциирован с аккумуляцией BUY ордеров на покупку.
По умолчанию, на графике отрисовывается как красная горизонтальная линия:
KeyLevels_KUP1
KLS2 отрисовывается тоньшей линией.
Вы можете включить отображение фрактальных данных из C_iFR(параметр 'Show fractal lines(C_iFR)'), чтобы увидеть
фрактальную точку(последний минимум или максимум цены), на которой был построен Ключевой Уровень:
KeyLevels_KUP1


Ключевой Уровень Сопротивления(KLR1 или КУС1)

Часто, множество SELL ордеров на продажу аккумулируются рядом с KLR1 уровнем.
Этот основной уровень сопротивления отрисовывается на графике как синяя горизонтальная линия:
KeyLevels_KUS1
KLR2 отрисовывается параллельно KLR1 тоньшей линией.
Также как и для KLS1, вы можете отобразить данные фрактального модуля для KLR1.
Установите 'Show fractal lines(C_iFR)' в значение true, чтобы увидеть фрактальные данные:
KeyLevels_KUS1


Тесты Ключевого Уровня

"Тест Ключевого Уровня" - проваленная попытка цены "пробить" Ключевой Уровень.
В зависимости от входных параметров, Тест Ключевого Уровня(KLT)
опредён либо как любая свеча(бар), входящая в область KLS1-KLS2 или KLR1-KLR2,
либо как серия бычих и потом медвежих баров, входящая в выше упомянутые области KLS1-KLS2 или KLR1-KLR2, и затем выходящая из них.

На следующем графике 9-ть KLT:
KLS12

Параметр 'Tests area width, ticks' определяет ширину области Ключевого Уровня,
чувствительной к Тесту Ключевого Уровня 'KLevel Test'(область KLS1-KLS2 или KLR1-KLR2).

Параметр 'Minimal KeyLevels Tests number(0 = OFF)' устанавливает минимальное разрешенное количество Тестов Ключевого Уровня для паттерна.
Если это условие не удовлетворяется - паттерн игнорируется системой.

'Tests structure' - Структура Теста, минимальное количество баров обратного направления. Количество баров обратного направления(по open-close),
требующееся для подтверждения Теста. "Противоположные" бары должны быть расположены серийно, рядом друг с другом или разделенные "доджиками" -
паттернами, похожими на '+', с open=сlose равными ценами.

В следующем примере, 1 Ключевой Уровень со Структорой=2. Это означает, что
на графике есть как минимум 2 следующих друг за другом бычих бара, которые вошли в область KLS1-2:
KLT_s2


Уровни Теста

Когда Ключевой Уровень пробивается, для свечных моделей 1-8,
на графике появляются "Уровни Теста".
Для моделей BSB-MSB(9-10) появляются т.н. "Зоны Прибыли" ('Profit Zones').

Уровни Теста не появляются в случае, если условия для Тестов Ключевого Уровня не удовлетворены.


PUT1

PUT1 - это 'Уровень Теста'.
Он символизирует Ключевой Уровень(определенный предудыщим ценовым экстремумом),
который был пробит ценовым движением:


PUT1

PUT2

PUT2 - также 'Уровень Теста', сходный с PUT1,
но он представляет собой противоположный предыдущий экстремум(противоположная граница текущего канала):
PUT2

Для "бычего" рынка применима та же логика, лишь только визуально отрисовка меняется с синего на красный,
и зеркально строится позиция:


PUT12_b

Фрактальные Уровни Теста

Кроме простых Уровней Теста, основанных на границах канала,
iFrankenstein включает в свою модель Фрактальные Уровни Теста.
Эти уровни строятся на основе предыдущих фрактальных точек из ассоциированного модуля C_iFR.
Используются фракталы, обнаруженные сразу перед пробитием Ключевого Уровня и формированием новых PUT1,2
(самые последние известные на момент пробития).


FUT1,FUT2

'FUT1' символизирует самый последний(самый свежий) фрактал с установленного таймфрейма
'FUT2' это более старый фрактал, предыдущий.
FUT12\
С отображенными данными из C_iFR вы можете увидеть фактические ценовые пики,
сформировавшие фракталы:
FUT12_exp


Настройка

В iFrankenstein, для каждого из 10 паттернов существует отдельный блок параметров,
ассоциированных с Ключевыми Уровнями:


KL_params

Параметры Ключевых Уровней и Уровней Теста:

10 Базовых Паттернов

Система различает 10 моделей свечных паттернов, идентифицирующих ценовые скачки.
DD,DB,SD,SB,RD,RB,SSD,SSB - индексы 1-8 - модели 'треугольники', символизирующие специфические области волатильности, формирующие т.н. "верха" и "ямы".
BSB,MSB - 9-10 - паттерн типа 'СтартБар'. Эта модель состоит из специфической серии баров, обнаруженных в пределах "Зоны Выгоды".

5 паттернов сигнализируют сделки на продажу, другие 5-ть на покупку. Они являются зеркальными копиями друг друга.

Покупка BUY: DD,SD,RD,SSD,BSB
Продажа SELL: DB,SB,RB,SSB,MSB

Каждая модель паттерна и все ассоциированные с ней модули могут быть активированы или полностью деактивированы при помощи параметра 'ON\OFF':
DD

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

Каждый из 10 паттернов, будучи завершенным, определяет Точку Входа - бар и цену
входа в рынок(открытия сделки).

Паттерны можно использовать одиночно.
Мы рекомендуем совмещать их с Ключевыми Уровнями и Уровнями Теста - это более продуктивная конфигурация.

Сложные Паттерны

Когда паттерны используются совместно с Ключевыми Уровнями и Уровнями Теста, торговля разрешается и
Точка Входа создаётся только в случае, если левое ребро "треугольника" расположено на определенном Уровне Теста(простом или фрактальном, PUT1,2 или FUT1,2).
(в случае "треугольных" паттернов 1-8)

В следующем примере некоторые DD паттерны не активны(отрисованы серым цветом),
но один активен - он был "пробит" насквозь Уровнем Теста PUT1:
TA_not_active


Паттерны 1-8:

DD

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

DD

DB

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

DB

SD

SD - "Слабое Дно" или СД.
Сигнал на покупку.
Отображается на графике синим треугольником с лейблом "SD" под ним:

SD

SB

SB - "Слабая Вершина" или СВ.
Сигнал на продажу.
Отрисовывается красным треугольником с лейблом "SB" под ним.

SB

RD

RD - "Разворотное Дно", или РД.
Сигнал на покупку.
Отрисовка синим с лейблом "RD":
RD

RB

RB - "Разворотная Вершина", или РВ.
Сигнал на продажу.
Отрисовка красным с лейблом "RB":

RB
RD,RB Уровень Коррекции

RD(и RB) обладает дополнительным параметром - 'CL(Correction Level)' - Уровень Коррекции:
RD_cl

В следующем примере, линия 1.2
схематически отображает Уровень Коррекции равный 90%:
RD_cl2
Расстояние T.1 - T.2 (высота левого ребра "треугольника") составляет 100%.

Модуль Уровня Коррекции действует как фильтр.
Если цена T.3, low бара, расположена ниже цены Уровня Коррекции -
модель паттерна считается завершенной и одобряется, в ином случае -
модель паттерна считается незавершенной и не обрабатывается дальше.

SSD

SSD - "Сложное Слабое Дно".
Сигнал на покупку.
Отображается как синий треугольник с лейблом "SSD":

SSD

SSB

SSB - "Сложная Слабая Вершина".
Сигнал на продажу.
Отображается как красный треугольник с лейблом "SSB":

SSB

Высота Паттерна, Pattern Height

Все "треугольные" паттерны обладают 'Pattern maximal height' и 'Pattern minimal height' параметрами, они действуют как простые фильтры:
Pattern_height
"Pattern Height", высота паттерна, это высота левого ребра треугольника:
Pattern_height2
Паттерны, если слишком большие или слишком маленькие, не отображаются на графике и не обрабатываются.

iBB

Кастомный Bollinger Bands - iBB - лежит в основе "рецепта" паттернов 1-8 ('треугольников'), это часть их модели.
iBB
Динамика индикатора используется для определения начала паттерна.

Для каждого из паттернов отведена отдельная секция параметров iBB:
iBB
Для калибровки и оптимизации iBB используйте входные параметры:

Бар B.

Отдельно стоит отметить фильтр, настраиваемый параметром "bar B", действующий как базовый фильтр против "проскальзывания" и фильтр позиции.
Бар B. ("bar B") - имя бара, которым было сформировано разворотное движение внутри паттерна.

barB

Простым языком, высота левого ребра треугольника определяется как 100%.
Если Бар B.(бар, предшествующий Точку Входа) превышает ценовой уровень, установленный
параметром 'Check bar B', - торговля запрещается.

Пример паттерна с баром B, удовлетворяющим требование параметра:
barB_good

В следующем примере, "бар B" слишком высок - цена превысила разрешенные 50%.
По этой причине торговля запрещена:
barB_bad

Patterns 9-10:

BSB

BSB - "Бычий Старт Бар", БСБ.
Сигнал на покупку.
Отображается на графике как синеватый прямоугольник, следующий за проколом Ключевого Уровня Сопротивления:

BSB

MSB

MSB - "Медвежий Старт Бар", МСБ.
Сигнал на продажу.
Отображается на графике как красноватый прямоугольник, следующий за проколом Ключевого Уровня Поддержки:

MSB

Зона Выгоды

Оба паттерна - MSB и BSB - начинаются с прокола ключевого уровня.
Как только происходит пробитие Ключевого Уровеня, при соблюдении условий для Ключевых Уровней(Структура Тестов),
на графике появляется Зона Прибыли(красноватый или синеватый прямоугольник):
XSB_start

Зона Выгоды настраивается параметрами под категорией "Profit Zone" для BSB и MSB:
XSB_conf
Время Жизни устанавливается в количестве баров.

Значение индикатора ATR(Average True Range) в момент пробития Ключевого Уровня
используется для определения границ Зоны Выгоды. Значение умножается на коэффициенты PZ-, PZ+:
ProfitZone

PZ- level устанавливает минимальную цену.
PZ+ level устанавливает максимальную цену.
Если какая-либо свеча закрывается снаружи этого диапазона - паттерн отфильтровывается.

iSTB

Модели паттернов BSB, MSB включают в себя сигналы от кастомного индикатора "StarBar" (iSTB).
StartBar основан на iTrendDetector, он обладает теми же входными параметрами:
StartBar
StartBar2

BSB, MSB триггер

Схема паттернов BSB и MSB:
1) Пробитие Ключевого Уровня
2) Формирование Зоны Выгоды
3) Ротация Старт Бара

Ротация Старт Бара - смена сигнала Старт Бара и сигнализирование в противоположном направлении.

Ротация должна произойти в пределах Зоны Выгоды(ранее определенной параметрами ZV-, ZV+).

Торговый сигнал создаётся в момент, когда завершается ротация Старт Бара, согласно
данным с iSTB(StartBar индикатор, обратите внимание на свечи, закрашенные жёлтым или зелёным цветом):
XSB_rotation

Завершение зеленой серии баров отмечено первым жёлтым баром. Поверх второго жёлтого бара
нарисован торговый сигнал; сформировался полный паттерн(пробит Ключевой Уровень и произошла ротация Старт Бара).
Таким образом, торговля была активирована(сработал триггер).

BSB, MSB Ретест Ключевого Уровня

Если параметр 'Require KeyLevels retest with bars rotation' установлен как true,
ротация должна заново пробить(протестировать) Ключевой Уровень ценой high или low одного из баров:
XSB_retest
Пример с успешным Ретестом Ключевого Уровня, обратите внимание на зелёные бары(по данным StartBar1.02),
пробивающие предыдущий Ключевой Уровень снова, в противоположном направлении:
XSB_retest2
В следующем случае, Ретеста Кл.Уровня не произошло, поэтому торговый сигнал так и не был сформирован.
XSB_retest3


iSIG

Каждый паттерн, когда завершён, производит Точку Входа, Entry Point(точки входа управляются модулем iSIG).
Каждая точка входа ассоциирована со Стоп Лоссом и Тейк Профитом,
если успешно прошла сквозь фильтры.

Точка Входа, на грацике, выглядит как синий(BUY) или красный(SELL) кружочек со стрелкой внутри:
EP_buy
EP_sell

Если торговое окружение и входные параметры разрешают открытие сделки,
на графике появляются символы Тейк Профита и Стоп Лосса:
SLTP


Стоп Лосс, Stop Loss, SL

Расстояние до Стоп Лосса определяется в тиках.
Обратите внимание на входной параметр 'SL(ticks to the pattern's base)':
SLTP_conf
Основанием паттерна считается левый угол треугольника.
В следующем примере, для Двойного Дна, DD, расстояние до Стоп Лосса составляет 70 тиков. (определение 'tick'):
SL_example


Тейк Профит, Take Profit, TP

Расстояние до Тейк Профита определяется значением-соотношением.
Смотрите входной параметр 'TP("Target")'.
Значение представляет собой соотношение между расстоянием до Стоп Лосса и расстоянием до Тейк Профита
(от Точки Входа).
1.0 означает равные SL и TP,
2.0 устанавливает TP дважды дальше, чем SL.
В следующем примере, для DD(Двойное Дно), TP установлен как 2.0,
поэтому расстояние до TP(212 тиков) вдвое больше чем
расстояние до SL(106 тиков):
TP_example


Дивергенции

iFrankenstein содержит iRSI_iDiv - модуль Дивергенций.
divs
Для обнаружения дивергенций используется отдельный таймфрейм, определенный параметром 'TF for the RSI divergences'.
Стрелки на графике символизируют пики(ценовые максимумы и минимумы), которые определили дивергенцию:
divs

В трейдинге, "дивергенция" - это ситуация, при которой ценовое движение
отличается от движения индикатора, типично следующего за ценой,
такого как осциллятор индикатор тренда(RSI напр.).
Дивергенция может намекать о приближающемся развороте или ослаблении текущего тренда.

Серии вертикальных черточек над барами символизируют активный сигнал дивергенции:
divs
Дла каждого из 10 паттернов предусмотрен отдельный блок параметров
для Дивергенций:
divs_conf
Модуль Дивергенций действует как фильтр.
Он либо разрешает, либо запрещает торговлю.

Определены 3 категории типов Дивергенций. Категории основаны на разности в структуре и способах применения:

Бычьи и Медвежьи дивергенции зеркалируют друг друга,
пример Простой Медвежьей Дивергенции:
divs_bearish_example
Простые Медвежьи Дивергенции обычно используются как сигналы на продажу SELL.
Бычьи Дивергенции являются зеркальной копией Медвежьей Дивергенции, но сигнализирует покупку BUY и
отрисовывается синим цветом:
divs_bullish_example

Обратная Медвежья Дивергенция, часто называемая просто "медвежья дивергенция",
образуется, когда цена показывает более низкие новые максимумы,
а осциллятор показывает более высокие новые максимумы. Это подсказывает о том,
что несмотря на тренд, моментум или покупательская сила увеличиваются, что может означать,
что давление на продажу ослабляется и возможен разворот на восходящий тренд.
Обратная Медвежья Дивергенция определена как разница в цене не между "днами", а между "вершинами":
divs_reversed_bull
То же самое действительно для обратной Бычьей Дивергенции, она определена как разница в цене между двумя "днами"("ямами").
divs_reversed_bear
Все типы дивергенций могут быть использованы как для того, чтобы сформировать сигнал,
так и для установки фильтра.
Если модуль установлен в значение 'Filter' - сделки, совершаемые в противоположном направлении, запрещаются, отфильтровываются(Точка Входа деактивируется
и TP-SL символы исчезают).

Например, каждый раз когда обнаруживается Медвежья Дивергенция и, одновременно, сигнал на продажу SELL от модуля дивергенций активен(жив) -
Точка Входа деактивируется(SL и TP исчезают):
divs_bearish_deactivated

Если модуль установлен в значение 'Signal' - разрешаются только сделки, которые соответствуют активному сигналу дивергенции.

В следующем примере только те Точки Входа активны, которые
расположены в пределах активного сигнала модуля дивергенций(активированные обладают видимыми на графике TP и SL):
divs_bullish_activated

Для более детального понимания обратим внимание на iRSI_Div.ex5 - индикатор с Дивергенциями:
iRSI_Div1
Рассмотрим Простую Медвежью Дивергенцию, сформированную разницей между
направлениями вектора(между пиками) на RSI и вектора(между пиками) на ценовом графике.
Цена достигла нового high, нового ценового максимума(пика), но RSI график показал
более низкий пик.
В примере сверху, параметр 'Instant Signal Start' установлен в зн. false
и сигнал не был запущен потому, что для старта сигнала значение RSI должно
превысить уровень, установленный параметрами Overbought/Oversold.
В следующем примере сигнал был всё же инициирован:
iRSI_Div2

Если параметр 'Instant Signal Start' установлен в зн. true,
сигнал стартует моментально, вне зависимости от других настроек.

Другие важные параметры для оптимизации:


Технический Карман

TP - Технический Карман(Technical Pocket) - это фильтр волатильности.
Он определяет минимальную волатильность(на D1), необходимую для торговли.
Чем выше значение - тем выше волатильность требуется.

На след.графике с Frankenstein EA, статус Технического Кармана отображается в самом низу:
TP_desc

Дневная волатильность измеряется при помощи индикатора Average True Range (ATR).
Значением Технического Кармана называется
значение ATR за предыдущий день(таймфрейм D1), умноженное на
фактор "TP:Technical Pocket Height":
TP_params

Для каждого из 10 паттернов под Технический Карман предусмотрен отдельный блок входных параметров.

Если Тейк Профит расположен снаружи границ Технического Кармана —
торговля отменяется(сработал фильтр).

Ценовой лимит для Тейк Профита арифметически определён как High(или low для SELL) текущего дня
минус Значение Технического Кармана.

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


Пример...

ATR на дневном графике Daily даёт следующее значение Технического Кармана:
t_pocket

Значение ATR за предыдущий день = 796 тиков.
"TP:Technical Pocket Height" = 1.0. (1.0 это 100%. Для 150% используйте 1.5, и т.д...)
Это делает значение Технического Кармана равным 796 тиков * 1.0 = 796 тиков.

Вычтите это значение из ценового максимума текущего дня; получившееся значение устанавливает порог
для Тейк Профита:
t_pocket2


Глубина Ретроспекции - Retrospection Depth

Важный параметр - Глубина Ретроспекции:
RetroD
Настраивает глубину расчёта на исторических данных для движка индикатора.
Он устанавливает количество баров, участвующих в предварительной отрисовке,
начиная от последнего известного бара. Это диапазон прекалькуляции.
Чем больше значение, тем глубже в прошлое можно увидеть данные индикатора.

Для экономии ресурсов RAM, CPU, значение должно быть не слишком высоким, 100'000+.

В следующем примере данные индикатора "заканчиваются", и слева от видимого диапазона больше нет данных
(достигнут конец ретроспекции):
RetroD2