Pinescript - это проприетарный язык программирования Tradingview, используемый для создания стратегий, индикаторов и предупреждений на его торговой и графической платформе. Полную ссылку можно найти здесь: https://www.tradingview.com/study-script-reference/

Полный код можно найти внизу страницы!

Начиная

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

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

Внизу экрана вы увидите «Pine Editor», щелкнув там, вы откроете Pine Script Editor, где мы будем создавать наш индикатор. Теперь мы готовы начать.

Именование и сохранение

Назовите свой индикатор, изменив текст в кавычках следующим образом:

Сегодня мы создадим пользовательский индикатор под названием ADX Cross - он основан на индикаторе ADX, который указывает силу текущего тренда. ADX может быть очень полезным инструментом при использовании вместе с другими индикаторами. После изменения текста нажмите ctrl + S, чтобы сохранить индикатор. Вам будет предложено снова назвать индикатор, это имя будет отображаться над всем остальным, первое будет отображаться только в окне графика. Лучше всего использовать одно и то же имя для обоих.

Создание входов

Входные данные - это числа или параметры, которые повлияют на вывод индикатора. Иногда они не нужны, однако, если вы любите экспериментировать или часто меняете свои переменные, они необходимы.

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

length = input(14, title=”Di Length”)

Длина - это переменная, которую мы будем использовать позже. Мы только что установили его на вход со значением по умолчанию 14, с заголовком «Di Length». Это станет более понятным к концу урока.

Для этого индикатора нам понадобятся еще два входа.

smoothing = input(14, title=”Smoothing”)

Этот вход будет использоваться для сглаживания ADX.

lag = input(1, title=”Lag”)

Этот ввод будет использован и будет иметь смысл позже. Теперь ваш сценарий должен выглядеть так:

Добавление переменных

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

up = change(high)
down = -change(low)
trueRange = rma(tr, len)

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

Добавление и вычисление дополнительных переменных

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

plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / trueRange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, len) / trueRange)

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

sum = plus + minus 
adx = 100 * rma(abs(plus — minus) / (sum == 0 ? 1 : sum), smoothing)

Переменная adx - это то, где все это собрано. Он равен 100-кратному скользящему среднему абсолютного значения плюс, вычтенного на минус, разделенного на сумму и сглаживание . Да, это, вероятно, немного сбивает с толку, но, к счастью, большая часть работы была сделана, но математики или количественные аналитики, и все, что нам нужно сделать, это скопировать и вставить! (если вы не хотите узнать, как они работают, что здорово, если вам это нравится)

Сюжет

Наконец-то мы подошли к концу, где вся тяжелая работа объединяется! Теперь мы можем нанести наш индикатор на график. Для этого нам нужно использовать функцию plot (), что на самом деле, пожалуй, самая простая часть. Функция выглядит так:

plot(adx, title=”ADX”, style=line, color=blue)
plot(adx[lag], title=”ADX”, style=line, color=blue)

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

Полный код

//@version=3
study(“ADX Cross Indicator”)
length = input(14, title=”DI Length”)
smoothing = input(14, title=”ADX Smoothing”)
lag = input(1, title=”Lag”)
up = change(high)
down = -change(low)
trueRange = rma(tr, length)
plus = fixnan(100 * rma(up > down and up > 0 ? up : 0, length) / trueRange)
minus = fixnan(100 * rma(down > up and down > 0 ? down : 0, length) / trueRange)
sum = plus + minus 
adx = 100 * rma(abs(plus — minus) / (sum == 0 ? 1 : sum), smoothing)
plot(adx, color=blue, title=”ADX”, style=line)
plot(adx[lag], color=red, title=”ADX”, style=line)

Добавить в диаграмму

Наконец, убедившись, что код совпадает с приведенным выше кодом, нажмите кнопку «Добавить в диаграмму» в правом нижнем углу экрана. У вас должно получиться что-то вроде этого:

И вы сделали! Мне, вероятно, следовало использовать более простой пример, однако это индикатор, который я на самом деле собирался создать некоторое время, поэтому я подумал, почему бы не показать пример индикатора использования в реальном мире вместо еще одного «RSI» или «MACD».

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

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