Введение

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

Для многих TradingView является эталонной графической платформой. Это мощное веб-приложение HTML5, предлагающее центр инструментов технического анализа, используется миллионами людей для мониторинга движений на рынке Форекс, криптовалют и традиционных фондовых рынках.

TradingView обладает множеством мощных функций: он позволяет вам отслеживать активы на многочисленных торговых платформах, а также публиковать торговые идеи в своей социальной сети. В этой статье мы сосредоточимся на его возможностях настройки. Мы будем использовать Pine Script, собственный язык программирования TradingView, который гарантирует нам детальный контроль над нашими графическими форматами.

Начнем!


Что такое PineScript?

Pine Script — это язык сценариев, который вы можете использовать для изменения графиков TradingView. Платформа уже предоставляет вам множество функций для этого, но Pine Script позволяет вам пойти еще дальше. Будь то изменение цвета свечей или тестирование новой стратегии, редактор Pine позволит вам настроить графики в реальном времени по своему усмотрению.

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


Параметр

Начать работу с Pine Script невероятно просто. Любой написанный нами код будет работать на серверах TradingView, поэтому мы можем получить доступ к редактору и разрабатывать наши скрипты из браузера – без каких-либо дополнительных загрузок или настройки.

В этом уроке мы собираемся «построить график» валютной пары Биткойн/Binance USD (BTCBUSD). Если вы еще этого не сделали, сделайте шаг и зарегистрируйте бесплатную учетную запись (также доступна подписка Pro, но она не обязательна для данного руководства). 

Перейдите по этой ссылке, и вы увидите график, похожий на следующий:


Gráfico BTCBUSD en tradingview

Ваша, вероятно, будет более актуальной.


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


Gráfico completo en tradingview para BTCBUSD

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


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


Редактор Сосны


captura de pantalla del pine editor


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

Вы можете видеть, что у нас уже есть пара строк кода. Давайте продолжим нажимать «Добавить в диаграмму», чтобы посмотреть, что произойдет.


Añadiendo primer script al gráfico tradingview


Второй график добавляется ниже оригинала. Новый график представляет те же данные. Наведите указатель мыши на «Мой сценарий» и щелкните крестик, чтобы удалить его. Теперь давайте подробно разберем код.

исследование("Мой сценарий")

Эта первая строка просто настраивает нашу аннотацию. Требуется только имя, которое вы хотите дать индикатору («Мой скрипт» в данном случае), хотя мы также можем добавить ряд дополнительных параметров. Одним из них является наложение, которое сообщает TradingView разместить индикатор на существующем графике (а не на новом сегменте). Как вы можете видеть в нашем первом примере, по умолчанию оно отображается как false. Хотя сейчас мы не увидим его в действии, overlay=true добавляет индикатор на существующий график.

сюжет (закрыть)

Эта линия является инструкцией для обозначения цены закрытия Биткойна. plot просто предоставляет нам линейный график, хотя мы также можем отображать свечи и бары, как мы вскоре увидим. 

Теперь давайте попробуем следующее:

//@версия=4
исследование("Мой сценарий", overlay=true)
сюжет (открытый, цвет = color.purple)

Добавив это, вы сможете увидеть второй график (который будет похож на исходный, смещенный вправо). Все, что мы сделали, это зафиксировали цену открытия, и поскольку цена открытия текущего дня совпадает с ценой закрытия предыдущего дня, логично, что они представляют собой идентичную форму.

Очень хороший! Мы собираемся избавиться от текущих аннотаций — помните, для этого нам нужно щелкнуть правой кнопкой мыши и выбрать «Удалить индикаторы». Наведите курсор на Bitcoin/BUSD и нажмите кнопку «Скрыть», чтобы также очистить текущий график.

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

//@версия=4
исследование("Мой сценарий", overlay=true)
plotcandle(открытие, максимум, минимум, закрытие)

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

//@версия=4
исследование("Мой сценарий", overlay=true)
цвета = открыть >= закрыть ? цвет.красный : цвет.зеленый
plotcandle(открытие, максимум, минимум, закрытие)

Он проверит каждую свечу и проверит, превышает ли открытие цену закрытия или равна ей. Если это так, это означает, что цены упали за период, поэтому свеча окрасится в красный цвет. В противном случае он окрасит его в зеленый цвет. Измените функциюplotcandle(), чтобы утвердить эту цветовую схему:

//@версия=4
исследование("Мой сценарий", overlay=true)
цвета = открыть >= закрыть ? цвет.красный : цвет.зеленый
plotcandle(открытие, максимум, минимум, закрытие, цвет=цвета)

