Индикатор ZigZag является инструментом технического анализа. Построить на нем самостоятельную стратегию сложно, однако с его помощью можно быстро выделить на графике трендовые линии и сформировать уровни поддержки и сопротивления. Главное преимущество Зигзага состоит в том, что он помогает очистить график от шума.
Описание индикатора ZigZag
В торговом терминале MetaTrader индикатор ZigZag (ZZ) находится в наборе встроенных технических инструментов. При этом следует учитывать, что это самая простейшая стандартная версия индикатора, обладающая минимальной функциональностью. Имеются разработки и других модифицированных индикаторов ЗигЗаг (ЗЗ), отдельные представители которых будут описаны в соответствующем разделе.
Рисунок 1. Ломаная кривая неперерисовывающегося индикатора ZigZag.
После установки на ценовой график (выполняется это простым перетаскиванием его названия из списка индикаторов на ценовой график) ZZ рисует на нем непрерывную ломаную кривую, состоящую от отрезков (рис. 1). Конец предыдущего отрезка является началом следующего.
Легко заметить, что место, в котором отрезки соединяются, является ценовым минимумом или максимумом на определенном временном промежутке. Поэтому с помощью ЗЗ легко идентифицируются локальные экстремумы, что может использоваться с различными целями в разнообразных торговых стратегиях (например, для выявления уровней сопротивления и поддержки, зон спроса и предложения и т. д.).
Одна из базовых задач этого индикатора заключается в выявлении истинных рыночных движений и игнорировании шумов. Первые, как правило, имеют большую амплитуду, а вторые – малую. Поэтому ZZ можно назвать фильтром, отделяющим рыночные шумы от значимой ценовой динамики.
Использование, выводы
В дальнейшем я планирую показать пару подходов, как комбинировать этот инструмент с другими способами анализа. А сейчас хотел бы перейти к выводам.
Можно сделать вывод. Что Zigzag для Quik, получить который можно с этой страницы – это индикатор, который отличается от своего аналога для MT4 внешним видом и способом настраивать для работы. Однако при этом инструмент легко узнаваем, легок в установке. Так что даже если все его стрелки и дополнительные построения никому не понадобятся, то использовать его в качестве вспомогательного инструмента все-таки можно.
Тема сегодняшней публикации — скриптовый язык QLUA. QLUA — мощнейший инструмент для написания торговых роботов. И сегодня мы обсудим его плюсы и минусы. Посмотрим как написать простой индикатор и первого робота на нём. В начале своего пути долго выбирал среду разработки, искал эффективное и в тоже время простое решение для написания торговых роботов и советников. Этот путь занял несколько лет, и что я только не перепробовал в то время. Excel, Metastock, TsLab. Но в итоге остановился на QLua, справедливо решив, что это то, что мне нужно.
1) Почему стоит выбрать QLua.
2) Немного истории и о преимуществах QLua в сравнении с предшественником QPile.
3) Написание индикаторов на QLua.
4) Написание робота на QLua под Quik
5) Заключение
1. Почему стоит выбрать QLua.
Постараюсь коротенько описать плюсы и минусы. Начать стоит с того, что в рамках РФ самый распространенный терминал для торговли акциями и фьючерсами является Quik. Если отталкиваться от того, что наш терминал Quik, то выбор будет между: программами для тестирования, языками высокого уровня и встроенными языками в терминал Qlua , QPile.
Если сравнивать с системами, где алгоритм выстраивается путем построения блок-схем, то преимуществом Qlua является отсутствие платы за использование торговой системы как в TsLab и нет необходимости в использовании доп. «прокладок» как Wealth-lab. В системах построения из блоков таких как: TsLab, Wealth-lab и т.д. проблематично выстраивать сложные системы, а для уменьшения количества блоков и получения доп. функций требуется знание высокоуровневых языков типа: C#, Pascal для написания кубиков вручную.
Если рассматривать написание роботов на таких языках как: C#, Delphi , то здесь однозначным минусом является сложность написания кода и его размер для создания простейшего робота. Скриптовые же язык QLua или Qpile позволяют реализовать идею в более короткие сроки.
Сценарный язык (язык сценариев, жарг. скриптовый язык, от англ. scripting language) — высокоуровневый язык сценариев (англ. script) — кратких описаний действий, выполняемых системой. Сценарий — это программа, имеющая дело с готовыми программными компонентами, что очень сильно упрощает написание кода торгового робота. То есть для получения данных по значению закрытия свечи достаточно написать строчку кода типа: ds:C(20) все, и мы получаем значение закрытия двадцатой свечи инструмента. Нет необходимости писать «километры» кода. При этом доступен весь функционал как в полноценном языке программирования.
Из минусов можно отметить, что QLua используется только в рамках терминала Quik и данный язык не доступен для работы с другими терминалами и торговыми системами. Так же учитывая, что Quik является только терминалом и не позволяет производить тестирование торговых алгоритмов. В QLua нет простого решения для тестирования роботов, как это можно сделать в рамках таких платформ как: TsLab и Wealth-Lab.
2. Немного истории и о преимуществах QLua в сравнении с предшественником QPile.
До QLua был QPile, в общем–то он и сейчас есть. Интерпретатор скриптового языка QPile был разработан ARQA Technologies в 2002г. и развивался до 2012г., позже в терминал Quik был добавлен Lua интерпретатор. Так же есть вероятность, что компания ARQA Technologies возможно в ближайшем будущем откажется от дальнейшей поддержки QPile. Qpile как и Qlua является скриптовым языком и обладает рядом возможностей. По праву он является первым языком для написания роботов и советников для терминала Quik. Является простым для изучения и функциональным инструментом, но обладает рядом минусов.
И так, какими плюсами обладает QLua в сравнении с QPile:
У QLua нет задержки на обработку торговой логики робота в 1сек. Это конечно не критично для среднесрочных стратегий, но для написания скальперских роботов может стать критичным.
У QLua есть многопоточность. Реализовано это в виде основного потока торговой логики и функций обратного вызова(«колбэков»).
Есть возможность писать и подключать библиотеки на других языках, сам Lua кстати написан на Си
Появилась возможность писать пользовательские индикаторы и использовать их как стандартные.
Синтаксис языка немного похож на JavaScript и C#, отсюда удобство работы с операторами переменными и т.д.
Скрипты обычно интерпретируются, а не компилируются. QLua обладает JIT-компиляторами так как в его основе лежит язык Lua. Что позволяет прятать исходный код, в то время как у Qpile он всегда открыт. Ссылка как компилятор для скрытия исходного кода Qlua
3. Написание индикаторов на QLua.
(1) Пользовательский индикатор
Как уже упоменалось выше в рамках терминала Quik существует два скриптовых языка это: Qpile и QLua. Qpile являестя более ранним языком, который появился в Quik и на нем нельзя было писать индикаторы. Позже разработчики расширили функционал и добавили QLua, в рамках которого стало возможным писать индикаторы. В данной части статье пойдет речь о создании индикатора под Quik.
Индикатор на QLua представляет из себя файл с расширением *.lua или *.luac и визуально ничем не отличается от робота. Исключением является его месторасположение. Для того чтобы Quik увидел индикатор его надо разместить в папке LuaIndicators. Папка LuaIndicators должна храниться в корне папки Квика, если ее там нет, то ее надо создать. Для того чтобы быстро открыть папку Квика надо нажать на его ярлык на рабочем столе правой кнопкой мыши и выбрать «Расположение файла».
И так перейдем к созданию индикатора. Для этого нам понадобится любой текстовый редактор типа Notepade.
Индикатор на QLua для Quik состоит из трех основных частей.
Первая часть это объявление и заполнение глобального массива Settings , который содержит в себе переменные параметров индикатора, тип линии для отображения, толщину, цвет. В массиве Settings располагаются пользовательские переменные для изменения параметров индикатора из пользовательского интерфейса Квика.
Вторая часть это функция Init , она запускается один раз при инициализации индикатора. Возвращает количество линий индикатора.
Третья часть функция OnCalculate(index) получает на вход номер свечи. Она запускается интерпретатором столько раз сколько свечей на графике и возвращает численное значение индикатора. Если линий несколько в индикаторе, то несколько численных значений. Для удобства понимания кода там будут комментарии. Для комментирования строки в QLua используется «—». Все содержимое после двух дефисов интерпретатором кода на QLua не воспринимается.
—[[ Многострочные комментарии располагаются между символами двух дефисов и квадратных скобок ]]— Settings= { Name = «Channel», — название индикатора period=5, — параметр индикатора line= { { Name = «High», Type =TYPE_LINE, Width = 1, Color = RGB(120,90, 140) }, { Name = «Low», Type =TYPE_LINE, Width = 1, Color = RGB(120,90,140) } } }
Здесь мы описали массив настроек, ввели название индикатора, параметры описали параметры двух линий индикатора Именно эти параметры будут доступны в пользовательском индикаторе для изменения при загрузке индикатора на Qlua в Quik
- (1)Название индикатора
- (2)Установка значения для переменной period
- (3)Установка цвета по умолчанию для линии High
- (4)Название линии индикатора, которое мы прописали в ячейке «line» нашего листа настроек
- (5)Тип линии который мы установили для использования по умолчанию Type =TYPE_LINE
- (6)Толщина линии индикатора Width = 1
function Init() return 2 end — выводить на график будем две линии —[[ В функции OnCalculate мы рассчитаем индикатор Price Channel – это две линии построенные по экстремумам значений свечей за определенное количество баров. То есть первое значение, которое будем рассчитывать это максимальное значение за period в нашем случае он равен пяти, а второе значение, которое будет возвращать функция это минимальное значение за period. Итак приступим к расчету. ]]— function OnCalculate(index) local high=0 local low=0 Period = math.floor(Settings.period) if indexhigh then high=H(i) end if low>L(i) then low=L(i) end end else high=H(index) low=L(index) for i=index , (index+1)-Period , -1 do if H(i)>high then high=H(i) end if low>L(i) then low=L(i) end end end return high , low end
Создаем в редакторе файл с расширением lua записываем в него код и сохраняем его в папке LuaIndicators , после этого у нас появится новый индикатор и его можно будет добавить к себе на график как стандартный индикатор Quik (1)
4. Написание робота на QLua под Quik
Написание торгового робота на QLua ведется в обычном текстовом редакторе, так же как и для написания индикатора. Отличие будет в структуре кода и в том, что располагать робот можно в любом удобном для вас месте на компьютере. В роботе является обязательной только одна функция main.
И так приступим. Напишем робота с простым алгоритмом. Рассчитаем внутри робота скользящую среднюю и будем принимать решение о покупке/продаже одного лота по инструменту исходя из количества в клиентском портфеле при закрытии прошлого бара ниже/выше среднего значения посчитанного по закрытию минутных баров инструмента. То есть при пересечении close бара средней снизу вверх проверим количество контрактов в портфеле по инструменту, и если оно меньше одного, то докупим разницу до одного контракта в лонг. Обратная ситуация при пересечении close закрытого бара среднего значения сверху вниз. Отправим транзакцию для получения одного лота в шорт по клиентскому портфелю.
Переменная для прырывания цикла при срабатывании функции обратного вызова OnStop is_run = true — присванивание переменным начальных базовых значений торгового алгори — торговый счет Class_Code = «QJSIM» — класс торгуемого инструмента Sec_Code = «SBER» — код торгуемого инструмента TF = INTERVAL_M1 — торговый таймфрейм g_lots = 1 — количество торгуемых лот function main() — подписываемся на получение данных свечей по инструменту в массив ds ds = CreateDataSource(Class_Code, Sec_Code, TF) while is_run do sleep(1000) — обрабатываем цикл с задержкой 1сек. ds:SetEmptyCallback() — обновляем данные по инструменту в массиве ds local serv_time=tonumber(timeformat(getInfoParam(«SERVERTIME»))) — помещене в переменную времени сервера в формате HHMMSS if isConnected()==1 and serv_time>=10000 and serv_time20 then local sum = 0 for i=0 , period-1 do sum = sum + ds:C(count_candle-i) end SMA = sum / period local lots = get_lots() — получение количества лот в клиентском портфеле по инструменту if ds:C(count_candle)>SMA and lots(g_lots*(-1)) then — получение минимального шага цены для организации величины проскальзываня в ордере local step=tonumber(getParamEx(Class_Code, Sec_Code, «SEC_PRICE_STEP»).param_value) local price_order = ds:C(count_candle)-(step*20) — цена для ордера будет = цена закрытия — 20-ть минимальных шагов инст. send_order(«S», math.abs(g_lots+lots) , price_order) end end end end end — функция возвращает количество лот в клиентском портфеле по заданному инструменту function get_lots() local lots = 0 local n = getNumberOf(«futures_client_holding») local futures_client_holding={} for i=0,n-1 do futures_client_holding = getItem(«futures_client_holding», i) if tostring(futures_client_holding[«sec_code»])==Sec_Code then lots=tonumber(futures_client_holding[«totalnet»]) end end return lots end ———————- — отправка транзакции function send_order(operation, quantity, price) — получение минимального шага цены для округления цены отправляемого ордера local step=tonumber(getParamEx(Class_Code, Sec_Code, «SEC_PRICE_STEP»).param_value) local trans_params = { CLIENT_CODE = Account, CLASSCODE = Class_Code, SECCODE = Sec_Code, ACCOUNT = Account, TYPE = «L», TRANS_ID = tostring(1), OPERATION = tostring(operation), QUANTITY = tostring(math.abs(quantity)), PRICE = tostring(math.floor(tonumber(price)/step)*step), — округление цены при отправлении транзакции ACTION = «NEW_ORDER» } local res = sendTransaction(trans_params) if string.len(res) ~= 0 then message(«Error: «..res,3) return 0 else return trans_id end end function OnStop(stop_flag) is_run=false stop_flag=1 ds:Close() end function timeformat(time_unf) local in1, in2=0,0 local time_form=0 in1=string.find(time_unf,»:» , 0) if in1~=nil and in1~=0 then in2=string.find(time_unf,»:» , in1+1) time_form=string.sub(time_unf, 0 ,in1-1)..string.sub(time_unf, in1+1 ,in2-1)..string.sub(time_unf, in2+1 ,string.len(time_unf)) end return time_form end
После редактирования кода сохраняем его в удобном для вас месте с расширением lua. Для запуска робота надо зайти в Сервисы ->Lua скрипты
- (1)Добавляем скрипт из сохраненнго места
- (2)Проверяем его появление в таблице запущенных скриптов, после запуска появится зеленая стрелка индицирующая работу скрипта
- (3)Запускаем его в работу
- (4)Проверяем в поле отсутствие ошибок при работе
5. Заключение
Подводя итоги хочется сказать, что если используется для торговли терминал Quik, то одним из самых простых способов написания автоматизированных торговых систем является скриптовый язык QLua. И надеюсь, сегодня Вы в этом сами убедились.
В рамках торгового робота написанного как пример выше, мы получили готовую механическую торговую систему в сто строк кода. Что является очень хорошим результатом.
Для написания индикаторов в Квик, Qlua является единственно возможным вариантом.
В общем — торгуйте алгоритмами. Используйте хорошие технологии!
Добрый день, уважаемые читатели и гости блога Вебмастермаксим.ру. Сегодня мы поговорим о том, как добавить индикатор в Quik на график. Дело в том, что не так давно, мы обсуждали с вами индикатор Zigzag, тогда я использовал его под графиком. Но в Quik существует возможность установить индикатор в Quik прямо на график, что значительно облегчает работу с этим индикатором.
Я уже отмечал, что Zigzag – это вспомогательный индикатор, который поможет вам научиться определять ключевые вершины и впадины. Ниже я приведу ссылки на статьи в которых рассказано об этом подробно.
Параметры индикатора ЗигЗаг
Сразу после установки ЗЗ на ценовой график отображается настроечное окно (рис. 2). В нем можно задать цвет, ширину и стиль рисуемой линии, таймфреймы, на которых она будет отображаться, а также следующие параметры, влияющие на результаты вычислений экстремумов:
- Depth – минимальное количество свечей между соседними одинаковыми экстремумами (минимумами или максимумами);
- Deviation – минимальная относительная разница между High- или Low-ценами соседних свечей экстремума;
- Backstep – минимальное количество свечей между соседними противоположными экстремумами (минимумом и максимумом).
Рисунок 2. Входные параметры настроечного окна индикатора без запаздывания и перерисовки ЗигЗаг.
Как настроить индикатор ЗигЗаг
Значение Deviation определяет ценовую чувствительность вычислительного алгоритма индикатора. Оно задается в процентах (по отношению к количеству пунктов ценового движения от предыдущего экстремума) и если High-цена текущей свечи ниже, чем High-цена предыдущей свечи на величину меньшую Deviation, то High-цена текущей свечи не считается максимумом. Соответственно, не считается минимумом Low-цена свечи, если она выше Low-цены предыдущей свечи менее чем на величину Deviation.
Значение Depth определяет количество свечей, которое должно пройти после сформированного экстремума, после чего алгоритм начинает поиск следующего такого же экстремума. Эта переменная обеспечивается отсутствие перерисовки у индикатора ZigZag, поскольку в течение Depth свечей не может быть сформирован очередной экстремум, такой же, как и предыдущий (максимум после максимума или минимум после минимума).
Значение Backstep определяет, через сколько свечей начинается поиск противоположного экстремума (после минимума – максимум, а после максимума – минимум). Иными словами, соседние противоположные экстремумы не могут находиться на расстоянии друг от друга ближе, чем Backstep.
Цвет, ширина и стиль линии позволяют задать уникальное отображение линии ЗЗ на ценовом графике. Эти параметры будут полезны при торговле на основе анализа сигналов нескольких индикаторов.
Также можно задать как все, так и лишь некоторые таймфреймы, на которых будет отображаться линия ZZ. Это может потребоваться в торговых стратегиях, основанных на анализе ценовой динамики одного финансового инструмента на разных таймфреймах (например, ЗигЗагом может определяться тенденция на старшем таймфрейме, а на младшем – проводиться поиск моментов входа в рынок с помощью других инструментов).
Установка значений всех перечисленных переменных производится в соответствии с задачами, стоящими перед трейдером и применяемой им торговой стратегии. Например, при скальпинговой торговле необходимо отслеживать ценовые колебания, имеющие минимальную амплитуду и происходящие ан коротких временных промежутках. Поэтому и значения всех переменных должны быть как можно меньше. А если трейдер торгует по долго- и среднесрочным стратегиям, то и значения переменных должны быть большими, что позволяет эффективно отсеивать случайные ценовые движения и выделять исключительно глобальную динамику.
Рисунок 3. Так отображается неперерисовывающийся ЗигЗаг без перерисовки с разными параметрами.
Стандартный набор параметров ZZ – 12 (Depth), 5 (Deviation), 3 (Backstep). На рис. 3 ZigZag со стандартными параметрами нарисован красным цветом. Для сравнения желтым цветом нарисован ЗЗ с параметрами, увеличенными в 3 раза – 36 (Depth), 15 (Deviation), 9 (Backstep).
Как рассчитывается ZigZag-индикатор
В упрощенном виде расчет алгоритма ЗЗ выполняется следующим образом. Первоначально минимум и максимум принимаются равными (фиксируются), соответственно, Low- и High-ценам первой свечи анализируемого промежутка (доступной ценовой истории на текущем таймфрейме). Затем происходит последовательное сравнение High-свечей с зафиксированным максимумом и Low-свечей с зафиксированным минимумом;
- если High-цена текущей анализируемой свечи не выше, чем зафиксированный максимум, то начинается проверка следующей свечи, в ином случае максимумом становится High-цена текущей анализируемой свечи;
- если Low-цена текущей анализируемой свечи не ниже, чем зафиксированный минимум, то начинается проверка следующей свечи, в ином случае минимум становится Low-цена текущей анализируемой свечи.
Если на временном промежутке, удовлетворяющем параметрам Backstep и Depth, не произошло обновление минимума или максимума в соответствии с параметром Deviation, то он отображается на графике в виде точки экстремума и алгоритм начинает поиск противоположного экстремума. Каждый последующий найденный экстремум, удовлетворяющий условиям, заданным в настройках ZZ, соединяется с предыдущим отрезком.
Как работать с индикатором ZigZag
Один из самых распространенных способов применения ЗЗ заключается в построении уровней сопротивления (УС) и поддержки (УП):
- сопротивление строится по максимумам (рис. 4);
- поддержка строится по минимумам (рис. 5).
При этом необходимо выделять наиболее значимые ключевые уровни, которые способны остановить и развернуть ценовую динамику.
Также ZZ может быть применен для идентификации зон спроса (ЗС) и предложения (ЗП), имеющие очень большое сходство с УП и УС. Основная разница между ними заключается в силе:
- сила УП и УС прямо пропорциональна количеству тестирований;
- сила ЗС и ЗП при каждом очередном тестировании уменьшается.
Рисунок 4. Уровень сопротивления (красная прямая), построенный по максимуму индикатора ЗигЗаг, отмеченному красной стрелкой, который впоследствии был протестирован, но не пробит (зеленая стрелка).
Рисунок 5. Уровень поддержки (красная прямая), построенный по минимуму индикатора ZigZag (отмечен красной стрелкой), впоследствии дважды протестированному не пробитому (зеленые стрелки).
Очень удобно пользоваться ломаной ЗигЗага для построения линии тренда:
- при нисходящей тенденции – по максимумам, последовательно снижающимся (рис. 6);
- при восходящей тенденции – по минимумам, последовательно повышающимся (рис. 7).
Рисунок 6. Линия нисходящего тренда, построенная по последовательно снижающимся ценовым максимумам.
Рисунок 7. Линия восходящего тренда, для построения которой использовались минимумы, идентифицированные индикатором ЗигЗаг.
Еще один распространенный способ использования ЗЗ – идентификация графических фигур (паттернов). Например, на рис. 8 показан паттерн ABC. Открытие длинной позиции по нему происходит после того, как цена после точки C пересечет уровень точки B снизу вверх. СтопЛосс устанавливается на уровне точки C, а размер ТейкПрофита выбирается в 2÷3 раза больше, чем СтопЛосс.
Рисунок 8. Паттерн ABC, построенный на двух минимумах и одном максимуме, идентифицированных индикатором ЗигЗаг.
Торговые стратегии «ЗигЗаг»
Как правило, ТС предполагают анализ двух и более технических инструментов и открытие позиций на основе его результатов. Однако можно торговать и на основе лишь сигналов ZZ. Одна из таких методик заключается в следующем (рис. 9):
- при формировании минимума открывается длинная позиция со СтопЛоссом ниже этого минимума;
- при формировании максимума открывается короткая позиция со СтопЛоссом выше этого максимума.
Рисунок 9. Торговая стратегия по одному индикатору ЗигЗаг.
Размер СтопЛосса выбирается исходя из волатильности торгуемого финансового инструмента. Закрываются открытые сделки после формирования очередного противоположного экстремума или путем установки ТейкПрофита в 2÷3 раза превышающего СтопЛосс (при этом следует проанализировать вероятность достижения такого ТейкПрофита, и если она мала, то сделку лучше не совершать).
Описанная стратегия работает на отбой от уровней. Следующая стратегия работает на пробой уровней. Если сформировался максимум, то необходимо подождать, пока цена уйдет вниз от него на такое расстояние, при котором возможно установить BuyStop на уровне максимума с минимальным СтопЛоссом (рис. 10). Если сформировался минимум, то необходимо подождать, пока цена уйдет вверх от него на расстояние, при котором можно разместить SellStop на уровне минимума с минимальным СтопЛоссом.
Рисунок 10. Торговля на пробой уровней, идентифицированных по индикатору ЗигЗаг.
В результате у трейдера постоянно активированы 2 отложенных ордера на двух последних экстремумах. ТейкПрофит сделок устанавливается в несколько раз больше размера СтопЛосса.
Индикатор ЗигЗаг для скальпинга
Описываемая в этом разделе ТС предполагает применение в дополнение к ZZ еще двух технических инструментов:
- SuperSignalsChannel – модифицированный «Ценовой канал», рисующий зеленую и красную линии, между которыми перемещается цена, и стрелки при касании ценой этих линий;
- FT PVD – рисует на ценовом графике полосу из красных и синих баров, обозначающих текущую тенденцию (красные бары – нисходящую, синие бары – восходящую).
Готовый шаблон для этой торговой стратегии скальпинга можно скачать здесь. В архиве присутствует комплекс индикаторов (файлы .ex4 и .mq4), помещаемые в папку Indicators, и файл шаблона (.tpl), помещаемый в папку Templates).
Длинная позиция открывается, если (рис. 11):
- SuperSignalsChannel отображает зеленую стрелку;
- предыдущий найденный экстремум ZZ – максимум;
- FT PVD отображает синие бары.
Рисунок 11. Покупка актива по скальпинговой торговой стратегии с использованием индикатора ЗигЗаг.
Короткая позиция открывается, если (рис. 12):
- SuperSignalsChannel отображает красную стрелку;
- предыдущий найденный экстремум ZZ – минимум;
- FT PVD отображает красные бары.
Рисунок 12. Продажа актива по скальпинговой ТС с использованием индикатора ZigZag.
СтопЛосс располагается на несколько пунктов выше ближайшего максимума (для короткой позиции) или ниже ближайшего минимума (для длинной позиции). Прибыль фиксируется при генерации SuperSignalsChannel стрелки противоположно цвета, чем при открытии позиции.
Установка, настройка
Для установки, распакуйте файл в папку вашего терминала. Там нужно создать папку LuaIndicators. Например, путь к файлу может быть таким C:\FinamJunior\LuaIndicators. Дальше, установите индикатор. Правой кнопкой на график «Добавить…» или кнопка Insert. Дальше, как обычно.
Скачать
Таким же способом переходим к редактированию. Настроек только две:
- ddd – это период Зигзаг. Если увеличить его значения, то инструмент станет более сглаженным. Если уменьшить, то мелкие неровности графика будут отражаться на линии инструмента.
- Period ATR – это период вспомогательной линии на графике, которую создатели, видимо предлагают использовать в качестве сигнальной.
На инструменте также можно заметить стрелки синего и красного цвета. Я не буду объяснять, как их применять, все и так понятно. Могу только ещё раз сказать, что сам по себе Zigzag используется только как вспомогательный инструмент, например, для работы с волновой теорией Эллиотта.
Смотреть обзор-видео про индикатор
Другие статьи на эту тему:
Модифицированные индикаторы ЗигЗаг
Поскольку стандартная версия ZZ, встроенная в MT, обладает минимальной функциональностью (производит только определение минимумов и максимумов и их соединение отрезками), то трейдеры производили всевозможные дополнения и изменения кода индикатора. В результате получались модифицированные варианты, расширяющие возможности их применения в торговле. Часть из них способна повысить удобство торгового процесса, другие обеспечивают выполнение вспомогательных функций. Некоторые такие модифицированные ZZ описаны ниже.
Индикатор ZigZag Alert (скачать)
Простейшим вариантом модификации ЗЗ является введение в его алгоритм кода, функции которого заключаются в оповещении трейдера о формировании нового экстремума. Такое оповещение может быть визуальным (стрелочка на графике, рис. 13), звуковым или текстовым (сообщение во всплывающем окне, СМС на телефон, письмо на виртуальный почтовый ящик).
Рисунок 13. Визуальные стрелочные сигналы оповещения индикатора ZigZag Alert.
Генерация оповещений повышает удобство торговли, позволяя трейдеру не наблюдать за движениями цены, а сосредоточиться на анализе другой рыночной информации, ориентированной на получение прибыли (или на исключение убытков). При этом трейдер возвращается к графику финансового инструмента, которым он предпочитает торговать, при получении сигнала о формировании очередного экстремума, идентификация которых и является целью работы ЗЗ.
В простейшем случае стрелки используются для открытия позиций:
- по зеленой, указывающей вверх – длинной;
- по красной, указывающей вниз – короткой.
При этом необходимо использовать вспомогательный фильтр (например, трендовый индикатор).
Стоит отметить различие параметров ZigZag Alert от обычного ЗЗ. В нем лишь два из них влияют на результаты алгоритмических вычислений:
- NoiseLevel – степень фильтрации случайных ценовых колебаний;
- SwitchPercent – относительная величина ценового движения, при которой будет идентифицирован разворот.
Подробнее о ZigZag Alert можно прочитать здесь.
Индикатор ZigZag MTF (скачать)
Эта мультитаймфреймовая модификация обеспечивает отображение на одном графике нескольких кривых (рис. 14), соответствующих расчету алгоритма на нескольких таймфреймах. Это позволяет видеть наиболее значимые экстремумы – в них сходятся две и более кривых, соответствующих разным таймфреймам.
Рисунок 14. Несколько кривых, отображающих результаты расчета индикатора ZigZag MTF на нескольких последовательных таймфреймах.
В настройках трейдер может задать таймфреймы, на которых производится расчет ЗигЗага. Чаще всего выбираются 3 последовательных таймфрейма. При этом в качестве младшего таймфрейма целесообразно выбирать период рабочего графика, на котором трейдер осуществляет основной анализ рынка.
Можно сформировать отображение обычным индикатором Зигзаг (скачать его базовую версию при необходимости можно отсюда) на одном графике нескольких кривых, соответствующих разным таймфреймам. Для этого следует пропорционально изменить параметры Depth и Backstep. Например, если на графике с ТФ M15 необходимо вывести ZZ для ТФ H4, то указанные 2 параметра увеличиваются в 16 раз. А параметр Deviation задается в соответствии с волатильностью финансового инструмента на ТФ H4.
Обратите внимание на Quik
Сегодня я хочу обратить ваше внимание, на то, что в терминале для фондового рынка и прочих — Quik существует возможность размещать индикатор прямо на график актива. Это значительно облегчает работу с ним. Делает его более наглядным. И совмещать вершины графика и индикатора уже не требует больших усилий.
Другие статьи о Зигзаге:
Делается это очень просто! С помощью галочки, которая добавляется при установке инструмента в режим Вкл в Quik. После этого нужно только применить установки и этого будет достаточно для начала работы. Индикатор не только не теряет своих свойств, но работа с ним может стать боле удобной. Я полагаю, что вам будут попадаться такие индикаторы, которые лучше будут смотреться на графике, чем под ним.
Смотреть видео про правила Quik-а
Хороший пример такого применения является индикатор Parabolic SAR в Quik. Да, мы привыкли видеть его на графике, но в Quik он беспрерывный. Я имею в виду, что на нем совершенно нет разрывов. От этого добавленный на графике он смотрится несколько грязно. Тогда как под графиком при небольшой сноровке он выглядит очень убедительно! Я полагаю, что тренировка по его применению в таком виде в Quik займет немного времени. Коротко, когда происходит перескок вниз и затем пологий подъем, то это сигнал на покупку, а перескок вверх и пологий спуск — это сигнал на продажу. Однако, помните, что один этот добавленный или установленный индикатор не даст хорошего результата в долгосрочном периоде.
Не забывайте, что индикаторы – это лишь вспомогательная система, которая поможет вам, узнать о свойствах графика немного больше. Но использовать их для прогнозирования достаточно сложно.