Введение
Без правильных торговых инструментов невозможно провести эффективный технический анализ. Надежная торговая стратегия поможет вам избежать распространенных ошибок, улучшить управление рисками и повысить вашу способность выявлять и использовать возможности.
Для многих TradingView – лучшая платформа для построения графиков. Мощное веб-приложение HTML5 предлагает множество инструментов технического анализа и используется миллионами пользователей для отслеживания движений на рынках акций, Форекс и криптовалют.
TradingView обладает множеством мощных функций: он позволяет нам отслеживать активы на нескольких торговых платформах и делиться торговыми идеями в социальных сетях. В этой статье мы поговорим о ваших возможностях настройки. Мы будем использовать PineScript, собственный язык программирования TradingView, который дает нам контроль над макетами наших графиков.
Давайте начнем!
Что такое Pine Script?
Pine Script — это язык сценариев, используемый для настройки графиков TradingView. Платформа уже предоставляет для этого множество функций, но Pine Script предлагает и некоторые дополнительные возможности. Если вы хотите изменить цвета свечей или протестировать новую стратегию, редактор Pine позволяет вам настраивать графики в режиме реального времени так, как вы предпочитаете.
Код имеет очень подробную документацию, поэтому обязательно обратитесь к руководству пользователя для получения дополнительной информации. Наша цель в этом руководстве — обсудить некоторые основы и представить индикаторы, полезные для торговли криптовалютой.
Настройка
Начать использовать Pine Script очень просто. Весь код выполняется на серверах TradingView, поэтому мы можем получить доступ к редактору и разрабатывать скрипты из браузера — никаких дополнительных загрузок или настроек не требуется.
В этом уроке мы будем использовать валютную пару Bitcoin/Binance USD (BTCBUSD). Если у вас еще нет учетной записи, создайте ее бесплатно (есть также вариант подписки Pro, но для этого руководства это не обязательно).
Перейдите по этой ссылке, и вы увидите такой график:

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

Полный график. Вы можете настроить период времени, щелкнув параметры над вкладками, выделенными на изображении.
Мы не будем обсуждать, как использовать различные доступные инструменты, но если вы используете технический анализ, рекомендуем вам с ними ознакомиться. В левом нижнем углу (показано на изображении) вы увидите несколько разных вкладок — нажмите «Редактор Pine».
Редактор Pine

В этом редакторе происходит волшебство. Давайте введем инструкцию. Нажмите «Добавить в диаграмму», чтобы отобразить приведенные выше аннотации. Обратите внимание, что ситуация может усложниться, если мы включим несколько аннотаций одновременно, поэтому мы удалим их для следующих примеров (щелкните правой кнопкой мыши по диаграмме > Удалить индикаторы).
Как мы видим, у нас уже есть несколько строк кода. Давайте нажмем «Добавить в диаграмму» и посмотрим, что произойдет.

