Создание собственного индикатора в TradingView: Полное руководство
Научитесь создавать свои уникальные индикаторы на платформе TradingView, которые помогут вам анализировать рынок и принимать более обоснованные торговые решения. Пошаговая инструкция для начинающих.

Введение: Зачем создавать свой индикатор?
Основные элементы Pine Script
| Переменная | Хранит данные. |
| Функция | Выполняет определенное действие. |
| Оператор | Выполняет операции над данными. |
| Условие | Позволяет выполнять код в зависимости от ситуации. |
| Отрисовка | Отображение информации на графике. |
Преимущества уникальных индикаторов
Создание собственных торговых индикаторов открывает перед трейдерами и аналитиками новые горизонты возможностей. Вместо того чтобы полагаться исключительно на стандартные инструменты, доступные на любой торговой платформе, уникальный индикатор позволяет реализовать специфические торговые стратегии, учитывающие индивидуальные рыночные условия и предпочтения.
- Преимущества уникальных индикаторов
- Обзор платформы TradingView и Pine Script
- Цель статьи: практическое руководство
Преимущества здесь очевидны: повышение точности анализа, разработка алгоритмов, адаптированных под конкретные активы или таймфреймы, и, как следствие, потенциальное улучшение результатов торговли. Например, трейдер может захотеть визуализировать комбинацию нескольких стандартных индикаторов с особыми параметрами или разработать совершенно новый метод оценки рыночной ситуации, который не предусмотрен в стандартном наборе.
Современные платформы для технического анализа предоставляют мощные инструменты для этих целей. Одной из наиболее популярных и доступных является TradingView, известная своим интуитивно понятным интерфейсом и широким функционалом.
Ключевым элементом для создания пользовательских индикаторов и стратегий на TradingView является язык программирования Pine Script. Этот специализированный язык разработан специально для написания торговых индикаторов и стратегий, он относительно прост в изучении для тех, кто имеет базовое представление о программировании, и позволяет быстро создавать, тестировать и применять собственные разработки непосредственно на графиках TradingView. Возможность делиться своими индикаторами с сообществом также является привлекательным аспектом платформы.
Цель данной статьи – предоставить практическое руководство по началу работы с Pine Script для создания собственных индикаторов на платформе TradingView. Мы начнем с основ языка, рассмотрим его синтаксис, структуру и основные строительные блоки.
Далее, мы перейдем к более сложным концепциям, таким как переменные, типы данных, функции и логические операции. Пошагово, с примерами кода, мы покажем, как можно трансформировать идею торгового индикатора в рабочую скрипт-программу. Этот материал предназначен как для начинающих пользователей TradingView, так и для трейдеров, желающих углубить свои знания в области количественного анализа и автоматизации торговых процессов.
"«Инновации — это то, что отличает лидера от последователей.» - Стив Джобс"
Основы Pine Script: Синтаксис и переменные
Структура скрипта
Pine Script, язык программирования TradingView, имеет четкую иерархическую структуру, которая определяет порядок выполнения кода и его функциональность. Каждый скрипт начинается с объявления его версии (например, `//@version=5`), что важно для совместимости и использования актуальных функций языка.
- Структура скрипта
- Типы данных
- Объявление переменных и констант
- Комментарии в коде
Затем следуют объявления переменных, функций, условий и, наконец, основной код, который определяет, как индикатор будет вычисляться и отображаться на графике. Скрипты могут быть трех основных типов: индикаторы (`indicator()`), стратегии (`strategy()`) и библиотеки (`library()`).
Для индикаторов и стратегий вводится функция `plot()` или `plotshape()` для визуализации данных. Структура кода в Pine Script, подобно многим другим языкам, основана на последовательности инструкций, которые выполняются для каждого бара (свечи) на графике, обеспечивая динамический анализ данных в реальном времени.
Понимание типов данных является фундаментальным для написания любого программного кода, и Pine Script не исключение. Основные типы данных включают: `float` (число с плавающей точкой, например, 10.5, -3.14), `int` (целое число, например, 100, -5), `bool` (логическое значение: `true` или `false`), `color` (для задания цвета, например, `color.red`, `color.blue`), `string` (текстовая строка, например, "Цена" ) и `NA` (обозначает отсутствие значения).
Кроме того, Pine Script имеет специальные типы данных, такие как `series`, которые представляют собой последовательность значений, изменяющуюся с каждым новым баром на графике. Корректное использование типов данных предотвращает ошибки и обеспечивает правильную работу логики индикатора.
Переменные в Pine Script служат для хранения данных, которые могут изменяться в процессе выполнения скрипта. Они объявляются с использованием ключевого слова `var` (для переменных, значение которых сохраняется между барами) или путем прямого присваивания.
Например, `myVariable = 10` создаст переменную `myVariable` со значением 10. Константы, напротив, представляют собой значения, которые не изменяются после их инициализации.
В Pine Script константы обычно объявляются как переменные, но им присваивается значение только один раз, и в дальнейшем оно не меняется. Использование комментариев (`//` для однострочных или `/* ...
*/` для многострочных) критически важно для документирования кода. Комментарии помогают объяснить назначение переменных, логику функций и сложные участки кода, делая скрипт понятным для вас в будущем и для других пользователей.
Для лучшего понимания рассмотрим простой пример. Представим, что мы хотим отобразить скользящую среднюю цены закрытия.
Мы можем объявить переменную для хранения значения скользящей средней: `float smaValue = ta.sma(close, 14)`. Здесь `float` указывает тип данных, `smaValue` – имя переменной, `ta.sma` – встроенная функция для расчета простой скользящей средней, `close` – встроенная переменная, представляющая цену закрытия текущего бара, а `14` – период расчета.
КАК ЛЮДИ ТЕРЯЮТ ДЕНЬГИ В КРИПТО
Выберите сценарий поведения рынка, чтобы увидеть ловушки, в которые попадают 95% новичков.
Затем, чтобы отобразить это значение на графике, мы используем функцию `plot()`: `plot(smaValue, title='SMA 14', color=color.blue)`. Эта строка кода визуализирует рассчитанное значение `smaValue` как синюю линию с подписью 'SMA 14'. Добавим комментарий: `// Расчет и отображение 14-периодной SMA`.
"Объявление переменных и констант"
Работа с ценовыми данными и встроенными функциями
Доступ к ценам (Open, High, Low, Close, Volume)
В мире финансовых рынков, где каждая доля секунды может иметь значение, эффективная работа с ценовыми данными является краеугольным камнем успешного трейдинга и анализа. Платформы для торговли и технического анализа предоставляют прямой доступ к ключевым ценовым показателям, таким как цена открытия (Open), максимальная цена (High), минимальная цена (Low), цена закрытия (Close) и объем торгов (Volume) для каждого торгового периода (например, минуты, часа, дня).
- Доступ к ценам (Open, High, Low, Close, Volume)
- Использование математических операторов
- Основные встроенные функции (sma, ema, rsi и др.)
Эти данные, часто называемые OHLCV, служат основой для построения ценовых графиков и расчета технических индикаторов. Для манипулирования этими данными и создания собственных торговых стратегий разработчики могут использовать стандартные математические операторы: сложение (+), вычитание (-), умножение (*), деление (/) и возведение в степень (^).
Эти операторы позволяют проводить базовые арифметические операции, необходимые для преобразования и агрегации ценовой информации. Помимо арифметических операций, платформы предлагают обширный набор встроенных функций, которые значительно упрощают создание сложных аналитических инструментов.
К ним относятся, например, экспоненциальная скользящая средняя (EMA), простая скользящая средняя (SMA), индекс относительной силы (RSI), стохастический осциллятор и многие другие. Эти функции уже реализованы и оптимизированы, позволяя трейдерам и аналитикам сосредоточиться на интерпретации результатов, а не на низкоуровневой реализации расчетов.
Использование комбинации ценовых данных, математических операторов и встроенных функций открывает широкие возможности для глубокого анализа рыночных тенденций, выявления закономерностей и принятия обоснованных торговых решений. Понимание этих основ является первым шагом к разработке собственных прибыльных стратегий.
Дальнейшее углубление в работу с ценовыми данными и встроенными функциями позволяет создавать более изощренные аналитические инструменты. Например, расчет среднего значения цен закрытия за определенный период или нахождение максимальной/минимальной цены за последние N свечей является стандартной операцией, которая может быть реализована с помощью комбинации доступа к OHLCV данным и базовых математических операторов.
Функции, такие как SMA, вычисляют среднее арифметическое цен закрытия за указанный период, сглаживая ценовые колебания и выявляя основные тренды. EMA, в свою очередь, придает больший вес последним ценам, делая ее более чувствительной к текущим изменениям рынка.
RSI измеряет скорость и величину последних ценовых изменений, помогая определить условия перекупленности или перепроданности актива. Помимо упомянутых, существует множество других встроенных функций, таких как MACD (Moving Average Convergence Divergence), Bollinger Bands, Stochastic Oscillator, ADX (Average Directional Index) и другие.
Каждая из этих функций предназначена для анализа различных аспектов рыночного движения. Понимание принципов работы каждой функции, а также умение комбинировать их друг с другом или с ценовыми данными, позволяет создавать уникальные индикаторы, адаптированные к индивидуальным торговым стилям и рыночным условиям. Например, можно создать индикатор, который сигнализирует о пересечении двух скользящих средних разной длины, или индикатор, который учитывает одновременно RSI и объем торгов для более надежных сигналов.
Создание первого простого индикатора: Скользящая средняя
Определение параметров индикатора
Создание собственного технического индикатора – это важный шаг в освоении программирования для финансовых рынков, позволяющий глубоко понять, как работают существующие инструменты, и адаптировать их под свои нужды. Простейшим, но при этом фундаментальным индикатором является скользящая средняя (Moving Average, MA).
- Определение параметров индикатора
- Написание кода для расчета SMA
- Отображение линии на графике
Для ее создания необходимо определить несколько ключевых параметров. Во-первых, это период скользящей средней – количество последних баров (торговых периодов), цены которых будут использоваться для расчета.
Например, период 20 означает, что будут учитываться цены закрытия последних 20 баров. Во-вторых, необходимо выбрать тип цены, к которой будет применяться расчет.
Чаще всего используется цена закрытия (Close), но также могут применяться цена открытия (Open), максимальная (High), минимальная (Low) или средняя цена (типичная цена (High+Low)/2 или средняя из OHLC). В-третьих, для расчета простой скользящей средней (SMA) необходимо определить, какой именно тип скользящей средней требуется.
Существуют различные вариации: простая (SMA), экспоненциальная (EMA), взвешенная (WMA) и другие. Для начала мы сосредоточимся на самой простой – SMA.
Написание кода для расчета SMA включает в себя получение исторических данных цен закрытия за выбранный период и последующее вычисление их среднего арифметического. Предположим, мы используем платформу, которая предоставляет доступ к массиву цен закрытия `close_prices` и имеет функцию `sma(source, period)`.
В этом случае расчет SMA с периодом 14 для цен закрытия будет выглядеть следующим образом: `sma_value = sma(close_prices, 14)`. Если же платформа требует ручного расчета, то потребуется итеративно пройти по последним `period` значениям `close_prices`, просуммировать их и разделить полученную сумму на `period`.
После расчета значения индикатора (в данном случае – линии SMA) его необходимо отобразить на графике. Большинство торговых платформ имеют специальные функции для отрисовки линий, кривых или гистограмм на основе рассчитанных значений.
КАЛЬКУЛЯТОР ПРИБЫЛИ
Обычный трейдер против ИИ-бота
Расчеты ведутся со строгим риск-менеджментом: 2% риска на сделку (20 USDT). Никаких казино-стратегий или ставок всем депозитом.

