Кастомный индикатор вместо встроенного: где теряется сигнал
Встроенные индикаторы построены на усреднённой логике: одна формула с одинаковыми значениями по умолчанию применяется к любому активу и любому таймфрейму. Скользящая средняя, RSI, MACD или полосы Боллинджера не знают, что торгуется — ликвидный спот или тонкий альткоин, где одна заявка сдвигает цену на проценты. Отсюда запаздывание сигнала: к моменту, когда условие формально выполнено, движение уже прошло большую часть пути, а вход приходится на его конец.
Второй источник потерь — сглаживание. Чем сильнее фильтр шума, тем позже индикатор откликается на разворот; уменьшаешь период — получаешь ложные входы на каждом всплеске волатильности крипторынка. Подбором параметров это не лечится: компромисс между отзывчивостью и устойчивостью заложен в саму конструкцию.
Типовые параметры не описывают реальные условия торговли. Ликвидность меняется по часам и дням недели, ночные сессии тоньше дневных, на деривативах работают ставка финансирования и каскады ликвидаций, а всплески волатильности идут группами. Период, подобранный на одном участке истории, на другом даёт совсем другой профиль входов и выходов.
Кастомный индикатор решает не задачу «взять другую формулу», а задачу описать конкретные условия рынка: нормализация по волатильности, адаптивный период, пороги входа с учётом комиссии и проскальзывания. Такая логика проверяется на истории и на данных, не участвовавших в настройке. Дальше разбираем, как это собирается и где проходит граница между полезной доработкой и подгонкой под прошлое.
Что даёт собственный расчёт: точность, скорость, устойчивость
Готовый индикатор считает по формуле, которую нельзя изменить: он либо подтверждает вход после закрытия свечи, либо сглаживает движение так сильно, что сигнал приходит на откате. Собственный алгоритм расчёта снимает это ограничение — момент появления сигнала смещается на формирующуюся свечу, при том же наборе исходных данных.
Ложные срабатывания дешевле отсекать до входа, а не разбирать после неудачной сделки. В расчёт добавляются подтверждающие условия: всплеск объёма, согласованность со старшим таймфреймом, положение цены относительно границ накопленного диапазона. Фильтрация работает внутри логики, а не поверх готового сигнала, поэтому доля ложных срабатываний на тестовом отрезке падает кратно.
Боковик — режим, где классические осцилляторы выдают поток встречных сигналов и стратегия переворачивается на каждом отскоке. Здесь включается классификатор режима рынка: по сжатию волатильности и структуре экстремумов алгоритм распознаёт диапазон и переводит расчёт на работу от границ. Число переворотов за сопоставимый отрезок падает в разы, а просадка на флете сокращается.
Поток котировок обрабатывается инкрементально: сделки агрегируются в свечи, пересчитываются только изменившиеся значения, а не весь массив истории. Площадки вроде Binance отдают данные разными по частоте каналами — мы сводим их к единой модели и держим состояние расчёта, чтобы разрыв связи не приводил к пересчёту с нуля.
Эффект измеряется тремя числами: насколько раньше появляется сигнал относительно закрытия свечи, какова доля ложных срабатываний на историческом отрезке и сколько раз логика переворачивается на боковике. Эти метрики снимаются до и после правки расчёта — так видно, что дала именно собственная логика, а не удачный период рынка.
Варианты реализации: расчёт в терминале, сервис или поток
У кастомного индикатора три принципиально разных места расчёта, и выбор между ними определяет всё остальное: откуда берётся история котировок, как быстро можно поменять формулу и кто получит сигнал. Ошибка на этом шаге становится видна позже — переписыванием архитектуры индикатора, когда логика уже нагружена пользователями.
Отталкиваться стоит не от удобства разработки, а от двух вопросов: где лежит история котировок и кто потребитель сигнала. Ниже — три рабочие схемы и ограничения, которые каждая накладывает.
| Вариант | Когда подходит | Ограничения |
|---|---|---|
| Расчёт в торговом терминале | Индикатор нужен вам одному в реальном времени, история котировок уже загружена в TradingView или другую платформу | Логика привязана к конкретной платформе, поделиться сигналом с подписчиками сложно, тяжёлые вычисления на большом окне заметно тормозят график |
| Внешний сервис расчёта | Индикатор нужен многим, важен одинаковый результат у всех и своя история котировок | Загрузку и хранение истории ведёте вы, сигнал приходит с задержкой на бар, появляется отдельный контур доступов |
| Потоковый расчёт | Много инструментов и высокая частота, сигналы уходят в бота или во внешнюю систему | Дороже в поддержке, нужен мониторинг потока и восстановление после разрывов, повторный пересчёт на истории сложнее |
На практике схемы комбинируют: терминал — для быстрой проверки идеи, сервис — для истории и одинаковых сигналов у всех, поток — для рассылки. Обсудим задачу и соберём связку под ваш сценарий.
Как строится работа: от постановки задачи до передачи кода
Кастомный индикатор — это не линия поверх графика, а расчётный конвейер с проверяемым поведением. Поэтому начинаем не с кода, а с аудита данных и формализации логики: пока неясно, на каком потоке считаем и что именно считаем, реализация просто воспроизводит ошибки задним числом. Ниже — этапы, по которым идёт работа.
- Аудит рыночных данных. Сверяем источник, глубину истории и частоту; ищем пропуски, дубликаты меток времени, пересечения свечей и смену режимов торгов.
- Формализация торговой логики. Переводим «сигнал на затухании импульса» в формальные условия: пороги, приоритет сигналов, поведение в боковике и запрет на будущие значения.
- Схема расчёта. Фиксируем, что считается по закрытой свече, а что пересчитывается на каждом тике: окна, сглаживание, буферы, защита от деления на ноль.
- Настройка параметров. Подбираем значения и проверяем устойчивость — результат не должен разрушаться при небольшом сдвиге входных параметров.
- Проверка на истории. Прогоняем на тренде, боковике и всплесках волатильности: смотрим задержку сигнала, долю ложных срабатываний и поведение на границах выборки.
- Проверка на живом потоке. Сверяем расчёт в реальном времени с историческим на том же интервале; расхождение выше допуска разбираем до причины — данные, округление или порядок обработки.
- Приёмка индикатора. Передаём код, конфигурации, тесты и документацию по параметрам и ограничениям, вместе проходим контрольные сценарии.
Комплект передачи: исходный код, документация, регламенты
Передача — это не архив файлов, а комплект, по которому ваши инженеры смогут сами собрать расчёт, проверить его на своих данных и развивать без нашего участия. Состав фиксируем в акте: каждый пункт закрывает конкретный риск — расхождение в формуле, разрыв в потоке котировок, остановку расчёта без владельца, доступ «сразу всем».
- Исходный код индикатора — репозиторий с историей изменений и комментариями к формулам, а не собранный артефакт: любую правку видно построчно, откат к прошлой ревизии занимает минуты.
- Описание расчёта — какие входные ряды берутся, как считаются окна усреднения, чем гасятся выбросы и пропуски в котировках, какие допущения заложены и где они перестают работать.
- Схема потоков данных — путь от источника котировок до момента, когда значение читает торговый контур, с точками контроля и описанным поведением при обрыве связи.
- Регламент обновления — кто и когда выпускает новую версию, как проверяется совместимость с уже накопленной историей сигналов, где ведётся журнал правок параметров.
- Права доступа к расчёту — роли: кто меняет параметры, кто только читает значения, кто выкатывает в торговый контур; смена параметров пишется в неизменяемый журнал.
- Тестовый контур — набор эталонных расчётов на исторических данных: после любой правки сравнение показывает, какие сигналы изменились и почему.
- Инструкция по развёртыванию — порядок подъёма с нуля на чистом окружении, чтобы восстановление после сбоя не зависело от нас.
Проходим по комплекту вместе с вашей командой на живых данных — так каждый пункт подтверждается до подписания, а не обнаруживается через месяц.
Кейс: расчёт арбитражного спреда на потоке котировок
Что было до
Индикатор считал арбитражный спред по своду котировок с шести площадок, но свод собирался периодическим опросом — раз в секунду. Задержка оповещения доходила до 4-6 секунд, а расхождение цен живёт меньше: сигнал приходил, когда окно уже закрылось. Сам спред считался по последней сделке, без глубины стакана и комиссий.
Разбор кейса начали с замера: сколько живёт расхождение и на какой секунде после него появлялся сигнал. Метрика до — шесть ложных входов из десяти.
Что изменили
Свод котировок перевели на потоковые подписки, события с площадок сводятся к единой шкале времени с компенсацией расхождения часов. Спред считается по исполнимым заявкам в стакане с учётом комиссий и задержки вывода — цифра отражает реальную доходность, а не разницу на графике.
Шум давили адаптивным фильтром Калмана, а порог входа сделали плавающим: он расширяется на волатильности и сужается в спокойном рынке.
Что стало
Задержка оповещения — меньше секунды, доля ложных входов упала с 60% до 12%. Сигналов в день стало меньше, но доля прибыльных среди них выросла в разы: индикатор перестал реагировать на расхождения, которые невозможно исполнить.
Кастомный индикатор вынесли в отдельный сервис с журналом расчётов — любой сигнал разбирается задним числом: какие котировки пришли, какой порог действовал, где сработала фильтрация.
Чем отличается кастомный индикатор от встроенного в терминал?
Штатный индикатор в терминале — фиксированная формула с открытыми настройками: период, тип сглаживания, источник цены, иногда учёт объёма. Меняя их, вы регулируете чувствительность и запаздывание, но не логику расчёта. Возможности штатного расчёта заканчиваются там, где нужен контекст за пределами одного ценового ряда.
Нестандартные условия рынка — тонкая ликвидность, затяжной флэт, гэпы на стыке сессий, каскады ликвидаций — штатная формула сглаживает вместе с полезным сигналом. Она не видит глубину книги заявок, ставку финансирования и распределение объёмов по уровням, а именно там чаще всего и лежит причина движения.
Кастомный индикатор собирается под вашу торговую логику: какие источники берём, как приводим их к общему масштабу, какое состояние рынка считаем сменой режима. Условие входа перестаёт быть описанием на словах и становится воспроизводимым — его можно пересчитать на истории и сверить с фактическими сделками.
Границы применимости важнее самой формулы. Пороги, подобранные на одном инструменте и одном режиме волатильности, на другом активе дают ложные срабатывания. Поэтому фиксируем, на каких данных считались пороги, при каких режимах индикатор молчит и когда сигнал считается недействительным.
Критерий выбора простой: если задача сводится к подбору пары параметров, хватит встроенного расчёта. Как только нужны собственные данные, своя логика и явные границы — это разработка кастомного индикатора. Опишите задачу — вернёмся с оценкой и планом.
Частые вопросы: источники данных, задержки, пересчёт истории
Индикатор честен только тогда, когда входные данные полны и одинаковы при каждом прогоне. Поэтому до первой строки кода разбираем три вещи: откуда берётся история котировок, что происходит при разрывах потока и как исключить подгонку логики под прошлые движения цены.
Разрывы не затираем молча: пропущенные интервалы помечаются, догружаются из резервного источника и остаются в журнале пересчёта. При сведении нескольких площадок данные приводятся к единой шкале времени и одной базе расчёта — иначе разные типы свечей и разные границы суток дают ложные сигналы на стыках.
Что делать, если история котировок неполная?
Неполнота фиксируется, а не скрывается: считаем долю пропущенных интервалов по каждому инструменту, догружаем их из второго источника и помечаем восстановленные участки. На них индикатор либо не выдаёт сигнал, либо помечает его как ненадёжный — вместо тихой подмены нулями.
Как вы защищаетесь от подгонки под прошлые движения цены?
Логика проверяется на отрезках, которые не участвовали в настройке: параметры подбираются на одном периоде и проверяются на последующих, включая участки с резкими движениями и боковое движение. Если результат держится только в одном состоянии рынка — параметры пересобираются.
Насколько точен пересчёт при сведении нескольких площадок?
Пересчёт идёт на одинаковом наборе инструментов и одинаковом окне при каждом запуске, поэтому результат воспроизводится точка в точку. Расхождение двух пересчётов на одной и той же истории считаем ошибкой, а не допустимым шумом.
Обсудим задачу и вернёмся с оценкой и планом работ
Чтобы разговор был предметным, к обращению достаточно приложить то, что уже есть под рукой: выгрузку истории свечей или сделок за период, черновик логики расчёта — пусть даже в виде текста или таблицы, — и описание того, как сигнал должен выглядеть на графике. Если индикатор уже реализован на другой платформе, пришлите исходник и скриншоты поведения: по ним сразу видно расхождения, которые обычно всплывают при переносе.
На первом разговоре разберём:
- состав данных: глубина истории, есть ли отдельные сделки, как ведём себя на разрывах котировок и пропусках;
- логику расчёта: окно сглаживания, реакция на резкие движения, поведение на низкой ликвидности;
- рынки и временные интервалы, на которых индикатор обязан давать одинаковый результат;
- форму вывода: отдельная панель, метки на графике, уровни или оповещения;
- что уже наработано: прототип, чужой код, готовые модули, которые нужно переиспользовать;
- критерии приёмки: на каких участках истории сверяем значения и что считаем расхождением;
- ограничения по срокам и порядку внедрения.
По итогам вернёмся с планом работ: этапы, что требуется с вашей стороны, в какой последовательности выпускаем расчётное ядро и визуальную часть. Опишите задачу в двух абзацах — этого хватит, чтобы назвать сроки и состав первого этапа.