Второе изображение будет добавлено ниже оригинала. На новой диаграмме теперь отображаются те же данные. Наведите указатель мыши на «Мой сценарий» и щелкните крестик, чтобы удалить его. Теперь давайте углубимся в код.
исследование("Мой сценарий")Эта первая строка просто настраивает наши аннотации. Нам нужно только определить имя индикатора («Мой скрипт» в данном случае), но мы также можем добавить некоторые дополнительные параметры. Одним из них является наложение, которое указывает TradingView вставить индикатор в существующий график (вместо использования нового сегмента). Как мы видим в первом примере, значение по умолчанию — false. Параметр overlay=true добавляет индикатор на существующий график, но мы сейчас его использовать не будем.
участок(близко)Эта линия представляет собой инструкцию для построения цены закрытия биткойна. Параметрplot просто дает нам линейный график, но, как мы вскоре увидим, также возможно отображать свечи и бары.
Теперь давайте попробуем следующее:
//@version=4 исследование("Мой скрипт", наложение=истина) график(открыть, цвет=цвет.фиолетовый)После добавления этого параметра мы увидим второй график (выглядящий как исходный, но сдвинутый вправо). Все, что мы сделали, это построили цену открытия. Поскольку открытие текущего дня совпадает с закрытием предыдущего дня, логично, что они имеют одинаковый формат.
ХОРОШО! Давайте избавимся от текущих заметок (помните, мы делаем это, щелкнув правой кнопкой мыши и выбрав «Удалить индикаторы»). Наведите указатель мыши на Bitcoin/BUSD и нажмите «Скрыть», чтобы очистить текущий график.
Многие трейдеры предпочитают графики свечей, потому что они дают нам больше информации, чем простой график, подобный тому, который мы только что создали. Мы добавим их позже.
//@version=4 study("Мой скрипт", overlay=true) plotcandle(открыто, высоко, низко, закрыто)Это хорошее начало, неплохо было бы добавить немного цветов. Обычно мы используем красные свечи, когда цена открытия выше цены закрытия за данный период, и зеленые свечи, если цена закрытия выше цены открытия. Давайте добавим строку под функциейplotcandle():
//@version=4 study("Мой скрипт", overlay=true) цвета = открыто >= закрыто ? цвет.красный : цвет.зеленый plotcandle(открыто, высоко, низко, закрыто)Эта функция анализирует каждую свечу и проверяет, превышает ли значение открытия значение закрытия или равно ему. Если это так, это означает, что цены за этот период упали, поэтому свеча станет красной. В противном случае он будет зеленым. Измените функцию plotcandle() , чтобы установить для этой цветовой схемы следующее значение:
//@version=4 study("Мой скрипт", overlay=true) colors = open >= close ? color.red : color.green plotcandle(open, high, low, close, color=colors)Удалите текущие индикаторы, если вы еще этого не сделали, и добавьте этот на график. Теперь у нас должно получиться что-то похожее на обычный свечной график.

Отличный!
Построение скользящих средних (ММ)
Мы проходим некоторые основы. Давайте построим наш первый пользовательский индикатор — экспоненциальную скользящую среднюю или EMA. Это ценный инструмент, поскольку он позволяет нам фильтровать любой рыночный шум и сглаживать ценовое движение.
EMA немного отличается от простой скользящей средней (SMA) тем, что уделяет больше внимания самым последним данным. Он имеет тенденцию более реагировать на внезапные движения и часто используется для краткосрочных стратегий (например, дневной торговли).
Простая скользящая средняя (SMA)
Давайте также построим простую скользящую среднюю (SMA), чтобы позже сравнить их. Добавьте эту строку в свой скрипт:
участок(sma(закрыть, 10))Это значение представляет собой среднее значение за последние десять дней. Отрегулируйте число в скобках, чтобы увидеть, как меняется кривая при рассмотрении разных периодов.

MMS за последние десять дней.
Экспоненциальная скользящая средняя (EMA)
MME немного сложнее, но не волнуйтесь. Давайте сначала посмотрим на формулу:
EMA = (закрытие — EMA предыдущего дня) * умноженное — EMA предыдущего дняЧто это значит? Для каждого дня мы рассчитываем новую скользящую среднюю на основе средней за предыдущий день. Множитель учитывает «вес» самого последнего периода и рассчитывается по формуле:
Множитель = 2 / (период EMA + 1)Как и в случае с простыми скользящими средними, нам необходимо указать продолжительность EMA. Синтаксически функция построения EMA аналогична функции MMS. Поместите его рядом с MMS, чтобы можно было сравнить их:
//@version=4 study("Мой скрипт", overlay=true) plot(sma(close, 10)) plot(ema(close,10))
Мы можем заметить небольшую разницу между двумя типами скользящих средних.
➠ Думаете об инвестировании в криптовалюты? Купите биткойны на Binance!
Встроенные скрипты
До сих пор мы писали код вручную, чтобы вы могли иметь представление. Но давайте воспользуемся чем-нибудь, что поможет нам сэкономить время, особенно если мы пишем более сложные сценарии и не хотим делать их с нуля.
В правом верхнем углу редактора нажмите «Создать». Вы увидите раскрывающееся меню со всеми типами технических индикаторов. Нажмите «Экспонента скользящего среднего», чтобы просмотреть исходный код индикатора EMA.