Удалите текущие индикаторы, если вы еще этого не сделали, и добавьте этот на график. Теперь у нас должно получиться что-то похожее на обычный свечной график.


Gráfico de velas en tradingview

Драгоценный!


Построение скользящих средних (MA)

У нас уже есть некоторые основные элементы. Давайте теперь посмотрим на наш первый пользовательский индикатор – экспоненциальную скользящую среднюю или EMA. Это ценный инструмент, поскольку он позволяет нам фильтровать любой рыночный шум и сглаживать ценовое движение. 

EMA немного отличается от простой скользящей средней (SMA) тем, что придает больший вес самым последним данным. Он имеет тенденцию более реагировать на внезапные движения и часто используется для краткосрочных игр (например, в дневной торговле).


Простая скользящая средняя (SMA)

Мы также могли бы построить график SMA, чтобы позже сравнить два средних значения. Добавьте эту строку в свой скрипт:

сюжет (sma (закрыть, 10))

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


Media móvil basada en los 10 días anteriores

SMA за предыдущие десять дней.


Экспоненциальная скользящая средняя (EMA)

EMA будет немного сложнее понять, но не стоит беспокоиться. Давайте сначала разберем формулу:

EMA = (Close – EMA предыдущего дня) * Множитель – EMA предыдущего дня

Итак, о чем это нам говорит? Итак, для каждого дня мы рассчитываем новую скользящую среднюю, основанную на значении предыдущего дня. Множитель – это то, что «весит» самый последний период, и рассчитывается по следующей формуле:

Множитель = 2 / (Длина EMA + 1)

Как и в случае с простыми скользящими средними, нам необходимо указать длину EMA. Синтаксически функция построения EMA аналогична функции SMA. Постройте его рядом с SMA, чтобы вы могли сравнить их:

//@версия=4
исследование("Мой сценарий", overlay=true)
сюжет (sma (закрыть, 10))
сюжет (ema (закрыть, 10))


EMA y SMA en un gráfico de tradingview

Вы можете видеть, что между обоими типами MA есть небольшая разница.


➠ Вы думаете о том, чтобы начать работу в мире криптовалют? Купите биткойны на Binance!


Встроенные скрипты

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

В правом верхнем углу редактора нажмите «Создать». Вы увидите раскрывающееся меню со всевозможными техническими индикаторами. Нажмите «Экспонента скользящего среднего», чтобы увидеть исходный код индикатора EMA.



Media móvil exponencial en un script pine

Добавьте это к графику.


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


Modificando un gráfico en la interfaz de tradingview


...и легко изменить некоторые значения во всплывающем окне, нажав на колесо настроек.


cambiar las entradas en EMA


Чтобы продемонстрировать это, мы добавим пару функций input() в наш следующий скрипт.


Пометить индикатор Индекса относительной силы (RSI)

Индекс относительной силы (RSI) – еще один важный индикатор технического анализа. Он известен как индикатор «импульса», то есть он измеряет скорость, с которой активы покупаются и продаются. Представленный по шкале от 0 до 100, показатель RSI пытается сообщить инвесторам, являются ли активы «перекупленными» или «перепроданными». Как правило, актив можно считать перепроданным, если его балл меньше или равен 30, и перекупленным, если его балл больше или равен 70.

Если вы перейдете в раздел «Новые» > «Стратегия RSI», вы сможете убедиться в этом сами. RSI обычно измеряется в периодах по 14 (т. е. 14 часов или 14 дней), но вы можете изменить эти настройки в соответствии со своей собственной стратегией.

Добавьте это в график. Теперь вы должны увидеть несколько стрелок (определенных функцией Strategy.entry() в коде). RsiLE указывает на потенциальную возможность пролонгировать актив, поскольку он может быть перепродан. RsiSE выделяет возможные точки для короткой продажи актива, когда он перекуплен. Обратите внимание, что, как и в случае со всеми индикаторами, вам не обязательно полагаться на них как на безошибочное доказательство того, что цены будут увеличиваться или уменьшаться.


Бэктестирование

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

Ниже мы приведем пример простого скрипта. Давайте создадим простую стратегию, которая будет входить в длинную позицию, когда цена BTC падает ниже 11 000 долларов США, и выходить из позиции, когда цена превышает 11 300 долларов США. Итак, мы можем увидеть, насколько прибыльной была бы эта стратегия исторически.