Например, команда может выглядеть как `plot(sma_value, color=blue, title='SMA 14')`. Эта команда отрисует линию синего цвета с подписью 'SMA 14' на графике, используя рассчитанные значения SMA. Таким образом, комбинация определения параметров, написания кода для расчета и визуализации результата позволяет создать полноценный технический индикатор, который будет помогать в анализе рыночной ситуации.
Добавление логики и условий: RSI с уровнями
Расчет RSI
Индекс относительной силы (RSI) является популярным осциллятором, используемым для измерения скорости и изменения ценовых дви Moving Average Convergence Divergence (MACD). Для расчета RSI сначала необходимо определить период сглаживания (обычно 14 дней).
- Расчет RSI
- Установка пороговых значений
- Визуализация сигналов (например, пересечение уровней)
Затем вычисляется среднее значение положительных изменений цены и среднее значение отрицательных изменений цены за этот период. Относительная сила (RS) рассчитывается как отношение среднего положительного изменения к среднему отрицательному изменению.
Наконец, RSI преобразуется в шкалу от 0 до 100 по формуле: RSI = 100 - (100 / (1 + RS)). Этот индикатор помогает определить состояния перекупленности и перепроданности актива.
В трейдинге часто используют пороговые значения, такие как 70 и 30. Когда RSI поднимается выше 70, это может сигнализировать о том, что актив перекуплен и возможна коррекция вниз.
Напротив, когда RSI опускается ниже 30, это может указывать на состояние перепроданности и потенциальный разворот вверх. Визуализация этих уровней на графике делает анализ более наглядным.
Например, можно отрисовать горизонтальные линии на уровнях 70 и 30. Пересечение ценой или самим RSI этих уровней может служить торговым сигналом.
Такие сигналы, как пересечение RSI уровня 70 сверху вниз или уровня 30 снизу вверх, часто интерпретируются как сигналы на продажу и покупку соответственно. Отображение этих пересечений на графике с помощью маркеров или цветовых изменений может значительно упростить процесс принятия торговых решений.
Расчет RSI начинается с определения периода, за который анализируется изменение цены. Стандартное значение — 14 свечей (дней, часов и т.д.).
На каждом шаге рассчитывается средняя прибыль (Gain) и средний убыток (Loss) за выбранный период. Формула для расчета RSI выглядит следующим образом: RSI = 100 - (100 / (1 + RS)), где RS (Relative Strength) = средняя Gain / средний Loss.
Пороговые значения, обычно 70 и 30, устанавливаются для определения зон перекупленности и перепроданности. Уровень 70 означает, что актив, возможно, достиг состояния перекупленности, и цена может начать снижаться.
Уровень 30, наоборот, указывает на возможную перепроданность и потенциальный рост цены. Эти уровни можно легко визуализировать на графике в виде горизонтальных линий.
Для генерации торговых сигналов можно использовать пересечения RSI с этими уровнями. Например, если RSI пересекает уровень 70 сверху вниз, это может быть сигналом к продаже.
Если RSI пересекает уровень 30 снизу вверх, это может быть сигналом к покупке. Такие сигналы можно отображать на графике с помощью специальных символов, таких как стрелки или точки, которые появляются в момент генерации сигнала. Это позволяет трейдерам быстро идентифицировать потенциальные торговые возможности без необходимости постоянно следить за числовыми значениями индикатора.
Продвинутые возможности: Использование переменных состояния и отрисовка
Переменные `var` для хранения состояний
В программировании торговых стратегий переменные состояния, такие как `var`, играют ключевую роль в отслеживании и хранении информации между барами (свечами) графика. Это позволяет создавать более сложные логические условия и сохранять историю событий.
- Переменные `var` для хранения состояний
- Функции `plotchar`, `plotshape`, `alertcondition`
- Настройка цветов и стилей линий
Например, переменная `var` может использоваться для фиксации момента, когда RSI пересек определенный уровень, или для хранения предыдущего значения индикатора. Функции `plotchar`, `plotshape` и `alertcondition` предоставляют мощные инструменты для визуализации сигналов и генерации уведомлений.
`plotchar` и `plotshape` позволяют отрисовывать на графике различные символы в указанные моменты времени, например, стрелки вверх или вниз, точки или другие фигуры, обозначающие сигналы покупки или продажи. Это делает визуальный анализ гораздо более информативным.
Функция `alertcondition` позволяет настроить условия для генерации оповещений, которые могут быть отправлены трейдеру через различные каналы (например, push-уведомления, электронная почта). Это особенно полезно, когда трейдер не может постоянно наблюдать за графиком.
УГАДАЙ КУДА ПОЙДЕТ ЦЕНА BTC
Сможешь ли ты предсказать движение рынка за 15 секунд без ИИ? Победителей ждет подарок!
Настройка цветов и стилей линий с помощью соответствующих параметров позволяет сделать графики более читабельными и выделить важные элементы, такие как сигнальные линии или уровни поддержки/сопротивления. Сочетание переменных состояния и функций отрисовки открывает широкие возможности для создания кастомизированных торговых систем, адаптированных под индивидуальные потребности трейдера.
Переменные состояния, объявляемые с помощью ключевого слова `var`, являются незаменимым инструментом для хранения данных, которые должны сохраняться между итерациями расчета индикатора или стратегии. Это означает, что значение переменной `var` не сбрасывается при переходе к следующей свече, а продолжает храниться, что позволяет отслеживать предыдущие состояния, накапливать значения или запоминать определенные события.
Функции `plotchar`, `plotshape` и `alertcondition` значительно расширяют возможности анализа и торговли. `plotchar` и `plotshape` позволяют отрисовывать на графике специальные символы (например, кружки, крестики, стрелки) в местах, где выполняются заданные условия, что наглядно демонстрирует точки входа или выхода.
`alertcondition` дает возможность настроить триггеры для отправки уведомлений при выполнении определенных условий, что критически важно для своевременного реагирования на рыночные движения, особенно когда вы не находитесь у монитора. Дополнительно, возможность настраивать цвета, толщину и стиль линий (например, пунктирные или сплошные) для отображения различных индикаторов, уровней или сигналов, повышает читаемость графика и облегчает восприятие информации. Комбинируя эти инструменты, можно создавать весьма изощренные торговые системы, которые не только сигнализируют о торговых возможностях, но и помогают их визуально анализировать и своевременно получать оповещения.
Тестирование и отладка вашего индикатора
Инструменты отладки в TradingView
TradingView предоставляет мощные инструменты для отладки ваших пользовательских индикаторов. Одним из ключевых инструментов является панель 'Pine Editor', которая не только позволяет писать код, но и отображает ошибки компиляции и предупреждения.
- Инструменты отладки в TradingView
- Рекомендации по проверке корректности работы
- Как избежать распространенных ошибок
При возникновении проблем, внимательно изучите сообщения об ошибках. Они часто указывают на конкретную строку и тип проблемы (например, синтаксическая ошибка, неопределенная переменная).
Кроме того, вы можете использовать функцию `log.info()` для вывода значений переменных в консоль отладки. Это позволяет отслеживать ход выполнения вашего скрипта и проверять промежуточные результаты.
Например, если вы хотите проверить, правильно ли рассчитывается скользящая средняя, вы можете вывести ее значение на каждом баре. Интерактивная графика TradingView также помогает визуально выявить проблемы: если индикатор ведет себя не так, как ожидалось на графике, это явный сигнал к началу отладки. Проверьте, правильно ли инициализируются переменные, корректно ли обрабатываются граничные условия (например, первый бар графика) и нет ли ошибок в логике расчетов.
При проверке корректности работы индикатора важно подходить систематически. Начните с базовых проверок: правильно ли рассчитываются основные значения, соответствуют ли они вашим ожиданиям на исторических данных.
Используйте простые, известные паттерны или исторические события, чтобы убедиться, что индикатор реагирует адекватно. Например, если вы разрабатываете индикатор волатильности, проверьте его поведение во время значительных ценовых движений.
Тестируйте индикатор на различных таймфреймах и инструментах, чтобы убедиться в его универсальности. Иногда ошибки проявляются только при определенных условиях или на специфических рынках.
Не забывайте о проверке крайних случаев: что происходит, когда цена остается неизменной, когда происходит резкий скачок или падение. Также важно проверить, как индикатор ведет себя при изменении настроек пользователя.
Убедитесь, что все входные параметры работают корректно и не вызывают непредвиденных результатов. Сравнивайте результаты вашего индикатора с другими, проверенными инструментами или индикаторами, если это возможно, для перекрестной проверки. Ведение журнала тестирования, где вы фиксируете шаги, ожидаемые результаты и фактические результаты, может значительно упростить процесс отладки и документирования.
Публикация и использование вашего индикатора
Добавление индикатора в избранное
После того как вы успешно разработали, протестировали и отладили свой индикатор, следующим шагом может быть его публикация или интеграция в ваш личный арсенал инструментов. В TradingView существует удобный механизм добавления индикаторов в 'Избранное'.
- Добавление индикатора в избранное
- Публикация скрипта для сообщества
- Как делиться своим индикатором
Это позволяет быстро получать к ним доступ с любого графика, не вводя код заново. Чтобы добавить индикатор в избранное, найдите его в списке индикаторов на графике (обычно доступно через кнопку "Индикаторы" в верхней панели) и нажмите на значок звездочки рядом с его названием.
Это особенно полезно для часто используемых вами скриптов, будь то ваши собственные разработки или индикаторы других авторов, которые вы считаете ценными. Отобранные таким образом индикаторы будут отображаться в отдельной вкладке в списке индикаторов, что значительно ускоряет процесс настройки графиков. Эта функция делает управление вашими любимыми инструментами простым и интуитивно понятным, позволяя сосредоточиться на анализе рынка, а не на поиске нужного индикатора.
TradingView предоставляет платформу для обмена вашими скриптами с сообществом трейдеров. Публикация вашего индикатора позволяет другим пользователям использовать его, оставлять отзывы и помогать вам в его дальнейшем совершенствовании.
Чтобы опубликовать скрипт, откройте его в Pine Editor, нажмите кнопку "Опубликовать" и следуйте инструкциям. Вам потребуется дать индикатору название, описание, выбрать категории и, при желании, добавить изображение.
Важно написать четкое и подробное описание, объясняющее, как работает индикатор, какие сигналы он генерирует и как его лучше использовать. Вы также можете указать, разрешаете ли вы копирование вашего кода.
Если вы хотите поделиться своим индикатором с конкретными людьми или получить обратную связь перед публичным релизом, вы можете использовать функцию "Отправить на рассмотрение" или просто поделиться ссылкой на приватный скрипт. Публикация — отличный способ внести свой вклад в сообщество, получить признание и улучшить свои навыки программирования благодаря обратной связи от других пользователей.
FAQ
Читать еще