Добавьте это в диаграмму.
Этот отличается от нашего — здесь мы видим функции input(). Они хороши с точки зрения удобства использования, потому что мы можем нажать на этот флажок…

…и легко изменить некоторые значения в новом окне, нажав «Настройки».

Чтобы продемонстрировать это, мы добавим несколько функций input() в наш следующий скрипт.
Построение графика или индикатор индекса относительной силы (RSI)
Индекс относительной силы (RSI) — еще один важный индикатор технического анализа. Он известен как индикатор импульса, то есть измеряет скорость покупки и продажи активов. Оценка RSI представлена по шкале от 0 до 100 и пытается сообщить инвесторам, перекуплены или перепроданы активы. Обычно актив считается перепроданным, если его рейтинг меньше или равен 30, и перекупленным, если его балл больше или равен 70.
Вы можете перейти в «Создать» > «Стратегия RSI» и убедиться в этом сами. Обычно RSI измеряется в течение 14-часовых или 14-дневных периодов, но вы можете настроить эту настройку в соответствии со своей собственной стратегией.
Добавьте это в диаграмму. Теперь вы увидите несколько стрелок (определенных функцией Strategy.entry() в коде). RsiLE указывает на потенциальную возможность длинной позиции по активу, которая может быть перепродана. RsiSE подсвечивает возможные точки для коротких позиций по активу, когда он перекуплен. Обратите внимание, что, как и в случае со всеми индикаторами, вам не обязательно полагаться на них как на безошибочное свидетельство того, что цены будут падать/вырастать.
Бэктестирование
Есть способ протестировать пользовательские индикаторы. Хотя история актива не является гарантией будущих результатов, тестирование наших скриптов может дать нам представление о его эффективности при сборе сигналов.
Далее мы будем использовать простой пример сценария. Давайте создадим стратегию, которая будет входить в длинную позицию, когда цена BTC упадет ниже 11 000 долларов США, и выходить из позиции, когда цена превысит 11 300 долларов США. Тогда мы сможем увидеть, насколько прибыльной была бы эта стратегия исторически.
//@version=4 strategy("ToDaMoon", overlay=true) enter = input(11000) exit = input(11300) price = close if (price <= enter) strategy.entry("BuyTheDip", strategy.long, comment="BuyTheDip") if (price >= exit) strategy.close_all(comment="SellTheNews")Здесь мы определяем вход и выход как переменные — оба являются входными, что означает, что вы можете изменить их на графике позже. Мы также настраиваем ценовую переменную Price, которая учитывает закрытие каждого периода. Затем мы используем логику в виде функций if. Если часть в квадратных скобках истинна, блок под ней будет выполнен. В противном случае блок будет проигнорирован.
Следовательно, если цена меньше или равна желаемому входу, первое выражение будет иметь значение true, и мы откроем длинную позицию. Как только цена станет равна или больше желаемого выхода, сработает второй блок, закрывающий все открытые позиции.
Мы будем использовать график со стрелками, показывающими, где мы входим/выходим; Поэтому мы указываем, как помечать эти точки, с помощью параметра comment comment (в данном примере «BuyTheDip» и «SellTheNews»). Скопируйте код и добавьте его на диаграмму.

Теперь мы можем увидеть индикаторы на графике. Возможно, вам придется уменьшить масштаб.
TradingView автоматически применяет свои правила к старым данным. Вы также заметите, что он переключается с редактора Pine на вкладку «Тестер стратегий». Это позволяет вам иметь обзор вашей возможной прибыли, список сделок и каждую из их индивидуальных результатов.