//@версия=4
стратегия("ALaLuna", overlay=true)
введите = ввод (11000)
выход = ввод (11300)
цена = закрыть

if (цена <= введите)
    Strategy.entry("CompraLaCaída", Strategy.long, comment="CompraLaCaída")
если (цена >= выход)
    Strategy.close_all(comment="VendeLasNoticias")

Здесь мы определили входные и выходные данные как переменные; оба являются входными данными, а это значит, что мы можем изменить их на графике позже. Мы также устанавливаем переменную цены, которая учитывает закрытие каждого периода. Итак, у нас есть некоторая логика в виде операторов if. Если часть в квадратных скобках истинна, будет выполнен блок с отступом ниже. В противном случае оно будет пропущено.

Итак, если цена меньше или равна желаемому входу, первое выражение принимает значение true, и мы открываем длинную позицию. Как только цена станет равной или превысит желаемый результат, будет активирован второй блок, закрывающий все открытые позиции.

Мы добавим диаграмму стрелок, показывающих, где мы входим/выходим, поэтому указываем, как помечать эти точки, с помощью параметра комментария (в данном примере «BuyTheDip» и «SellTheNews»). Скопируйте код и добавьте его в график.


indicador activo en el gráfico tradingview

Теперь вы можете увидеть индикаторы на графике. Возможно, вам придется уменьшить масштаб.


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


Trading view strategy tester

Позиции, в которые мы вошли и из которых вышли.


Соедините кусочки вместе

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

Это не следует рассматривать как финансовый совет; Не существует объективно правильного способа использования этого показателя. Как и все остальные, его следует использовать вместе с другими инструментами для разработки собственной стратегии.

Теперь давайте поработаем над нашим новым скриптом. Удалите все свои индикаторы с графика, а также скройте график Bitcoin/BUSD, чтобы у нас был чистый холст для работы.

Начнем с определения нашего исследования. Не стесняйтесь называть его как хотите, просто не забудьте установить overlay = true.

Study(title="Скрипт Binance Academy", overlay=true)

Помните нашу формулу EMA, использованную ранее. Нам нужно предоставить множителю длину EMA. Давайте преобразуем его во входные данные, требующие целого числа (без десятичных знаков). Мы также установим минимум (minval) и значение по умолчанию (defval).

Study(title="Скрипт Binance Academy", overlay=true)
emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0)


Используя эту новую переменную, мы можем рассчитать значение EMA для каждой свечи на нашем графике:

Study(title="Скрипт Binance Academy", overlay=true)
emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(закрыть, emaLength)


Отличный. По поводу РСИ. Аналогично зададим ему длину:

Study(title="Скрипт Binance Academy", overlay=true)
emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(закрыть, emaLength)
rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0)

И теперь мы можем это посчитать:

Study(title="Скрипт Binance Academy", overlay=true)
emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(закрыть, emaLength)
rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(закрыть, 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(закрыть, emaLength)
rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(закрыть, rsiLength)
цвета = закрыть > 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(закрыть, emaLength)
rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(закрыть, rsiLength)
цвета = закрыть > emaVal и rsiVal > 50? цвет.зеленый : цвет.красный
сюжет(emaVal, "EMA")

Наконец, постройте свечи, обязательно включив параметр цвета:

Study(title="Скрипт Binance Academy", overlay=true)
emaLength = input(title="Длина EMA", type=input.integer, defval=25, minval=0)
emaVal = ema(закрыть, emaLength)
rsiLength = input(title="Длина RSI", type=input.integer, defval=25, minval=0)
rsiVal = rsi(закрыть, rsiLength)
цвета = закрыть > emaVal и rsiVal > 50? цвет.зеленый : цвет.красный
сюжет(emaVal, "EMA")
plotcandle(открытие, максимум, минимум, закрытие, цвет=цвета)

И это сценарий! Добавьте его на диаграмму, чтобы увидеть его в действии.


Script de Tradingview en acción

График BTC/BUSD с индикатором EMA/RSI.


В заключение

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

Здесь нас интересовали только несколько индикаторов, но более сложные индикаторы легко создать, выбрав встроенные скрипты New или написав их самостоятельно.

Недостаток вдохновения? Следующие статьи могут дать вам некоторые идеи для вашего следующего проекта:

  • Краткое руководство по индикатору Parabolic SAR

  • Руководство по освоению уровней Фибоначчи

  • Введение в опережающие и запаздывающие индикаторы (опережающие/запаздывающие индикаторы)

  • Объяснение индикатора MACD