Смотри, как бесплатно скачать роботов
Ищи нас в Facebook!
Ставь лайки и следи за новостями
Интересный скрипт?
Поставь на него ссылку - пусть другие тоже оценят
Понравился скрипт?
Оцени его работу в терминале MetaTrader 5
Индикаторы

Мультитаймфреймовый индикатор фракталов и индикатор технической разметки на его основе. - индикатор для MetaTrader 5

Просмотров:
3834
Рейтинг:
(9)
Опубликован:
2021.04.07 01:32
Обновлен:
2022.08.14 18:16
\MQL5\Presets\
Presets.zip (4.26 KB)
\MQL5\Indicators\Examples\
Нужен робот или индикатор на основе этого кода? Закажите его на бирже фрилансеров Перейти на биржу

Бесконечно можно смотреть на три вещи: как горит огонь, как течёт вода и как рынок размечает сам себя.


ОПИСАНИЕ

 Мультифрактальный индикатор основывается на модифицированном индикаторе iFractals, работающем на мультитаймфреймах. Индикатор ТА строит Fibonacci Time Zones, Andrew's Pitchforks, Equidistant Channels, Fibo Channels от указанной глубины на выбранных ТФах по соседним экстремумам на основе индикатора мультифракталов. Разметка осуществляется как на истории, так и на новых барах в реальном времени.

 Подходит для выявления: закономерностей движения рынка, уровней поддержки и сопротивления, координат пробоя уровней, плотных скоплений уровней Fibo TimeZones и пустых "окон", моментов перелома текущего тренда и т. д.

 Всего для разметки зарезервировано 21 ТФ: 13 встроенных: M15, M20, M30, H1, H2, H3, H4, H6, H8, H12, D1, W1, MN1 и 8 виртуальных гипертаймфреймов (ВГТФов): MN2, MN3, MN4, MN6, Y1, Y2, Y4, Y5, каждый из которых можно добавлять и удалять опционально.

 ТА после разметки возможен на любых ТФах.

 Fibo TimeZones строятся на ближайших фракталах:

  1. Low-High или High-Low (штрихпунктирная линия);
  2. High-High или Low-Low (штриховая линия) при условии, что между ними есть не более одного противоположного фрактала.

Базовые уровни под №№ 0 и 1 не отображаются. Мультитаймфреймовые уровни под №2 имеют тот или иной оттенок красного как наиболее значимые.

 Andrew's Pitchforks, Equidistant Channels и Fibo Channels строятся по трём соседним фракталам, средний из которых противоположный: Low-High-Low или High-Low-HighБазовые уровни Fibo Channels под №№ 0 и 1 не отображаются.

 Уровни перечисленных графических объектов имеют градиентный цветовой переход от младшего ТФа к старшему: чем старше ТФ, тем ярче цвет или оттенок:

ИСПОЛЬЗУЕМЫЕ ЦВЕТОВЫЕ СХЕМЫ
Fractals, Fibo TimeZones, Andrew's Pitchforks
M15 M20 M30 H1 H2 H3 H4 H6 H8 H12 D1 W1 MN1 MN2 MN3 MN4 MN6 Y1 Y2 Y4 Y5
Equidistant Channels
M15 M20 M30 H1 H2 H3 H4 H6 H8 H12 D1 W1 MN1 MN2 MN3 MN4 MN6 Y1 Y2 Y4 Y5
Fibo Channels
M15 M20 M30 H1 H2 H3 H4 H6 H8 H12 D1 W1 MN1 MN2 MN3 MN4 MN6 Y1 Y2 Y4 Y5
2-й уровень Fibo TimeZones
M15 M20 M30 H1 H2 H3 H4 H6 H8 H12 D1 W1 MN1 MN2 MN3 MN4 MN6 Y1 Y2 Y4 Y5