Позиции входа и выхода.
Связывание информации
Пришло время написать наш собственный сценарий, используя некоторые концепции, которые мы видели до сих пор. Давайте объединим EMA и RSI и используем их значения для раскрашивания свечных графиков, генерируя информацию, которую мы можем легко визуализировать.
Это не следует интерпретировать как поощрение инвестиций или финансовый совет – не существует объективно правильного способа использования этого показателя. Как и все остальные, его следует использовать вместе с другими инструментами для разработки собственной стратегии.
Теперь давайте поработаем над нашим новым скриптом. Удалите все свои индикаторы с графика и скройте график Bitcoin/BUSD, чтобы мы могли работать на чистом холсте.
Начнем с определения нашего исследования. Не стесняйтесь называть его как хотите, но не забудьте установить параметр overlay=true.
исследование(title="Скрипт Binance Academy", overlay=true)Помните нашу формулу EMA, использованную ранее. Мы должны предоставить множителю период EMA. Давайте используем входные данные, требующие целого числа (без десятичных знаков). Мы также определим минимальное значение (minval) и значение по умолчанию (defval).
исследование(title="Скрипт Binance Academy", overlay=true) emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0)Используя эту новую переменную, мы можем рассчитать значение EMA для каждой свечи на нашем графике:
исследование(title="Скрипт Binance Academy", overlay=true) emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength)Отличный. Теперь RSI. Определим период аналогичным образом:
study(title="Скрипт Binance Academy", overlay=true) emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0)И тогда мы можем это вычислить:
исследование(название="Скрипт Binance Academy", наложение=true) emaLength = ввод(название="Длина EMA", тип=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = ввод(название="Длина RSI", тип=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength)На этом этапе мы соберем логику, которая раскрашивает свечные графики в соответствии со значениями EMA и RSI. Давайте рассмотрим ситуацию, когда (а) цена закрытия свечи превышает EMA и (б) RSI больше 50.
Почему? Что ж, вы можете решить использовать эти индикаторы вместе, чтобы получать длинные или короткие сигналы для торговли биткойнами. Например, вы можете подумать, что выполнение обоих условий означает, что сейчас подходящее время для входа в длинную позицию. Или, с другой стороны, вы можете использовать его, чтобы узнать, когда позиция не должна быть короткой, даже если другие индикаторы сигнализируют об обратном.
Итак, наша следующая строка будет выглядеть так:
study(title="Скрипт Binance Academy", overlay=true) emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) цвета = close > emaVal и rsiVal > 50 ? цвет.зеленый : цвет.красныйИспользуя простой язык, код просто говорит, что если значение EMA превышает цену закрытия, а показатель RSI превышает 50, цвет свечи будет зеленым. В противном случае он будет красным.
Далее, давайте построим EMA:
study(title="Скрипт Binance Academy", overlay=true) emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) цвета = close > emaVal и rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA")Наконец, постройте свечи, обязательно включив параметр цвета color:
study(title="Скрипт Binance Academy", overlay=true) emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0) emaVal = ema(close, emaLength) rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0) rsiVal = rsi(close, rsiLength) цвета = close > emaVal и rsiVal > 50 ? color.green : color.red plot(emaVal, "EMA") plotcandle(open, high, low, close, color=colors)И это сценарий! Добавьте его на диаграмму, чтобы увидеть, как он работает.

График BTC/BUSD с индикатором EMA/RSI.
Заключительные соображения
В этой статье мы рассмотрим несколько основных примеров того, что вы можете сделать с помощью редактора Pine от TradingView. Теперь вы сможете настраивать ценовые графики, чтобы получить дополнительную информацию, используя свои собственные индикаторы.
Мы рассмотрели здесь только несколько индикаторов, но идея для более сложных индикаторов та же — вы можете выбрать скрипты, встроенные в New, или написать их самостоятельно.
Не вдохновленный? Следующие статьи могут дать некоторые идеи для вашего следующего проекта:
Краткое руководство по индикатору Parabolic SAR
Руководство по ретрейсменту Фибоначчи
Опережающие и запаздывающие индикаторы
Как работает индикатор MACD

