LuxAlgo. Часть V: Oscillator Matrix, осциллятор, который спорит сам с собой
Пятая часть руководства по LuxAlgo целиком отдана тулкиту Oscillator Matrix. Разбираем, как устроены HyperWave и его сигнальная линия, почему дивергенции упираются в жёсткий предел в 500 линий, что показывают пороги Money Flow, чем кружок отличается от треугольника в сигналах разворота, как считается конфлюэнс и какие семнадцать событий тулкит отдаёт в алерты. В конце: сводка всех опубликованных значений по умолчанию.
Пролог. Шесть мнений в одной панели
Классический осциллятор отвечает на один вопрос одной линией: цена ушла слишком далеко или пока нет. Oscillator Matrix® устроен противоположным образом. В одну панель под ценовым графиком сведено больше шести самостоятельных измерений, у каждого своя логика расчёта, и ценность такой конструкции лежит не в отдельном компоненте, а в отношениях между ними. Тулкит не выдаёт вердикт: он показывает, насколько разные способы посмотреть на один и тот же ряд цен согласны друг с другом. Дальше речь пойдёт не о поиске лучшего сигнала, а о чтении разногласий между шестью мнениями, живущими в одном окне.
Разобрано будет всё, что тулкит рисует и вычисляет: HyperWave и его сигнальная линия, дивергенции, Money Flow (денежный поток) с двумя порогами, событие OverFlow (избыток ликвидности), сигналы разворота, зоны конфлюэнса и Confluence Meter (измеритель конфлюэнса), семнадцать событий в системе алертов, состав слотов конструктора пользовательских алертов и сводка настроек. Вне этой части остаются три сюжета. Бэктестер Oscillator Matrix разбирался в части II. Скринер Oscillator Matrix ждёт в части VII. Общая механика конструктора пользовательских алертов и общая архитектура алертов тулкитов описаны в третьей части и здесь не повторяются: остаётся только то, что принадлежит именно этому индикатору.
В четвёртой части речь шла о тулките Signals & Overlays®, который живёт поверх ценового графика и высказывается свечами, метками и оверлеями. Oscillator Matrix занимает отдельную панель, поэтому за место на экране два тулкита не конкурируют и на практике часто стоят вместе. Часть VI посвящена языку Alert Scripting, где условие для алерта набирается текстом, а не выбирается из списков; числовые показания этого тулкита превращаются там в словарь языка. Здесь мы не выходим за пределы одного индикатора и его окна настроек.
Документация называет два способа работы с тулкитом и подаёт их как равноправные: панель либо служит единственной опорой для решения, либо только подтверждает вывод, сделанный другими средствами. На практике они далеко не равнозначны: первый требует понимания того, какие компоненты считаются независимо, а какие являются проекциями одного и того же расчёта. Вся часть построена так, чтобы к последней главе выбор между этими режимами оказался осознанным, а не следствием того, что вы включили индикатор и увидели много цветных элементов сразу.
Содержание
- Пролог. Шесть мнений в одной панели
- Карта тулкита: одна панель, шесть слоёв
- HyperWave: ось, вокруг которой собран весь тулкит
- Дивергенции и цена отрисовки в реальном времени
- Smart Money Flow: медленный контур и избыток ликвидности
- Сигналы разворота: кружок против треугольника
- Конфлюэнс: согласие как измеримая величина
- Алерты Oscillator Matrix: семнадцать событий и восемь значений
- Конструктор пользовательских алертов: десять слотов и одна аномалия
- Справочник настроек и бюджет вычислений
- Эпилог
- Источники
Карта тулкита: одна панель, шесть слоёв
Два режима использования: самостоятельная система и второе мнение
Источник подаёт Oscillator Matrix как решение «всё в одном»: больше шести самостоятельных компонентов в одном скрипте, причём собраны они так, чтобы проверять друг друга. Заявленных режимов использования ровно два. Первый предполагает, что вся аналитика умещается в одну панель: решение выводится из её показаний и больше ниоткуда. Во втором панель работает второстепенно, при собственном анализе пользователя, и остальные тулкиты LuxAlgo для этого не требуются. Оба примера связок, которые приводит источник, построены на согласии и на несогласии компонентов: избыток ликвидности вместе с сильным сигналом разворота; дивергенция в реальном времени при отсутствии денежного потока. Платформа одна, TradingView®, скрипт написан на Pine Script®, доступ открывает тариф Premium.
Инвентаризация слоёв панели
Источник разложен по четырём функциональным страницам (HyperWave, Smart Money Flow, Reversal Signals, Confluence), к которым добавлены страница алертов и справочник настроек. Наша композиция от этой раскладки отходит сознательно: сначала главная ось панели, затем то, что из неё вырастает, затем второй, более медленный контур, затем синтез и только после этого автоматизация. Причина в разнице вопросов: страницы документации отвечают на вопрос, что есть в продукте, а руководство должно отвечать на вопрос, что от чего зависит. Таблица ниже собирает слои панели в одном месте: что каждый измеряет, где отрисовывается и в каком состоянии находится сразу после установки скрипта.
Что включено сразу, а что придётся включить руками
Из шести с лишним компонентов по умолчанию выключен ровно один: измеритель конфлюэнса. Исключение единственное, и оговорить его стоит отдельно, потому что человек, только что добавивший индикатор на график, измерителя не увидит и не заподозрит, что тот вообще существует. Всё остальное включено сразу, и панель в состоянии по умолчанию заполнена довольно плотно: два осциллятора, сигнальная линия, точки разворота, линии дивергенций на панели и на ценовом графике, маркеры разворотов у границ и две зоны конфлюэнса за пределами шкалы. Первое, что имеет смысл сделать после установки, это не менять параметры, а наоборот, выключить лишнее и посмотреть на каждый слой по отдельности.
Ещё одна деталь, которая пригодится в главе про настройки. В самом источнике осциллятор называется то HyperWave, то Hyper Wave, то HyerWave, причём последнее написание это опечатка в заголовках справочника. Речь во всех трёх случаях идёт об одном и том же расчёте, и никакой второй сущности за разными написаниями не стоит. В тексте руководства мы пишем HyperWave, а в главе о панели настроек предупредим, что на экране буквы будут стоять иначе.
HyperWave: ось, вокруг которой собран весь тулкит
Нормализация от 0 до 100 и что даёт длина
HyperWave это нормализованный адаптивный осциллятор, и обе части определения работают. Нормализованный: значения приведены к общей шкале и не выражены в единицах цены, поэтому один и тот же уровень означает одно и то же на любом инструменте. Адаптивный: расчёт подстраивается под ряд, а не применяет к нему один жёсткий масштаб. Заявленная задача сформулирована в одну строку: показать тренд цены и по возможности не тащить за собой шум. Всё поведение осциллятора подчинено этой формулировке. Прямого утверждения о границах шкалы страница функции не даёт, но границы выводятся однозначно: пороги перекупленности и перепроданности заданы на уровнях 80 и 20, а зоны конфлюэнса рисуются выше 100 и ниже 0, то есть заведомо вне области, куда осциллятор способен зайти.
Управляет осциллятором единственное числовое поле, и у него два имени. На странице функции оно названо Main Length, в справочнике настроек то же поле подписано HyperWave Length (длина HyperWave), по умолчанию 7. Растёт число в этом поле, растёт и длина волны: кривая идёт ровнее и описывает более медленные движения. Убавили число, и осциллятор начинает чаще бегать от края шкалы к краю. Семёрка по умолчанию это довольно быстрая настройка, и держать это в голове стоит с самого начала: если HyperWave выглядит нервным, причина может быть не в рынке, а в коротком окне расчёта. Поскольку от этой оси зависят сигнальная линия, точки разворота, дивергенции и часть входов конфлюэнса, длина HyperWave остаётся самым дорогим по последствиям параметром тулкита.
Сигнальная линия: SMA против Trailing Stop
Сигнальная линия это вторая серия индикатора, построенная из самого HyperWave. Алгоритма два, и выбираются они в выпадающем списке Signal: SMA (простая скользящая средняя) и Trailing Stop (трейлинг-стоп как алгоритм сигнальной линии), который в тексте страницы функции сокращён до TS. Разница вполне практическая: трейлинг-стоп реагирует на дёрганье осциллятора сдержаннее, а простая скользящая средняя держится к нему вплотную и потому пересекается с ним чаще. Справочник настроек указывает для самого списка значение по умолчанию SMA; числовое поле справа от списка, которое задаёт длину сигнальной линии, по умолчанию равно 3.
Единственный совет по настройке, который даёт источник, касается именно пары этих параметров: длину сигнальной линии повышают вместе с длиной HyperWave, а не отдельно. Логика прозрачна, если помнить, что сигнальная линия вычисляется из осциллятора. Сильно сглаженная сигнальная линия при быстром осцилляторе будет отставать от собственного источника, и пересечения превратятся в запоздалую регистрацию того, что уже случилось. Обратное сочетание, короткая сигнальная линия при длинном осцилляторе, даёт другую крайность: линии идут почти вплотную, и пересечения множатся без содержательного повода.
Заливка между линиями и поле прозрачности
Область между HyperWave и его сигнальной линией залита, и цвет заливки зависит от того, где идёт осциллятор, выше своей сигнальной линии или ниже. Это единственный элемент панели, который читается не по положению точки, а по цвету и площади пятна: пока расхождение растёт, пятно расширяется, а в момент пересечения меняет цвет и сжимается в ноль. Приём простой, но именно он делает панель читаемой боковым зрением, когда на графике открыто несколько инструментов сразу.
Поле, которое этой заливкой управляет, называется Colors, и это самый обманчивый параметр всего тулкита: по названию ждёшь палитру, а получаешь одно число. Оговорить его стоит заранее, потому что искать выбор оттенков в этом поле можно долго и безрезультатно, а сама заливка при этом останется прежней.
Точки разворота и фильтр зон 20 и 80
Точки разворота это кружки на панели осциллятора, отмечающие момент пересечения HyperWave и сигнальной линии. Пересечение вверх даёт зелёную точку, пересечение вниз красную, если говорить о цветах по умолчанию. Никакого дополнительного расчёта за ними не стоит: точка визуализирует то же событие, которое уже видно по смене цвета заливки, просто привязывает его к конкретному бару и делает пригодным для алерта.
Отдельного разбора требуют точки в зонах перекупленности и перепроданности, потому что в интерфейсе они выглядят как второй тип сигнала, а типом не являются. Это то же самое пересечение, отрисованное точкой большего размера при выполнении дополнительного условия по уровню: пересечение вверх, когда HyperWave находится ниже 20, либо пересечение вниз, когда HyperWave находится выше 80. Размеров всего два, и разница в размере это единственное, чем точка в экстремальной зоне отличается от обычной. Практический смысл фильтра при этом реальный: он отсеивает пересечения в середине шкалы, где осциллятор просто идёт вдоль своей сигнальной линии, не покидая нейтральной области.
Последнее, что стоит знать про эту группу, касается её главного переключателя. Переключатель Show HyperWave по умолчанию включён, и его выключение обходится дороже, чем можно предположить по названию: с панели уходит не только сам осциллятор, но и сигнальная линия, точки разворота и все дивергенции. Если вы хотели убрать одну линию, а панель опустела наполовину, причина именно в этом. Точечное отключение элементов делается их собственными переключателями, и о двух из них речь в следующей главе.
Дивергенции и цена отрисовки в реальном времени
Как устроена чувствительность дивергенций
Дивергенция в этом тулките ищется между ценой и HyperWave, и это не формальность: расхождение оценивается против осциллятора, задача которого отражать тренд с минимальным шумом. Бычья дивергенция рисуется синей линией, медвежья красной. Главное свойство механики в том, что расхождение оценивается в реальном времени: на панели осциллятора линия появляется в тот момент, когда дивергенция обнаружена, а не после того, как её подтвердила последующая история. Дивергенция при этом остаётся наблюдением, а не сигналом: она сообщает, что цена и осциллятор перестали двигаться согласованно, и ничего не говорит о том, чем это разногласие закончится.
Числовой параметр в группе один: Divergences Sensitivity % (чувствительность дивергенций), по умолчанию 10. Направление его влияния устроено не так, как подсказывает бытовое понимание слова «чувствительность»: чем ниже число, тем реже тулкит признаёт расхождение, зато тем крупнее масштаб тех расхождений, которые он всё же признал. Иначе говоря, вы не выбираете между строгим и мягким фильтром, а выбираете масштаб расхождений, которые вообще попадут на панель. Границ у этой шкалы документация не приводит, поэтому судить о том, часто ли рисует значение по умолчанию, приходится по своему графику; но если панель выглядит расчерченной вдоль и поперёк, начинать разбираться стоит именно с этого поля, а не с длины осциллятора.
Панель осциллятора против ценового графика
Отрисовкой управляют два независимых переключателя, и оба включены по умолчанию. Show Divergences рисует линии на панели осциллятора, соединяя экстремумы самого HyperWave. Show Divergences On Chart рисует те же дивергенции на ценовом графике, соединяя породившие их ценовые свинг-точки. Сущность одна, изображений два, и каждое показывает свою сторону расхождения: на панели видно поведение осциллятора, на графике видно, между какими точками цены это расхождение возникло.
Различие, ради которого написана эта глава, лежит не в месте, а во времени. Линии на ценовом графике размещаются ретроспективно: они не появляются на том баре, где дивергенция была обнаружена, в отличие от линий на панели осциллятора. Одна и та же сущность в двух местах ведёт себя по-разному, и последствие у этого вполне конкретное. Тот, кто изучает историю тулкита по ценовому графику, систематически видит более благополучную картину, чем та, что была доступна в реальном времени: линия на графике прочерчена по уже известным экстремумам, а решение в моменте принималось по линии на панели, когда правая точка расхождения ещё не была последним словом. Проверять качество дивергенций по ценовому графику поэтому нельзя, для этого годится только панель.
Есть и вторая причина не относиться к дивергенциям как к вспомогательной разметке. Они входят в расчёт измерителя конфлюэнса на равных с трендом обоих осцилляторов и с избытком ликвидности, то есть участвуют не только в картинке, но и в числе, которым тулкит выражает согласие своих компонентов. Разговор об этом ждёт в главе о конфлюэнсе, здесь достаточно зафиксировать, что у дивергенций в сводной оценке полноценный голос.
Предел в 500 линий и как им распорядиться
У обеих отрисовок общий счёт, и он ограничен. Pine Script ограничивает количество графических объектов, которые скрипт держит одновременно, и для линий этот предел равен 500. Дивергенции на панели, дивергенции на ценовом графике и всё прочее, что скрипт рисует линиями, берут объекты из одного бюджета. Пока история короткая, лимит незаметен; на длинном участке младшего таймфрейма он превращается в главное практическое ограничение тулкита, причём проявляется тихо, без сообщения об ошибке.
Отсюда следует прямой размен, понимать который лучше до того, как вы начнёте искать причину пропавших линий в настройке чувствительности. Отключение Show Divergences On Chart освобождает объекты линий и тем самым увеличивает глубину истории дивергенций, доживающих до текущего момента на панели осциллятора. Это не оптимизация в обычном смысле, а выбор между двумя разными видами информации: видимость расхождений на ценовом графике против глубины их истории на панели. Ответ зависит от того, чем вы заняты: разбором вчерашней сделки, где важна привязка к ценовым точкам, или инвентаризацией того, как тулкит вёл себя за последние месяцы.
Smart Money Flow: медленный контур и избыток ликвидности
Smart Money Flow это не отдельная функция, а тематическая группа, собранная вокруг двух понятий: денежного потока и ликвидности. Внутри неё уживаются три разных сюжета: определение долгосрочного тренда, оценка поведения участников рынка и обнаружение разворотов. Соседство не случайное. Всё, о чём шла речь до сих пор, вращалось вокруг HyperWave и его производных, а в такой конструкции второй голос ценен ровно настолько, насколько он независим от первого.
Длина 35 против длины 7: зачем нужен второй темп
Денежный поток это осциллятор, который выводит направление тренда из активности участников рынка. По отношению к HyperWave он устроен заведомо медленнее: источник называет его показания более долгосрочными и отводит ему роль подтверждающего фона для коротких сигналов HyperWave. За этим стоит разница значений по умолчанию, которая иначе выглядела бы произвольной: длина 7 у HyperWave против длины 35 у денежного потока. В одной панели соседствуют два инструмента с разным горизонтом: первый описывает текущее колебание, второй смещение веса рынка на отрезке в несколько раз длиннее.
Инерцией денежного потока управляют два поля, и делают они разное. Поле Money Flow задаёт длину осциллятора, по умолчанию 35: это период, на котором величина вообще считается. Поле Smooth задаёт величину сглаживания, по умолчанию 6, и применяется к уже посчитанной кривой. Оба увеличивают инерцию, но первое меняет то, что измеряется, а второе только то, насколько ровно результат ложится на панель. Разница становится ощутимой в тот момент, когда вы пытаетесь понять, почему кривая перестала реагировать на движение цены: причина может сидеть в любом из двух полей, и правится она в каждом случае по-своему.
Переключатель Show Money Flow работает как главный переключатель всей группы. Вместе с осциллятором из панели исчезает всё, что от него зависит: и пороги, и событие, которому посвящён конец этой главы. Собственных переключателей у этих элементов нет, и держать это в голове полезно: если пороги мешают вам читать панель, отключить их отдельно от денежного потока не получится.
Центральная линия 50 и два статичных порога
Шкала денежного потока организована вокруг центральной линии 50. Выше и ниже неё проходят два статичных порога Money Flow, отделяющих обычные колебания от одностороннего давления. Чтение простое по форме и требовательное по дисциплине: значение имеет не мгновенное положение кривой, а то, по какую сторону порога она держится и как долго.
Практический смысл нижней строки таблицы недооценивают чаще всего. Колебание между порогами это не отсутствие информации, а сообщение о том, что стороны уравновешены и второй контур сейчас промолчит. Сигналы HyperWave в такой фазе продолжают появляться с прежней частотой, но остаются без поддержки, и различать эти два состояния стоит именно потому, что внешне панель выглядит одинаково оживлённой.
Уровни самих порогов наружу не выведены. Их нельзя ни сдвинуть, ни отключить, ни узнать численно из документации: опубликовано только то, что они статичны и расположены по обе стороны от 50. Для инструмента, у которого почти каждый параметр вынесен в настройки, это заметное исключение, и опираться на пороги стоит с поправкой на то, что их положение вы принимаете как данность. Косвенно повлиять на частоту выходов за порог всё же можно, но только через длину и сглаживание: более длинный денежный поток реже добирается до крайних областей, более короткий бывает там заметно чаще.
OverFlow: когда ликвидности становится слишком много
Избыток ликвидности это не линия и не маркер, а состояние: денег в рынок приходит больше, чем оправдано длиной уже пройденного тренда. Трактовка, которую предлагает источник, переворачивает привычную логику: такой приток не подтверждает движение, а настораживает, потому что за ним стоят опоздавшие, зашедшие вслед за трендом. Такое состояние способно предшествовать развороту, а не продолжению, и в этом смысле избыток ликвидности единственный элемент группы, который читается против направления собственного показания.
У избытка ликвидности есть раздельные бычье и медвежье значения, и это не догадка: в системе алертов существуют два разных плейсхолдера, {bull_overflow} и {bear_overflow}, каждый со своим числом. Внутри скрипта избыток считается по каждой стороне отдельно, и бычий избыток на восходящем движении не то же самое событие, что медвежий на нисходящем, даже если на панели оба выглядят похожей подсветкой.
Денежный поток нужен тулкиту не только сам по себе. Он питает две другие подсистемы: зоны конфлюэнса, где работает в паре с HyperWave, и измеритель, который сводит показания обоих осцилляторов в одно число. Обе конструкции разбираются через главу, и обе теряют смысл, если главный переключатель денежного потока выключен. Это, пожалуй, главный аргумент против привычки выключать модули ради чистоты панели: у Oscillator Matrix выключенный модуль уносит с собой чужие показания.
Сигналы разворота: кружок против треугольника
Сигналы разворота вынесены в документации на отдельную страницу и заявлены как самостоятельная система, которая целиком берёт на себя поиск разворота тренда. При этом рисуются они не на ценовом графике, а у верхней и нижней границы панели осциллятора. Оговорить это стоит отдельно: по смыслу сигнал относится к цене, по месту жительства к панели, и на свечах вы его не найдёте, сколько бы ни всматривались. Следствие у такого размещения не только техническое: разворот приходится сопоставлять с ценой глазами, переводя взгляд с панели на график, и точность этого сопоставления целиком на вашей стороне.
Малый и крупный разворот: два маркера, одна механика
Классов ровно два, и различаются они суффиксом в названии и формой маркера. Малый разворот (-) рисуется кружком, попадается часто и, как правило, приходится на вершину или основание импульса, то есть предупреждает об откате внутри сохраняющегося движения. Крупный разворот (+) рисуется треугольником, приходит на поздней стадии тренда и претендует на разворот более значимый. Документация разводит эти классы не по источнику данных, а по частоте появления и по стадии тренда, на которой они возникают.
Отсюда следует разное практическое обращение с ними, хотя источник его прямо не формулирует. Кружок это повод ожидать паузы в движении, не более того: импульс выдохся, дальше вероятен откат, а направление тренда при этом не оспаривается. Треугольник это повод пересмотреть саму гипотезу о направлении. Ни тот, ни другой маркер не является точкой входа сам по себе, и разница между ними в первую очередь разница в том, какое из ваших решений сигнал вообще имеет право затронуть.
Самое важное в этой главе спрятано в описании настройки частоты: развороты обнаруживаются HyperWave. Значит, детекция опирается на тот же осциллятор, который уже дал сигнальную линию, точки разворота и дивергенции. Сигналы разворота не самостоятельный источник информации, а ещё одна проекция знакомой оси. Знать это нужно до того, как совпадение маркера разворота с пересечением сигнальной линии будет засчитано за подтверждение: оба показания в этом случае происходят из одного расчёта и совпадают не потому, что рынок дважды сказал одно и то же.
«Совпадение сигнала разворота с точкой разворота HyperWave это не два голоса, а один голос, услышанный дважды»
Reversal Factor и торг между частотой и весом сигнала
Reversal Factor (фактор разворотов) это выпадающий список со значениями от 1 до 10, и это единственное поле группы, которое влияет на расчёт. Устроен он как торг: низкое число даёт частую разметку, в которой много вершин, оказавшихся временными, высокое даёт редкие маркеры, каждый из которых весит больше, но появляется позже. Значение по умолчанию документация не публикует, и додумывать его за источник мы не будем: посмотрите, что стоит в вашем экземпляре индикатора, и отсчитывайте от этого.
Второй элемент группы, переключатель Show Reversals, по умолчанию включён и является обязательным условием работы соответствующих алертов: с выключенной функцией событие не порождает оповещения. Правило это общее для всех трёх тулкитов и подробно разобрано в третьей части, здесь достаточно помнить, что тишина в алертах не всегда означает тишину на рынке.
Здесь же полезно зафиксировать разнобой в наименованиях, который иначе застанет вас врасплох в главе про алерты: в списке предустановленных алертов малый разворот называется Reversal Up без всякого суффикса, а в выпадающем списке конструктора пользовательских алертов он же подписан Reversal Up -. Направленных разновидностей, доступных алертам и пользовательским условиям, всего четыре: Reversal Up -, Reversal Up +, Reversal Down -, Reversal Down +.
Конфлюэнс: согласие как измеримая величина
В тулките две функции конфлюэнса, и это не дублирование. Обе измеряют согласие между элементами, но берут разный материал и обладают разной разрешающей способностью: зоны различают три состояния и опираются на два входа, измеритель выдаёт непрерывную величину и опирается на пять. Разница между ними по сути и есть ответ на вопрос, как устроен Oscillator Matrix в целом, поэтому этой главой мы закрываем разбор того, что тулкит рисует и вычисляет, а дальше речь пойдёт об автоматизации и настройках.
Зоны выше 100 и ниже 0: чтение по двум оттенкам
Верхняя зона конфлюэнса рисуется выше уровня 100, нижняя ниже уровня 0. Обе вынесены наружу шкалы, за сотую и за нулевую отметку, и потому не закрывают собой ни HyperWave, ни денежный поток. Это архитектурное решение, а не косметика: в панель, где уже соседствуют две кривые, заливка между ними, точки разворота, маркеры сигналов и линии дивергенций, добавлен ещё один слой, и добавлен он туда, где для него есть свободное место. Читаемость панели у Oscillator Matrix ресурс не менее дефицитный, чем лимит графических объектов.
Зоны учитывают ровно два входа: HyperWave и денежный поток. Когда оба смотрят вверх, верхняя зона получает более густой зелёный. Когда вверх смотрит только один, зелёный выходит бледнее. Нижняя зона в нисходящем движении читается зеркально. Различать два оттенка на глаз поначалу трудно, особенно на тёмной теме графика, поэтому надёжнее держать в голове числовое выражение того же самого: у зон есть значения, и они целые. Зона отвечает на вопрос о согласии, а не о силе движения: тёмный зелёный означает, что оба осциллятора смотрят вверх, и ничего не говорит о том, насколько уверенно каждый из них это делает.
Из зависимости от двух осцилляторов следует неочевидное сцепление настроек. Собственного источника данных у зон нет, поэтому выключение любого из главных переключателей, Show HyperWave или Show Money Flow, отражается на том, что зоны показывают. Пользователь, отключивший денежный поток ради разгрузки панели, обнаруживает, что конфлюэнс перестал означать прежнее, хотя переключателей самих зон, Upper Confluence и Lower Confluence, он не касался: оба по умолчанию включены и остались включёнными.
Пять входов измерителя конфлюэнса
Измеритель конфлюэнса решает более широкую задачу: он сводит согласие по всем показаниям осцилляторов к одному числу. Шкала направленная, рост показания читается как усиление бычьего конфлюэнса, падение как усиление медвежьего. Элементов, по которым идёт расчёт, ровно пять, и рассмотреть их список стоит внимательно, потому что он сообщает об устройстве тулкита больше, чем описание любой отдельной функции.
Три из пяти входов это HyperWave в разных проекциях: сам осциллятор, его отношение к сигнальной линии и его дивергенции. Ещё два приходят от денежного потока: направление и избыток ликвидности. Измеритель конфлюэнса, таким образом, не голосование пяти независимых свидетелей, а сумма, в которой одна ось представлена трижды. Бесполезным его это не делает, но меняет способ чтения: высокое показание чаще означает, что HyperWave уверенно смотрит вверх, чем что пять разных методов независимо пришли к одному выводу.
Диапазон показаний измерителя документация не публикует, и это осложняет калибровку. Единственное косвенное свидетельство лежит в справочнике плейсхолдеров: в качестве примера значения там приведено 89.73, из чего видно, что величина дробная и заметно больше единицы. Пороги для собственных условий поэтому приходится подбирать наблюдением, а не брать из описания, и первое, что стоит сделать после включения элемента, это некоторое время просто смотреть, в каких пределах он живёт на вашем инструменте и таймфрейме.
Настроек у измерителя ровно две, и обе внешние. Переключатель Show Confluence Meter отвечает за видимость, а поле Meter Width (ширина измерителя), по умолчанию 3, за толщину элемента на панели. Ни состав пяти входов, ни их веса пользователю не доступны, и это стоит принять как данность: измеритель отдаёт готовое число, а не конструктор, из которого его можно пересобрать по своему вкусу.
Выходы для внешних скриптов на Pine Script
У конфлюэнса есть свойство, которого нет у большинства функций тулкита: его значения опубликованы наружу. Три именованных выхода скрипта доступны другим скриптам на Pine Script: Upper Confluence Value, Lower Confluence Value и Confluence Meter Value. Показание конфлюэнса можно выбрать источником в чужом индикаторе или в собственном коде и построить на нём то, чего в тулките нет. Значение измерителя дополнительно доступно в текстах алертов через плейсхолдер {confluence_meter}, а значения зон через {bull_confluence} и {bear_confluence}, и в этой роли они собираются в общий список в главе про алерты.
Асимметрия здесь показательна. Наружу тулкит отдаёт именно результаты синтеза: значения зон и показание измерителя. Ни уровни порогов денежного потока, ни фактор разворотов, ни внутренняя оценка чувствительности дивергенций внешним скриптам не видны и в настройки выведены лишь частично. Для того, кто собирается строить на Oscillator Matrix собственную логику, это определяет и потолок возможностей, и ту точку, в которой придётся довериться чужому расчёту без права его проверить.
Алерты Oscillator Matrix: семнадцать событий и восемь значений
Механика алертов у тулкитов LuxAlgo общая, и разбирать её второй раз незачем. Два механизма оповещения, правило, по которому выключенная функция молчит, плейсхолдеры групп Symbol, Time и Data, поведение {sector} при отсутствии сектора, суффиксы {tf} и готовый JSON-шаблон сообщения подробно разобраны в третьей части. Здесь остаётся только то, что принадлежит именно этому тулкиту: собственный список событий и собственный набор плейсхолдеров, через которые числа осцилляторов попадают в текст уведомления.
Семнадцать событий и два места, где они называются по-разному
Событий ровно семнадцать, и список в обоих механизмах оповещения один и тот же: он не зависит от того, создаёте вы отдельный алерт на каждое условие или один алерт на все сразу. Четыре события приходят от HyperWave: сигнал вверх, сигнал вверх в зоне перепроданности, сигнал вниз и сигнал вниз в зоне перекупленности. Четыре приходят от разворотов, малый и крупный в каждую сторону. Дальше идут две дивергенции, четыре конфлюэнса (сильный и слабый на бычьей стороне, сильный и слабый на медвежьей), два избытка ликвидности и одна строка под пользовательское условие. Семнадцать.
Правило, о котором уже шла речь в главе про сигналы разворота, объясняет почти все жалобы на молчащий алерт: событие не порождает уведомлений, если породившая его функция выключена в настройках. Выключенный Show Reversals обнуляет четыре строки из семнадцати. Выключенный Show Money Flow уносит с собой оба избытка ликвидности: собственного переключателя у них нет. На зоны конфлюэнса он тоже влияет, поскольку денежный поток один из двух их входов, но что именно остаётся от их показаний, документация не уточняет. Список условий в диалоге TradingView при этом остаётся полным: интерфейс не подсказывает, какие из семнадцати строк в вашей конфигурации мертвы.
Самое утомительное здесь не механика, а подписи: одно и то же событие в двух местах называется по-разному. В списке предустановленных алертов события HyperWave подписаны полными фразами вида HyperWave OS Signal Up, а в группе any alert() function call те же события превращаются в HWO Signal Up, Oversold и Overbought. Малые развороты в предустановленном списке идут без суффикса, как Reversal Up и Reversal Down, а крупные в группе чекбоксов подписаны одним знаком плюс. Подпись Strong встречается дважды, для бычьего и для медвежьего конфлюэнса. Надёжных ориентиров два: порядок строк и текст сообщения по умолчанию, поэтому таблица ниже сводит оба имени и сообщение в одну строку.
Плейсхолдеры значений Oscillator Matrix
Группа Indicators добавляет к общим плейсхолдерам восемь собственных, и все восемь возвращают числа, а не события. Это единственный способ вытащить наружу текущие показания тулкита, не написав собственный скрипт: значение подставляется в текст сообщения ровно там, где вы поставили плейсхолдер. Пять из восьми уже встречались выше: два плейсхолдера избытка ликвидности в главе про денежный поток, где они послужили доказательством раздельных бычьего и медвежьего значений, а два значения зон и показание измерителя в главе про конфлюэнс.
По таблице стоит сделать два наблюдения. Первое: шкалы у этих плейсхолдеров разные, и складывать их между собой бессмысленно. Значения зон конфлюэнса дискретны и принимают только 2, 1 или 0, тогда как измеритель в примере документации возвращает величину около девяноста, то есть живёт на непрерывной шкале и с зонами напрямую не сравнивается. Второе: плейсхолдеры отдают значения на момент срабатывания, поэтому в одном сообщении собирается и событие, и числовой контекст, в котором оно случилось. Именно такое сообщение имеет смысл отправлять на вебхук.
Конструктор пользовательских алертов: десять слотов и одна аномалия
Конструктор пользовательских алертов работает по единым для всех тулкитов правилам, и они уже описаны. Нумерация шагов, значения All (фильтр для всех шагов), Invalidate (шаг инвалидации) и OR (шаг вне последовательности), требование непрерывной последовательности, начинающейся с первого шага, назначение поля Maximum Step Interval (максимальный интервал между шагами) и подсветка срабатываний разобраны в третьей части на материале Price Action Concepts®. Ниже только то, чем набор Oscillator Matrix отличается от разобранной там схемы: свой состав слотов, свои списки условий и свои значения по умолчанию.
Десять слотов: семь от тулкита и три внешних
Слотов ровно десять. Семь опираются на элементы самого тулкита: денежный поток, избыток ликвидности, HyperWave, развороты, дивергенции, конфлюэнс и измеритель конфлюэнса. Три оставшихся внешние, они читают выходы других индикаторов, уже добавленных на график. Все десять переключателей по умолчанию выключены, то есть в свежеустановленном индикаторе конструктор пуст и ничего не считает. Собранное условие уходит наружу двумя путями: через механизм any alert() function call вместе с остальными событиями либо как отдельный предустановленный алерт Custom Alert Condition.
Три внешних слота устроены неодинаково, и заметить это лучше до сборки условия. External Condition (1) и External Condition (2) сравнивают два источника между собой, то есть требуют двух выходов и не принимают числа. External Condition (3) сравнивает один источник с числовой константой, и её значение по умолчанию равно 0. У числовых слотов самого тулкита поле сравнения по умолчанию равно 50: для денежного потока это ровно его центральная линия, для остальных просто удобная круглая цифра.
Наборы операторов различаются от слота к слоту, и пропустить это легко: визуально все выпадающие списки одинаковы. Базовый набор один: Greater Than (больше), Lower Than (меньше), Crossing Over (пересечение вверх), Crossing Under (пересечение вниз), Crossing (пересечение в любую сторону) и Equal (равно). У денежного потока пять операторов, и Equal среди них нет. У избытка ликвидности и у измерителя конфлюэнса шесть, вместе с Equal. Список HyperWave самый необычный: в нём двенадцать значений, и он смешивает событийные условия (варианты вида Any Bullish и Oversold Bullish) с пятью операторами сравнения. У разворотов семь значений, у дивергенций три, у конфлюэнса четыре, и все они событийные: поля сравнения там нет вовсе.
Документация иллюстрирует конструктор двумя конфигурациями, и обе полезно записать словами, потому что порядок сборки в интерфейсе нигде не проговаривается. Сначала выбирается условие, затем оператор, затем значение, и только после этого номер шага. Различие между двумя примерами лежит именно в номере: в первом оба условия стоят на одном шаге и должны выполниться одновременно, во втором номера разные, и условия выстраиваются в последовательность.
Пример 1, оба условия на одном шаге
Шаг 1 Money Flow Greater Than 50
Шаг 1 HyperWave Greater Than 80
Пример 2, последовательность из двух шагов
Шаг 1 Reversals Any Reversal Down
Шаг 2 HyperWave Crossing Under 80
Чем набор Oscillator Matrix отличается от общей схемы
Первое отличие касается глубины последовательности. В этом тулките выпадающие списки шагов заканчиваются на девятке, тогда как в Signals & Overlays они доходят до десяти, а в Price Action Concepts до одиннадцати. Практический смысл прямой: сценарий из десяти последовательных событий здесь собрать нельзя. К этому прилагается аномалия самого справочника настроек: единственный список, где значение 10 всё же присутствует, это External Step (2). В сочетании с правилом непрерывности шагов такое одиночное десятое место выглядит не как возможность, а как несогласованность интерфейса, и строить на нём условие не стоит.
Второе отличие в собственных значениях по умолчанию. Выпадающий список Invalidation Behavior (режим инвалидации) принимает три значения: None по умолчанию, Invalidate On Step 1 и Invalidate On Any Repeated Step. Режим Invalidate On Step 1 после повторного срабатывания первого шага оставляет движок в ожидании второго, а Invalidate On Any Repeated Step возвращает его к ожиданию первого; полный разбор обоих с примерами дан в части II, в главе про Step & Match (шаги и совпадения). Максимальный интервал между шагами оставлен на 10 барах. Highlight Custom Alert Triggers (подсветка срабатываний) включена, а положение метки выбирается из трёх вариантов: вверху панели осциллятора, внизу или по центру. Третий вариант существует потому, что у Oscillator Matrix своя панель со своей шкалой.
Справочник настроек и бюджет вычислений
Окно настроек открывается двумя способами, оба описаны в третьей части и здесь не повторяются. Важнее другое. Порядок групп в этом окне фиксирован и не совпадает ни с порядком глав этого руководства, ни с порядком страниц документации: мы шли от главной оси тулкита к производным от неё функциям, а интерфейс начинает с денежного потока и заканчивает служебной группой расчёта. Искать поля по памяти о прочитанном не получится.
Порядок групп в панели настроек
Порядок такой: Smart Money Flow, HyperWave, HyperWave Divergences, Reversals, Confluence, Custom Alert Creator, Calculation. Держать его в голове полезно ради экономии времени: настройки в тулките ищутся глазами, сверху вниз, и промотать семь известных групп быстрее, чем вспоминать, к какому модулю относится поле прозрачности.
Заодно предупредим о трёх местах, где источник расходится с самим собой. О первом говорилось ещё в главе про карту тулкита: заголовок второй группы и переключатель внутри неё набраны как HyerWave, без второй буквы p, и в окне настроек группу придётся искать именно по этому написанию. Поле чувствительности дивергенций на странице про HyperWave названо Divergence Sensitivity %, а в справочнике настроек Divergences Sensitivity %, и это одно поле, а не два. Значение выпадающего списка Signal в справочнике записано полностью, как Trailing Stop, а в тексте страницы сокращено до TS: это тоже одно и то же. Ни одна из трёх нестыковок ни на что не влияет, кроме поиска нужного поля.
Сводка значений по умолчанию
Ниже собраны все опубликованные значения по умолчанию, включая одну строку, где значения нет. Документация не приводит его для фактора разворотов: известен только состав списка, от 1 до 10, и заполнять эту клетку догадкой мы не будем. Проверить фактическое состояние можно одним способом: добавить индикатор на чистый график и посмотреть.
Calculated Bars и скорость пересчёта
Единственный параметр производительности лежит в последней группе и называется Calculated Bars (число рассчитываемых баров), по умолчанию 10 000. Он задаёт, сколько последних баров участвует в расчёте тулкита: убавили значение, укоротили историю, выиграли в скорости пересчёта. Других рычагов оптимизации в настройках нет: тулкит пересчитывает шесть подсистем на каждом баре, и цена этого расчёта заложена в архитектуру, а не выведена в поля. Плата за одну панель, в которой сведено больше шести измерений, взимается именно здесь.
Если панель всё же упирается в ограничения TradingView, ходов остаётся два, и оба уже названы. Расчёт укорачивается единственным способом, числом рассчитываемых баров: оно уменьшает глубину вычислений и ничего не меняет в логике. Второй ход относится не к расчёту, а к бюджету графических объектов: выключенный Show Divergences On Chart освобождает линии и возвращает на панель осциллятора историю дивергенций, о чём подробно говорилось в главе про дивергенции. Выключение неиспользуемых модулей тоже разгружает панель и список живых алертов, но экономии в расчёте документация ему не приписывает, поэтому третьим рычагом производительности его считать не стоит.
Эпилог
Ценность Oscillator Matrix не в отдельных сигналах: почти у каждого есть более простой и более прозрачный аналог за пределами тулкита. Ценность в том, что панель делает разногласие между своими компонентами видимым, а в случае измерителя конфлюэнса даже измеримым. Но у этой измеримости есть подвох, который стоит помнить дольше остального: три входа измерителя из пяти это HyperWave в разных проекциях, сам осциллятор, его отношение к сигнальной линии и его дивергенции. По-настоящему независимый голос в тулките один, и это денежный поток. Поэтому высокое показание измерителя не означает, что пять источников согласились между собой; чаще оно означает, что HyperWave уверен в себе. Смотреть в первую очередь имеет смысл на расхождение двух контуров, быстрого и медленного, а не на суммарную цифру, в которой быстрый контур посчитан трижды.
Часть VI отдана языку Alert Scripting. В самом низу окна настроек каждого из трёх тулкитов есть многострочное текстовое поле, в котором условие не собирается из выпадающих списков, а пишется словами, и десять слотов конструктора перестают быть потолком. HyperWave, денежный поток, избыток ликвидности и конфлюэнс становятся там словами языка, плейсхолдерами вида {hyperwave}, к которым добавляются операторы, обращение к истории и последовательности произвольной длины. Понимание элементов из этой части там является предусловием: язык не объясняет, что такое малый разворот, он лишь даёт способ на него сослаться.
Источники
Фактическая основа этой части это семь страниц официальной документации LuxAlgo. Страница введения дала позиционирование тулкита, оба заявленных режима использования и раскладку документации по функциям. Страница HyperWave дала устройство главного осциллятора, два алгоритма сигнальной линии, условия появления точек разворота, поведение дивергенций в двух местах отрисовки и предел в 500 линий. Страница Smart Money Flow дала второй осциллятор, чтение по порогам и трактовку избытка ликвидности. Страница Reversal Signals дала классификацию разворотов и признание, что их детекция опирается на HyperWave. Страница Confluence дала обе функции конфлюэнса, пять входов измерителя и три именованных выхода для внешних скриптов.
Страница алертов дала оба списка событий, плейсхолдеры сообщения и примеры работы конструктора пользовательских алертов; общая настройка алертов, на которую документация ссылается отдельно, описана в разделе TradingView Alerts. Все значения по умолчанию, наборы операторов и списки условий сверены со справочником настроек по состоянию на дату публикации. LuxAlgo обновляет тулкиты, и числа в актуальной версии скрипта могут разойтись с приведёнными здесь: при расхождении верить следует окну настроек на вашем графике.
Иллюстрации в тексте принадлежат LuxAlgo и приведены со ссылками на страницы, откуда они взяты; скриншоты, сделанные в TradingView, принадлежат автору. Автор не связан с LuxAlgo, не получает от компании вознаграждения и не имеет доступа к исходному коду скриптов: руководство написано самостоятельно на основе публичной документации и переводом её не является. Там, где документация молчит, в тексте стоит прямая оговорка об этом, а не догадка.
Похожие посты
LuxAlgo. Часть VII: скринеры, десять рынков в одной таблице
Скринер LuxAlgo сжимает целый тулкит до одной строки таблицы и позволяет держать в поле зрения до десяти тикеров сразу, каждый в своём таймфрейме. Разбираем устройство всех трёх скринеров: элементы и рейтинг, фильтрацию и сортировку, различия между Signals & Overlays, Price Action Concepts и Oscillator Matrix, а также трение, которое возникает при работе.
LuxAlgo. Часть VI: Alert Scripting, язык условий для алертов
В настройках трёх тулкитов LuxAlgo спрятано многострочное текстовое поле. В нём живёт собственный язык: он умеет то, чего не умеет конструктор пользовательских алертов, и умеет описывать не событие, а сюжет из нескольких событий, растянутый на десятки баров. Разбираем язык целиком: словарь, грамматику, побочные эффекты и подводные камни.
LuxAlgo. Часть IV: Signals & Overlays, сигнал, который не является входом
Часть IV руководства по LuxAlgo целиком отдана самому популярному тулкиту компании. Разбираем, почему подтверждающий сигнал по замыслу авторов не является точкой входа, чем контртрендовый режим платит за раннюю правоту, как читать четыре класса ML-классификатора в двух режимах по-разному, зачем одному числу чувствительности три разных способа назначения, что именно рисуют пять оверлеев и почему уровни TP и SL никуда не едут после появления. В конце: девятнадцать предустановленных алертов, конструктор пользовательских алертов и сводка всех опубликованных значений по умолчанию.
Комментарии
Пока нет комментариев. Будьте первым.