Евгений Волков
Трейдер с 2-летним стажем, основатель AI INSTARDERS Bot. Прошел путь от новичка до основателя своего проекта. Убежден, что трейдинг — это математика, а не магия. Я обучил нейросеть на своих стратегиях и много часов графиков, чтобы она спасала новичков от фатальных ошибок.
Обсуждение (8)
Пытаюсь написать свой первый RSI, но что-то не получается с формулой. Кто-нибудь может подсказать, где ошибка?
Я только начал изучать Pine Script. Очень много всего, но документация TradingView очень помогла. Всем новичкам советую начать с нее!
Народ, кто-нибудь делал индикатор на основе скользящих средних, который бы сам подстраивал период? Есть идеи?
Не могу понять, как использовать функцию `security()`. Она вроде нужна для получения данных с других таймфреймов, но результат какой-то странный.
К CryptoMaster88: Проверь, правильно ли ты рассчитываешь среднее значение за определенный период. Часто ошибка бывает именно там.
Кто-нибудь знает, есть ли ограничение на количество пользовательских индикаторов, которые можно добавить на график?
Я написал свой индикатор для определения дивергенций. Работает неплохо, могу поделиться кодом, если кому интересно.
Хочу сделать индикатор, который рисует зоны поддержки/сопротивления автоматически. Это реально сложно, кто-нибудь уже пробовал?