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

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

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

В этом редакторе происходит магия. Мы скажем ему, что мы хотим сделать, а затем нажмите Добавить на график, чтобы увидеть наши инструкции выше. Обратите внимание, что может возникнуть неразбериха, если мы включим несколько инструкций одновременно, поэтому мы будем удалять их между примерами (нажатие правой кнопкой мыши на графике > "Remove Indicators").
Как видите, у нас уже есть несколько строк кода. Нажмите Add to Chart, чтобы увидеть, что произойдет.

Второй график прилагается под основным. Новый график представляет те же данные. Наведите курсор на My Script и нажмите крестик, чтобы удалить его. А теперь давайте углубимся в код.
исследование("Мой сценарий")Эта первая строчка просто настраивает нашу инструкцию. Для этого нужно только назвать индикатор (в данном случае "My Script"), но есть некоторые дополнительные параметры, которые мы можем добавить. Один из них – overlay, указывающий TradingView разместить индикатор на существующем графике (а не в новом сегменте). Как вы можете увидеть из первого примера, по умолчанию установлено false. Хотя сейчас мы не увидим его в действии, overlay = true добавляет индикатор существующего графика.
участок(близко)Эта строчка является инструкцией для построения цены закрытия Bitcoin. plot просто дает нам линейный график, но мы также можем отображать свечи и бары, как мы скоро увидим.
А теперь давайте попробуем следующее:
//@version=4 study("Мой скрипт", overlay=true) plot(open, color=color.purple)После того, как вы добавите это, вы должны увидеть второй график (который выглядит так, будто оригинал смещен справа). Все, что мы сделали, это построили график цены открытия, и поскольку открытие текущего дня является закрытием предыдущего дня, очевидно, что они имеют идентичную форму.
Хорошо! Давайте избавимся от текущих инструкций (помните, мы делаем это, нажав правой кнопкой мыши и выбрав Remove Indicators). Наведите курсор на Bitcoin/BUSD и нажмите кнопку Hide, чтобы также очистить текущий график.
Многие трейдеры предпочитают свечные графики, поскольку они дают нам больше информации, чем простой график, подобный тому, который мы только что создали. Давайте добавим их сейчас.
//@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)Удалите текущие индикаторы, если вы еще этого не сделали, и добавьте этот на график. Теперь у нас должно получиться что-то похожее на обычный свечной график.

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

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

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

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

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

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

Мы открыли и закрыли позиции.
Связываем все вместе
Пора написать собственный сценарий, используя некоторые из уже знакомых нам концепций. Мы собираемся объединить EMA и RSI и использовать их значение для окрашивания свечей, чтобы получить информацию, которую мы сможем легко визуализировать.
Не следует рассматривать эту информацию как финансовый совет. Нет объективно верного метода использования этого индикатора. Как и все остальные, его следует использовать с другими инструментами для разработки собственной стратегии.
Теперь поработаем над нашим новым сценарием. Удалите все индикаторы из графика и скройте график Bitcoin/BUSD, чтобы у нас было чистое полотно для работы.
Начнём с определения нашего исследования. Не стесняйтесь называть его как хотите, только не забудьте установить overlay=true.
исследование(title="Скрипт Binance Academy", overlay=true)Вспомните нашу формулу EMA. Нам необходимо предоставить множитель с длиной EMA. Давайте сделаем это через input, для которого требуется целое число (т.е. без десятичных знаков). Мы также установим минимальное значение (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 и (b) когда RSI выше 50.
Почему? Что ж, вы можете решить, что эти индикаторы могут использоваться вместе, чтобы указывать вам когда открывать лонг или шорт по Bitcoin. К примеру, вы можете подумать, что выполнение обоих этих условий означает, что сейчас есть хорошее время для открытия лонг позиции. Или, напротив, вы можете использовать его, чтобы сообщить вам, когда не открывать шорт позицию, даже если другие индикаторы говорят о другом.
Итак, наша следующая строка будет выглядеть так:
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 Editor от TradingView. Сейчас вы должны быть уверены, что делаете простые сценарии для ценовых графиков, чтобы получить дополнительную информацию от ваших собственных индикаторов.
Здесь мы разобрали только пару индикаторов, но вы можете легко реализовать более сложные или выбрать встроенные скрипты из New или написать их самостоятельно.
Не хватает вдохновения? Следующие статьи могут дать вам некоторые идеи для вашего проекта:
Краткое руководство по индикатору "Параболический SAR"
Руководство по освоению коррекции Фибоначчи
Объяснение индикаторов отставания и опережения
Объяснение индикатора MACD


