Разработка кастомных индикаторов технического анализа для крипторынка

Встроенные индикаторы терминала запаздывают и не учитывают логику вашей стратегии — сигнал приходит не тогда, когда нужен. Мы разрабатываем кастомный индикатор под задачу: расчёт в терминале, отдельный сервис или обработка потока котировок. Работаем под ключ и передаём исходный код с документацией.
Часто задаваемые вопросы

Кастомный индикатор вместо встроенного: где теряется сигнал

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

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

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

Кастомный индикатор решает не задачу «взять другую формулу», а задачу описать конкретные условия рынка: нормализация по волатильности, адаптивный период, пороги входа с учётом комиссии и проскальзывания. Такая логика проверяется на истории и на данных, не участвовавших в настройке. Дальше разбираем, как это собирается и где проходит граница между полезной доработкой и подгонкой под прошлое.

Что даёт собственный расчёт: точность, скорость, устойчивость

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

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

Боковик — режим, где классические осцилляторы выдают поток встречных сигналов и стратегия переворачивается на каждом отскоке. Здесь включается классификатор режима рынка: по сжатию волатильности и структуре экстремумов алгоритм распознаёт диапазон и переводит расчёт на работу от границ. Число переворотов за сопоставимый отрезок падает в разы, а просадка на флете сокращается.

Поток котировок обрабатывается инкрементально: сделки агрегируются в свечи, пересчитываются только изменившиеся значения, а не весь массив истории. Площадки вроде Binance отдают данные разными по частоте каналами — мы сводим их к единой модели и держим состояние расчёта, чтобы разрыв связи не приводил к пересчёту с нуля.

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

Варианты реализации: расчёт в терминале, сервис или поток

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

Отталкиваться стоит не от удобства разработки, а от двух вопросов: где лежит история котировок и кто потребитель сигнала. Ниже — три рабочие схемы и ограничения, которые каждая накладывает.

Вариант Когда подходит Ограничения
Расчёт в торговом терминале Индикатор нужен вам одному в реальном времени, история котировок уже загружена в TradingView или другую платформу Логика привязана к конкретной платформе, поделиться сигналом с подписчиками сложно, тяжёлые вычисления на большом окне заметно тормозят график
Внешний сервис расчёта Индикатор нужен многим, важен одинаковый результат у всех и своя история котировок Загрузку и хранение истории ведёте вы, сигнал приходит с задержкой на бар, появляется отдельный контур доступов
Потоковый расчёт Много инструментов и высокая частота, сигналы уходят в бота или во внешнюю систему Дороже в поддержке, нужен мониторинг потока и восстановление после разрывов, повторный пересчёт на истории сложнее

На практике схемы комбинируют: терминал — для быстрой проверки идеи, сервис — для истории и одинаковых сигналов у всех, поток — для рассылки. Обсудим задачу и соберём связку под ваш сценарий.

Как строится работа: от постановки задачи до передачи кода

Кастомный индикатор — это не линия поверх графика, а расчётный конвейер с проверяемым поведением. Поэтому начинаем не с кода, а с аудита данных и формализации логики: пока неясно, на каком потоке считаем и что именно считаем, реализация просто воспроизводит ошибки задним числом. Ниже — этапы, по которым идёт работа.

  1. Аудит рыночных данных. Сверяем источник, глубину истории и частоту; ищем пропуски, дубликаты меток времени, пересечения свечей и смену режимов торгов.
  2. Формализация торговой логики. Переводим «сигнал на затухании импульса» в формальные условия: пороги, приоритет сигналов, поведение в боковике и запрет на будущие значения.
  3. Схема расчёта. Фиксируем, что считается по закрытой свече, а что пересчитывается на каждом тике: окна, сглаживание, буферы, защита от деления на ноль.
  4. Настройка параметров. Подбираем значения и проверяем устойчивость — результат не должен разрушаться при небольшом сдвиге входных параметров.
  5. Проверка на истории. Прогоняем на тренде, боковике и всплесках волатильности: смотрим задержку сигнала, долю ложных срабатываний и поведение на границах выборки.
  6. Проверка на живом потоке. Сверяем расчёт в реальном времени с историческим на том же интервале; расхождение выше допуска разбираем до причины — данные, округление или порядок обработки.
  7. Приёмка индикатора. Передаём код, конфигурации, тесты и документацию по параметрам и ограничениям, вместе проходим контрольные сценарии.

