тел.: 8 800 200 86 47|+7 (812) 336 61 11Заказать звонок
Admiral Markets UK Admiral Markets UK Choose your country

MQLabs: Детализация истории котировок. Часть 2.

Индикатор TicksCollector_v2

Индикатор JustZigZag

 

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

 

Создание эквиобъемных графиков

Эквиобъемные графики, как следует из их названия (экви - от англ. "equal" - равный), состоят из свечей одинакового объема. А так как в терминале МТ4 в качестве объемов используется количество тиков, пришедшее за один бар, то эквиобъемный график правильнее было бы назвать "эквитиковым". Название не такое благозвучное, как первое, а потому в дальнейшем будем использовать более привычную формулировку - эквиобъемные графики.

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

1. i_convertToTicksVolume - разрешить (true) или запретить (false) создание эквиобъемного графика.

2. i_ticksPerBar - количество тиков, образующих один бар графика. Допустимые значения - любые натуральные числа.

3. i_resultTicksTFInMinutes - период нестандартного графика, на котором будет отображен сгенерированный эквиобъемный график. Указывается в минутах. Не может быть меньше 2, а также не должен совпадать с одним из стандартных таймфреймов МТ4: 5, 15, 30, 60, 240, 1440, 10080 или 43200.

Эти параметры появятся в новой версии индикатора - TicksCollector_v2. Пример итогового эквиобъемного графика с периодом 10 тиков приведен на рис. 1.

Рис. 1. Эквиобъемный график в сравнении с минутным графиком.

Эквиобъемный график отображен на таймфрейме с периодом 314 минут, как указано в настроечном параметре i_resultTicksTFInMinutes по умолчанию. Во всплывающей подсказке, относящейся к бычьей свече со временем открытия 09:57, явно видно, что объем свечи равен десяти тикам.

Приятным побочным эффектом эквиобъемных графиков является возможность отображения тикового графика. На таком графике можно выполнять все виды вычислений, которые используются трейдером на стандартном графике. Для этого достаточно указать единичный период эквиобъемного графика, т. е. ввести значение параметра i_ticksPerBar, равное 1. В качестве типа такого графика лучше выбирать линейное представление, а не свечное (см. рис. 2).

Рис. 2. Тиковый эквиобъемный график.

Черная линия на рис. 2 - это тиковый график. Красная и синяя линии - это средние скользящие линии с периодами 21 и 34 соответственно.

 

Несколько нестандартных графиков одного типа одного символа

У первой версии индикатора TicksCollector существовало ограничение, которое не позволяло запускать более одной копии программы на одном и том же символе. Вернее было бы сказать, что явного запрета на подобные действия у индикатора нет, но одновременное функционирование двух индикаторов на одном и том же символе может привести к дублированию получаемых тиковых данных в файле. Это ограничение не позволяло трейдеру генерировать более одного нестандартного графика одного и того же типа в один момент времени. К примеру, если требовался таймфрейм с периодом 9 минут, то вместе с ним нельзя было бы получить обновляющийся график с периодом 13 минут.

Ликвидировать ограничение оказалось достаточно просто. Во второй версии индикатора появился новый настроечный параметр i_collectTicks. Его значение true указывает на необходимость записи поступающих тиков в файл. Соответственно, для отключения записи данных достаточно перевести значение этого параметра в false. При этом отключение записи тиков в файл ни коим образом не отражается на визуализации тикового потока на графике.

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

Рис. 3. Одновременное обновление графиков EURUSD с периодом 9 и 13 минут.

График с периодом М312 - это девятиминутный таймфрейм символа EURUSD, сгенерированный индикатором, собирающим тики. Нижний график с периодом M311 - это тринадцатиминутный таймфрейм, сгенерированный индикатором с отключенной функцией сбора тиков.

 

Индикатор JustZigZag

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

Рис. 4. Некорректная работа стандартного индикатора ZigZag.

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

К недостаткам индикатора также можно отнести неочевидность набора настроечных параметров: ExtDepth, ExtDeviation и ExtBackStep. Хотя об отнесении этого момента к недостаткам можно спорить. Тем не менее, более явной настройкой индикатора было бы указание количества пунктов, которое необходимо преодолеть цене в обратном направлении от последнего экстремума с целью формирования следующего экстремума. Другим критерием формирования новых экстремумов может быть уход цены от предыдущего экстремума на некоторое значение в процентах от величины этого экстремума (такой метод использован при разработке индикатора PercentageZigZag - статья "Проект Anavar").

Перечисленные недостатки исправим в новой версии индикатора - JustZigZag. Периодичность появления его экстремумов настраивается первыми двумя параметрами индикатора: i_pointsForReversal и i_percentsForReversal. Первый параметр указывает минимальную высоту свинга в пунктах, а второй - в процентах от предыдущего экстремума. Если значение параметра i_pointsForReversal больше нуля, то используется минимальная высота в пунктах, а значение второго параметра игнорируется. Для указания минимальной высоты свинга в процентах от цены предыдущего экстремума, первому параметру необходимо присвоить значение 0 или меньше. В этом случае будет использовано значение параметра i_percentsForReversal (см. рис. 5).

Рис. 5. Свинги ZZ в процентах от цены предыдущего экстремума.

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

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

Рис. 6. Отображение призрачного свинга.

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

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

Рис. 7. Максимальная высота свинга и медиана.

На рис. 7 показаны статистические данные, собранные за последние 20 свингов ZigZag. Проекция максимального свинга отображена синей пунктирной линией, а проекция медианного свинга - пурпурной линией.

Управление статистическими данными индикатора JustZigZag осуществляется при помощи таких настроечных параметров:

1. i_showStatisticSwing - отображать (true) или не отображать (false) статистические свинги.

2. i_statisticSwings - количество последних свингов, используемых для расчета статистических данных. Допустимые значения - любые натуральные числа.

В том случае, если значение i_statisticSwings настолько большое, что на ближайшей истории не набирается достаточное количество свингов, статистика отображается для всех имеющихся исторических свингов.

 

Сравнение данных JustZigZag на различных типах графиков

Закончив разработку инструмента анализа, приступим к самому анализу - сравнению различных типов графиков, сгенерированных индикатором TicksCollector_v2. Для этого сформируем три нестандартных графика: график с периодом 3 минуты, график равновысоких свечей с высотой свечей не больше 10 пунктов и эквиобъемный график, каждая свеча которого состоит из 10 тиков. Ко всем графикам, включая исходный минутный график, присоединим индикатор JustZigZag с одинаковыми настройками (см. рис. 8).

Рис. 8. JustZZ с одинаковыми настройками на разных графиках.

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

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

Теперь рассмотрим поведение на этих же графиках другого индикатора. Например, двух скользящих средних линий (см. рис. 9).

Рис. 9. Moving Average с одинаковыми настройками на разных графиках.

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

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

 

Игорь Герасько

Сентябрь 2013

Специально для компании Admiral Markets

3.5
 
 
X
Loading