ОСОБЫЕ ТРЕБОВАНИЯ

  • Индикатор работает на символах, чья длина имени не превышает 14 знаков.
  • Основной индикатор использует кастомный индикатор iCFractals.mq5. Несмотря на заявление MetaEditor'а при компиляции основного индикатора:
    property tester_inidicator "Examples\iCFractals" has been implicitly added during compilation because the indicator is used in iCustom function
    необходимо скомпилировать подключаемый iCFractals.mq5 вручную, так как по факту он не компилируется автоматически и терминал выводит ошибку:
    cannot load custom indicator 'Examples\iCFractals' [4802]
    из-за чего индикатор не запускается. Должен лежать в MQL5\Indicators\Examples\.
  • Все кнопки с ТФами от M1 до MN1 необходимо вынести на панель инструментов MT5 для полноценного использования, иначе работа с индикатором будет существенно ограничена и не раскрыта в полной мере.
  • Для корректной работы индикатора разметки в MT5—>Сервис—>Настройки: "Макс. баров в окне" необходимо выставить значение Unlimited, так как расчёты для построений графических объектов могут вестись на всей истории котировок того или иного рынка.
  • Перед помещением индикатора на график символа сперва желательно "прогреть" терминал: пройтись по всем ТФам (а не только тем, с которыми планируется работать), чтобы загрузить всю историю и сформировать таймсерии, иначе возможна задержка в начале работы индикатора и первичная неотрисовка некоторых объектов.
  • Не стоит забывать делать при необходимости гиперразметку вручную, поскольку алгоритм формирования ВГТФов реализован на стадии бета, что подразумевает неточность их разметки на инструментах с небольшой историей котировок.



ПАРАМЕТРЫ

 Индикатор имеет гибкие и понятные настройки, легко сочетаемые друг с другом в различных комбинациях. Все параметры изменяемы в реальном времени как на живом рынке, так и  вне котировок. Файлы пресетов прилагаются, должны располагаться в MQL5\Presets\.

Окно настроек индикатора



ОСОБЕННОСТИ РАБОТЫ

 Отображение фракталов.

 Фракталы от разных ТФов для лучшего восприятия располагаются друг над другом при опции EachOtherArrows=true:

Расположение фракталов от разных таймфреймов друг над другом


 Построение графических объектов.

 Индикатор автоматически фильтрует видимость разметки младших ТФов, которая проявляется по мере ухода на каждый из них.

 Необходимое условие срабатывания разметки — готовность истории котировок и таймсерий.

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

 Andrew's Pitchforks, Equidistant Channels и Fibo Channels начинают строиться не с того же самого места, с которого начинают отрисовку Fibo TimeZones, у них своя отправная точка.

 Максимальное количество баров BarsCount для построения Fibo TimeZones на всех ТФах равно 350. Значения выше будут автоматически приведены к 350. Если на графике баров меньше 350, расчёт будет вестись на основании максимального количества имеющихся на ТФе баров.

 Максимальное количество баров для построения Andrew's Pitchforks и Equidistant Channels ограничено количеством баров ТФа, либо значением BarsCount, либо задаётся в условных единицах в виде вещественного числа ChannelAndPitchforkTopicality. Почему для этих графических инструментов не была реализована возможность задания расстояния в тех же барах? Причина в том, что Fibo TimeZones по сути своей устроены так, что в них уже заложена мера актуальности: по умолчанию это 34-й уровень, при достижении ценой которого все они становятся бесполезны и после этого их можно смело удалять без сложного алгоритма расчёта потери актуальности. В Andrew's Pitchforks, Equidistant Channels и Fibo Channels же сложно спрогнозировать момент истечения их актуальности для текущей цены (нужно учитывать их ширину, наклон и прочие параметры), а также заложены сложности в алгоритме косвенного расчёта координат для их построения. Ввиду этих причин пользователю предоставляется возможность самостоятельно регулировать на глаз параметр их исходной отдалённости в истории, изначально одинаковый для всех ТФов.

 Можно накидывать новый символ на старый график с другим символом. Если новый график не "разогрет", необходимо подождать несколько секунд, пока загрузится недостающая история — только тогда произойдёт переразметка.

 В режиме разметки "только от одного ТФа" (MarkingUpOnlyTheCurrentTF=true) независимо от выбранных для разметки ТФов отрисовка будет работать только на текущем ТФ с нулевым сдвигом видимости (NativeTFVisibilityShift=0), из-за чего разметка хоть и сможет визуализироваться, однако будет сильно сжата и непригодна для технического анализа. При ненулевом значении разреженную разметку этого ТФа можно увидеть на одном из младших ТФов.


 Трансформация, перемещение, удаление и восстановление графических объектов.

 Если автоматически отстроенный объект удалён вручную, при смене ТФа он будет перерисован на прежнем месте; если же объект сдвинут в пределах зоны его действия или трансформирован, его прежняя позиция или форма будут восстановлены. При перемещении объекта за пределы актуальности его влияния он будет удалён с появлением нового бара при опции RemoveOutdatedObjects=true. Алгоритм разработан таким образом, что при переходе на другой ТФ все фракталы прочёсываются на заданную глубину заново, происходит соответствующий перерасчёт всех объектов, проверка на их наличие и восстановление в случае отсутствия или искажения. Это не лишено пользы и сделано для того, чтобы разметка всегда была правдивой и актуальной, поскольку брокер в любой момент может подкорректировать на истории графика сбойные свечи, ошибочные шпильки, восполнить разрывы в истории или попросту сменить поставщика котировок, поэтому возникает необходимость перерисовки фракталов и основанных на них построений. По этой же причине при ручном удалении всех объектов они перерисуются при переходе на другой ТФ. Вместе с тем, помимо всего прочего, без этого алгоритма была бы невозможна живая перестройка уровней Fibo TimeZones без очередного прочёса и их полной перерисовки при появлении нового бара (см. параметр Restrict_FiboTimeZones=true).

 Если удалить объекты без последующего перехода на другой ТФ, с появлением нового фрактального бара (какого-либо включённого в разметку ТФа) будут появляться только новые построения, а не исторические.

 Если удалялись объекты с младших ТФ, а затем были восстановлены, они частично перекроют видимость объектов со старших ТФов. В любом случае: восстановленные с любых ТФов объекты перекроют имеющиеся, но в разреженном представлении на младших ТФах это не должно быть заметно.

 Сразу после запуска индикатора первичные расчёты и разметка будут происходить с задержкой, если терминал не "прогрет" по всем ТФам и требуется загрузка исторических данных.

 Следует иметь в виду, что при RemoveOutdatedObjects=true затираются только устаревшие графические объекты, но не фракталы.

 Fibo TimeZones начинают затираться только после полного достижения ценой дефолтной зоны 34-го уровня, а не на расстоянии, соответствующем количеству BarsCount. Это означает, что при задании небольшого значения BarsCount не стоит ожидать затирания хвоста "змейки" на расстоянии этого значения сразу же по мере появления новых баров и продвижения переднего фронта "змейки" вперёд. Сперва "тело змейки" должно вырасти до 34-го уровня самой отдалённой или самой узкой из Fibo TimeZones, а только потом начать затираться. "Тело змейки" не будет иметь постоянной длины, прибавляясь в разметке спереди и одновременно затираясь сзади, а будет прореживаться в любом месте по мере истечения актуальности любой Fibo TimeZones внутри общего "тела".

 Andrew's Pitchforks, Equidistant Channels и Fibo Channels так же начинают прореживаться изнутри их общей цепочки, но сразу же в соответствии с заданным значением ChannelAndPitchforkTopicality и независимо от Fibo TimeZones и BarsCount:

Живая разметка на M1 от единичного ТФа M3 посредством Andrew's Pitchforks с затиранием устаревших объектов


 В режиме Restrict_FiboTimeZones=true базовые уровни Fibo TimeZones №№ 0 и 1 остаются на прежних местах — на точках привязки к экстремумам, а два дальних, окружающих текущую цену, уровня по мере её продвижения сменяются двумя последующими, как бы перешагивая друг друга и через неё и создавая ближайшую к ней актуальную окрестность, и так до 34-го. Таким образом, Fibo TimeZones сокращаются до двух актуальных сменяющихся уровней и разгружают графический интерфейс чарта:

Живая перестройка уровней Restricted Fibo TimeZones на M1 от единичного ТФа M3 без затирания устаревших объектов


 Изменение входных параметров в окне настроек индикатора.

параметр описание фракталы, разметка и её изменение в оффлайне
15 Minutes
...
5 Years
таймфреймы, выбираемые или исключаемые из разметки -
BarsCount количество баров для разметки посредством Fibo TimeZones -
RenderFractals отображать фракталы (дополнительный расход памяти) -
EachOtherArrows расположение стрелок фракталов от разных таймфреймов друг над другом "ёлочкой" -
MinorTFsFractalFilter фильтрация видимости фракталов младших таймфреймов на старших таймфреймах -
BuildMinorTFsMarkup разметка только младших таймфреймов из общего числа выбранных
-
BuildMajorTFsMarkup разметка только старших таймфреймов из общего числа выбранных
-
MarkingUpOnlyTheCurrentTF разметка только текущего таймфрейма независимо от общего числа выбранных -
Build_FiboTimeZones построение Fibo TimeZones -
Build_AndrewsPitchforks построение Andrew's Pitchforks -
Build_EquidistantChannels построение Equidistant Channels -
Build_FiboChannels построение Fibo Channels -
RayRight продление вправо лучей Andrew's Pitchforks и Equidistant Channels -
Restrict_FiboTimeZones ограничить Fibo TimeZones только двумя ближайшими к цене уровнями -
NumberOfFiboTimeZonesLevels индекс числа уровней Fibo TimeZones -
ChannelAndPitchforkTopicality коэффициент отдалённости начального построения Equidistant Channels, Fibo Channels и Andrew's Pitchforks -
NativeTFVisibilityShift смещение видимости разметки влево в таймфреймах начиная от исходного -
RemoveOutdatedObjects удаление из разметки устаревших объектов -
EraseTheMarkupAtRemovingTheIndicator стирать разметку при удалении индикатора с графика -
EventLogging журналирование событий -


 Сосуществование нескольких индикаторов на нескольких графиках.

 Возможно до 7 (A, B, C, D, E, F, G) одновременно работающих экземпляров индикатора на 7 окнах с одинаковым символом. Количество экземпляров для разных символов неограниченно.

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

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


 Смена брокера.

 Необходимо учитывать, что у брокера, на которого осуществляется переход, должен присутствовать инструмент с точно таким же именем, как у покидаемого брокера. Иначе график попросту не загрузится, всё время будет висеть предупреждение наподобие: "USDJPY, H6 US Dollar vs Yen".

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

 Чем больше экземпляров индикатора в терминале, тем дольше задержка при смене брокера.

 При смене брокера графики ранее созданных кастомных символов не переразмечаются даже на живом рынке и при нахождении на включённых в разметку ТФах. Срабатывание происходит только при смене ТФа.


 Перезагрузка терминала.

 После перезагрузки терминала с неснятыми индикаторами все настройки каждого индикатора корректно подхватываются и работа каждого успешно продолжается.

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


 Работа в Тестере стратегий.

 В Тестере стратегий индикатор местами ведёт себя некорректно:

  • При разметке на истории с экстремумов съезжают фракталы и точки привязки графических объектов (новые строятся нормально). Проще всего убедиться при прогоне одиночного ТФа M15 на M1.
  • В режиме Restrict_FiboTimeZones=true не только 2-й, но и 3-й уровень Fibo TimeZones окрашивается в красный.
  • В режиме Restrict_FiboTimeZones=false все уровни Fibo TimeZones окрашиваются в красный.