Комплект передачи: исходный код, документация, регламенты

Передача — это не архив файлов, а комплект, по которому ваши инженеры смогут сами собрать расчёт, проверить его на своих данных и развивать без нашего участия. Состав фиксируем в акте: каждый пункт закрывает конкретный риск — расхождение в формуле, разрыв в потоке котировок, остановку расчёта без владельца, доступ «сразу всем».

  • Исходный код индикатора — репозиторий с историей изменений и комментариями к формулам, а не собранный артефакт: любую правку видно построчно, откат к прошлой ревизии занимает минуты.
  • Описание расчёта — какие входные ряды берутся, как считаются окна усреднения, чем гасятся выбросы и пропуски в котировках, какие допущения заложены и где они перестают работать.
  • Схема потоков данных — путь от источника котировок до момента, когда значение читает торговый контур, с точками контроля и описанным поведением при обрыве связи.
  • Регламент обновления — кто и когда выпускает новую версию, как проверяется совместимость с уже накопленной историей сигналов, где ведётся журнал правок параметров.
  • Права доступа к расчёту — роли: кто меняет параметры, кто только читает значения, кто выкатывает в торговый контур; смена параметров пишется в неизменяемый журнал.
  • Тестовый контур — набор эталонных расчётов на исторических данных: после любой правки сравнение показывает, какие сигналы изменились и почему.
  • Инструкция по развёртыванию — порядок подъёма с нуля на чистом окружении, чтобы восстановление после сбоя не зависело от нас.

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

Кейс: расчёт арбитражного спреда на потоке котировок

Что было до

Индикатор считал арбитражный спред по своду котировок с шести площадок, но свод собирался периодическим опросом — раз в секунду. Задержка оповещения доходила до 4-6 секунд, а расхождение цен живёт меньше: сигнал приходил, когда окно уже закрылось. Сам спред считался по последней сделке, без глубины стакана и комиссий.

Разбор кейса начали с замера: сколько живёт расхождение и на какой секунде после него появлялся сигнал. Метрика до — шесть ложных входов из десяти.

Что изменили

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

Шум давили адаптивным фильтром Калмана, а порог входа сделали плавающим: он расширяется на волатильности и сужается в спокойном рынке.

Что стало

Задержка оповещения — меньше секунды, доля ложных входов упала с 60% до 12%. Сигналов в день стало меньше, но доля прибыльных среди них выросла в разы: индикатор перестал реагировать на расхождения, которые невозможно исполнить.

Кастомный индикатор вынесли в отдельный сервис с журналом расчётов — любой сигнал разбирается задним числом: какие котировки пришли, какой порог действовал, где сработала фильтрация.

Чем отличается кастомный индикатор от встроенного в терминал?

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

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

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

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

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

Частые вопросы: источники данных, задержки, пересчёт истории

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

Разрывы не затираем молча: пропущенные интервалы помечаются, догружаются из резервного источника и остаются в журнале пересчёта. При сведении нескольких площадок данные приводятся к единой шкале времени и одной базе расчёта — иначе разные типы свечей и разные границы суток дают ложные сигналы на стыках.

Что делать, если история котировок неполная?

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

Как вы защищаетесь от подгонки под прошлые движения цены?

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

Насколько точен пересчёт при сведении нескольких площадок?

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

Обсудим задачу и вернёмся с оценкой и планом работ

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

На первом разговоре разберём:

  • состав данных: глубина истории, есть ли отдельные сделки, как ведём себя на разрывах котировок и пропусках;
  • логику расчёта: окно сглаживания, реакция на резкие движения, поведение на низкой ликвидности;
  • рынки и временные интервалы, на которых индикатор обязан давать одинаковый результат;
  • форму вывода: отдельная панель, метки на графике, уровни или оповещения;
  • что уже наработано: прототип, чужой код, готовые модули, которые нужно переиспользовать;
  • критерии приёмки: на каких участках истории сверяем значения и что считаем расхождением;
  • ограничения по срокам и порядку внедрения.

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

Направления блокчейн-разработки

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139