Причины такого поведения Тестера и/или индикатора не установлены.


 Известные проблемы.

 При гиперразметке на инструментах с небольшой историей котировок возможна ошибка "array out of range". Несмотря на это, такая разметка происходит.

 Иногда после выходных бывает дублирование объектов со сдвигом. Лечение — удаление объектов и повторная переразметка.

 После некоторого простоя терминала фракталы сами могут "погаснуть". Закономерности не выявлено, но это, вероятно, связано с автовыгрузкой индикаторных хэндлов после некоторого простоя для экономии памяти. Лечение: перейти с ТФ на ТФ.

 Если случился какой-либо сбой, необходимо снять все экземпляры индикатора, вручную почистить Глобальные переменные и набросить индикаторы заново.

 Замечание: живое построение новых объектов на ВГТФах не изучено ввиду слишком больших периодов.



Типичная мультитаймфреймовая разметка посредством Fibo TimeZones и Andrew's Pitchforks 9 ТФов (H2—MN1) на M1


MA Color N Bars Filling MA Color N Bars Filling

Индикатор iMA (Moving Average, MA) на базе графического стиля DRAW_COLOR_LINE - отображает три цвета: "нейтральный", "тренд вверх" и "тренд вниз". Вариации на тему индикатора 'MA Color N Bars'

MACD Four Colors 2 MACD Four Colors 2

На базе индикатора iMACD (Moving Average Convergence/Divergence, MACD) - гистограмма в четырёх цветах

Lock Loss Martingale Display Lock Loss Martingale Display

Советник-утилита: при определённой просадке для каждой убыточной позиции открывает позицию таким же объёмом но противоположного направления. Доработка кода 'Lock Loss Martingale'

iMA Breakout and Reverse Simple iMA Breakout and Reverse Simple

Максимально облегченная (по коду) стратегия на пробое ценой индикатора iMA (Moving Average, MA) и последующем возврате цены