Как написать индикатор для tradingview

#Трейдинг #Обзоры 

Pine представляет собой скриптовый язык для TradingView. Он позволяет пользователям торговых графиков самостоятельно создавать индикаторы или стратегии. Pine легок и похож на Python, а его задача состоит в том, чтобы позволить писать скрипты с минимальным числом строк кода. Мы узнаем, кому подходит Pine Script, а в каких случаях использовать его не стоит. Познакомимся с альтернативами скриптам от TradingView. Рассмотрим разные примеры использования Pine в новой, 5-й версии: создание SMA, установка стоп-лоссов, заключение сделок и многое другое.


  1. Что такое скрипт Pine?

  2. Почему я должен использовать скрипт Pine?

  3. Почему я не должен использовать скрипт Pine?

  4. Какие есть альтернативы использованию скрипта Pine?

  5. Как начать работу со скриптом Pine?

    1. Первый взгляд на редактор Pine

  6. Как узнать цену Apple?

  7. Как получить SMA ( 20 ) Apple?

  8. Как протестировать кросс-стратегию скользящих средних с помощью Pine Script?

  9. Как установить тейк-профит и стоп-лосс?

  10. Как запустить сделку с Apple, когда Google движется на 5%?

  11. Как модифицировать наши скрипты без кодирования?

  12. Как построить сценарий с помощью Pine?

    1. График работы рынка Форекс

    2. Нанесение аннотаций

  13. Как я могу создать собственный индикатор в скрипте Pine?

  14. Последние мысли

Pine Script — это язык программирования, созданный TradingView для тестирования торговых стратегий и создания пользовательских индикаторов.

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

Он не основан на каком-либо конкретном языке, но если вы использовали Python, то быстро разберетесь и заметите сходство.

Код скрипта Pine можно писать в редакторе Pine, который является частью платформы онлайн-графиков TradingView.

Почему я должен использовать скрипт Pine?

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

Простота в освоении — синтаксис скрипта Pine удобочитаем и проще, чем в других языках программирования. Кроме того, вам не нужно тратить много времени на проверку и обработку ошибок, поскольку TradingView позаботится обо всем этом за вас.

Обширная пользовательская база и библиотека. Пользователи TradingView могут публиковать свои индикаторы и стратегии в библиотеке TradingView.

Доступ к открытому исходному коду — отличный способ учиться у других программистов. Кроме того, в некоторых случаях кто-то другой уже написал код для того, что вам нужно.

Почему я не должен использовать скрипт Pine?

Основная причина, по которой вы не захотите использовать скрипт Pine, заключается в том, что вы ограничены вселенной TradingView.

Вот некоторые конкретные ограничения:

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

Сервис выходит за рамки данных о ценах. Некоторые стратегии включают экономические или статистические данные. TradingView предлагает некоторые данные (в основном данные Quandl) в этой категории, но в настоящее время они ограничены.

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

Внешние библиотеки. Pine Script не подходит, если вы хотите использовать внешние библиотеки для выполнения таких задач, как машинное обучение. Есть лучшие альтернативы, если ваша стратегия основана на использовании науки о данных или других сторонних библиотек.

Торговля парами – руководство из реальной жизни

Какие есть альтернативы использованию скрипта Pine?

Thinkorswim от TD Ameritrade — эта платформа во многом похожа на Pine Script.

Она использует проприетарный язык thinkScript и хранит данные о ценах в массивах аналогично скрипту Pine. Данные встроены, и платформа предназначена для создания пользовательских индикаторов и стратегий.

Ninjatrader — эта платформа также использует собственный язык, который называется Ninjascript. Язык не является полностью проприетарным, поскольку основан на C#.

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

Как начать работу со скриптом Pine?

Начать работу со скриптом Pine очень просто, ничего скачивать и устанавливать не нужно.

Если у вас уже есть учетная запись в TradingView, просто перейдите на их страницу.

Если у вас нет учетной записи, перейдите на сайт www.tradingview.com. Оттуда вы увидите окно входа в верхний правый угол.

Существует несколько вариантов регистрации в один клик или использование традиционного метода электронной почты/пароля.

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

После регистрации запустите графическую платформу, щелкнув график в меню или перейдя на страницу www.tradingview.com/chart.

Первый взгляд на редактор Pine

В редакторе Pine мы будем создавать наш код. Чтобы запустить его, нажмите Pine Editor в самом низу экрана.

Должен появиться экран, похожий на изображение ниже.

В скрипте Pine вы будете создавать либо индикатор , либо стратегию . Мы подробно обсудим различия в этой статье.

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

Пробежимся по нему строчка за строчкой.

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/

Первая строка — это просто комментарий. Комментарии в скрипте Pine начинаются с двух косых черт.

// © author

Вторая строка также является комментарием, она автоматически заполняется вашим именем пользователя TradingView.

//@version=5

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

Это известно как директива компилятора. Это позволяет компилятору узнать, какую версию скрипта Pine мы хотим использовать.

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

indicator("My Script")

Строка 5 является объявлением. Здесь указываете, создаете ли вы индикатор.

Альтернативой является создание стратегии, но мы начнем с индикатора.

Вторая часть строки 5 в кавычках — это имя, которое мы присвоим этому конкретному индикатору. По умолчанию используется Мой сценарий .

plot(close)

Строка 6 содержит команду построения графика. Как вы уже, наверное, догадались, она приказывает TradingView построить график определенной переменной.

В этом случае переменная close будет построена. Это встроенная переменная, которая содержит цену закрытия последнего бара.

Давайте нажмем «Добавить в диаграмму» в правом верхнем углу редактора Pine.

Вам будет предложено сохранить сценарий.

После сохранения ваш график должен получить новое окно, содержащее график цен закрытия с вашего основного графика.

Это окно называется окном данных. На изображении выше это линейная диаграмма, нарисованная синим цветом.

Обратите внимание, что окно данных показывает «Мой сценарий» в верхнем левом углу. Это извлекает все, что введено в строку 5 нашего кода, где мы объявили имя для индикатора.

И вот он, наш первый индикатор, и нам даже не нужно было писать код!

Как узнать цену Apple?

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

В данном случае у нас был открыт дневной график биткойна.

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

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

//@version=5
indicator("price of Apple")

В данном случае мы создаем индикатор. Название этого индикатора – «цена Apple».

Далее мы должны сообщить Pine Script, что нас интересует актив, отличный от того, что в данный момент отображается на графике.

Для этого мы можем использовать функцию request.security().

request.security()

Приятной особенностью скрипта Pine является то, что справка всегда легко доступна, если вы работаете с синтаксисом, с которым раньше не работали.

Например, мы можем навести курсор на нашу функцию, и она покажет краткое описание.

Для получения более подробной информации вы можете запустить окно справки. Для этого нажмите CTRL, щелкнув функцию на ПК. Или, на Mac, нажмите CMD, нажимая на функцию.

Функция справки разъясняет синтаксис и даже содержит полезные примеры.

request.security("AAPL", "D", close)

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

Затем мы устанавливаем временные рамки на день. И, наконец, мы сообщили скрипту Pine, что нас интересует цена закрытия.

Мы можем сохранить возврат функции в переменную.

apple_price = request.security("AAPL", "D", close)

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

Исследования, созданные в скрипте Pine, должны иметь хотя бы один вывод, иначе скрипт выдаст ошибку компилятора.

Давайте построим нашу переменную так, чтобы она удовлетворяла правилу сценария Pine о наличии вывода.

plot(apple_price)

После сохранения и добавления на график наш экран выглядит так.

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

Полный код:

//@version=5
indicator("price of Apple")

apple_price = request.security("AAPL", "D", close)

plot(apple_price)

Как получить SMA ( 20 ) Apple?

Теперь, когда мы можем получить доступ к цене акций Apple, давайте рассмотрим пример получения простой скользящей средней.

Тот же процесс можно использовать для применения любого индикатора.

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

//@version=5
indicator("Get 20 SMA of Apple")

// Get price of Apple
apple_price = request.security("AAPL", "D", close) // 1 Day

Если вы не хотите получать 20 SMA специально для AAPL, вы можете пропустить определение безопасности и просто использовать встроенную переменную close.

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

В скрипт Pine встроена вспомогательная функция для индикатора SMA. Чтобы получить к нему доступ, мы просто используем функцию ta.sma().

ta.sma(apple_price, 20)

Первый параметр, который нам нужно передать, — это значение цены. В этом случае мы используем цену закрытия для Apple, которую мы сохранили в нашей переменной apple_price.

Второй параметр — длина SMA. Мы ищем 20-периодную SMA.

Наконец, мы назначим данные SMA отдельной переменной, а затем построим ее.

apple_sma = ta.sma(apple_price, 20)

plot(apple_sma)

Простая скользящая средняя для Apple теперь отображается в нашем окне данных.

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

indicator("Get 20 SMA of Apple", overlay=true)

Добавив в overlay=Trueобъявление индикатора, мы можем отображать наши данные непосредственно в главном окне графика, а не в окне данных.

Полный код:

//@version=5
indicator("Get 20 SMA of Apple", overlay=true)

// Get price of Apple
apple_price = request.security("AAPL", "D", close) // 1 Day

// Calculate 20 SMA of Apple
apple_sma = ta.sma(apple_price, 20)

plot(apple_sma)

Как протестировать кросс-стратегию скользящих средних с помощью Pine Script?

Мы прошлись по индикаторам. Давайте посмотрим на стратегии в Pine Script.

В следующем примере мы создадим стратегию пересечения скользящих средних с несколькими дополнительными параметрами. Затем мы проверим стратегию на истории в TradingView.

//@version=5
strategy("My Strategy", overlay=true)

Чтобы создать стратегию, мы заменяем объявление индикатора объявлением стратегии.

// Create Indicator's
shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)

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

rsi = ta.rsi(close, 14)

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

Эта стратегия будет работать на основном графике, поэтому нам не нужно использовать здесь функцию security().

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

// Specify crossover conditions
longCondition = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)

У нас есть два условия, первое — когда короткая SMA с периодом 10 пересекает более длинную SMA с периодом 30.

Второе условие является противоположным, поскольку мы использовали функцию crossunder, а не crossover.

Оба эти условия сохраняются в переменных. Поэтому, когда происходит пересечение (crossover или crossunder), эти переменные будут обновлены до True, что является логическим значением.

Мы можем использовать оператор if, чтобы проверить, изменилось ли условие на True, а затем выполнить сделку, если это так.

if (longCondition)
    strategy.entry("long", strategy.long, 100, when = rsi > 50)

Встроенная strategy.entryфункция используется для входа в сделки. Вот параметры, которые передаются в функцию.

  1. long — это идентификатор сделки. Мы не будем использовать его в этом примере. Но, если вы планируете закрыть или отменить сделку, это можно сделать с помощью этого идентификатора.
  2. Strategy.long — это встроенная переменная, которая сообщает скрипту Pine, что мы хотим открыть длинную позицию.
  3. 100 — количество акций, которыми мы хотим торговать
  4. when = rsi > 50 — это дополнительный параметр, который указывает скрипту pine выполнять сделку только в том случае, если RSI выше 50.

Синтаксис наших кратких записей будет очень похож на формат.

if (shortCondition)
    strategy.entry("short", strategy.short, 100, when = rsi < 50)

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

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

// Plot Moving Average's to chart
plot(shortSMA)
plot(longSMA, color=color.black)

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

Вот так выглядит наш экран.

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

Стратегия будет работать на таймфрейме, который отображается на вашем графике.

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

Полный код:

//@version=5
strategy("My Strategy", overlay=true)

// Create Indicator's
shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)
rsi = ta.rsi(close, 14)

// Specify crossover conditions
longCondition = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)

// Execute trade if condition is True
if (longCondition)
    strategy.entry("long", strategy.long, 100, when = rsi > 50)

if (shortCondition)
    strategy.entry("short", strategy.short, 100, when = rsi < 50)

// Plot Moving Average's to chart
plot(shortSMA)
plot(longSMA, color=color.black)

Как установить тейк-профит и стоп-лосс?

В нашем последнем примере исполнение сделки определялось пересечением и пересечением скользящих средних.

Мы будем опираться на этот скрипт и установим конкретные стоп-лоссы и тейк-профиты. Мы можем использовать средний истинный диапазон (ATR) для расчета уровней для них.

Индикатор ATR рассчитывает среднее движение за последнее количество указанных баров. Это хороший способ учета изменений волатильности.

Мы уже объявили несколько индикаторов, добавим в список индикатор ATR.

// Create Indicator's
shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)
rsi = ta.rsi(close, 14)
atr = ta.atr( 14 )

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

if (longCondition)
    stopLoss = low - atr * 2
    takeProfit = high + atr * 2
    strategy.entry("long", strategy.long, 100, when = rsi > 50)
    strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit)

В приведенном выше коде мы рассчитали стоп-лосс, взяв минимум бара во время входа и вычтя средний истинный диапазон, умноженный на два.

Таким образом, если акции двигаются в среднем на 5 долларов за бар, мы устанавливаем тейк-профит на 10 долларов ниже минимума.

Аналогичный расчет делается для тейк-профита.

Наконец, мы указываем условие выхода, используя функцию Strategy.exit(). Вот параметры, которые были переданы.

  1. exit — это идентификатор сделки для выхода из сделки.
  2. long — это идентификатор, который мы ранее установили при входе в сделку. Это позволит скрипту Pine узнать, из какой позиции мы пытаемся выйти.
  3. stop=stopLoss – указываем, что уровень, содержащийся в переменной stopLoss, должен использоваться как стоп-ордер на выход из сделки.
  4. limit=takeProfit = мы указываем, что уровень, содержащийся в переменной takeProfit, должен использоваться как лимитный ордер для выхода из сделки.

Синтаксис нашего короткого условия аналогичен, хотя некоторые вычисления немного отличаются.

if (shortCondition)
    stopLoss = high + atr * 2
    takeProfit = low - atr * 2
    strategy.entry("short", strategy.short, 100, when = rsi < 50)
    strategy.exit("exit", "short", stop=stopLoss, limit=takeProfit)

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

Наши выходы работают и отображаются на нашем основном графике вместе с длинными и короткими входами.

Полный код:

//@version=5
strategy("Take profits & stop losses", overlay=true)

// Create Indicator's
shortSMA = ta.sma(close, 10)
longSMA = ta.sma(close, 30)
rsi = ta.rsi(close, 14)
atr = ta.atr( 14 )

// Specify crossover conditions
longCondition = ta.crossover(shortSMA, longSMA)
shortCondition = ta.crossunder(shortSMA, longSMA)

// Execute trade if condition is True
if (longCondition)
    stopLoss = low - atr * 2
    takeProfit = high + atr * 2
    strategy.entry("long", strategy.long, 100, when = rsi > 50)
    strategy.exit("exit", "long", stop=stopLoss, limit=takeProfit)

if (shortCondition)
    stopLoss = high + atr * 2
    takeProfit = low - atr * 2
    strategy.entry("short", strategy.short, 100, when = rsi < 50)
    strategy.exit("exit", "short", stop=stopLoss, limit=takeProfit)

// Plot Moving Average's to chart
plot(shortSMA)
plot(longSMA, color=color.black)

Как запустить сделку с Apple, когда Google движется на 5%?

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

Мы будем использовать его для создания стратегии, которая будет выполнять сделку в Apple, если Google движется более чем на 5%.

Это стратегия возврата к среднему, поэтому, если Google вырастет более чем на 5%, мы продадим Apple. Если Google упадет более чем на 5%, мы сможем купить Apple.

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

//@version=5
strategy("Pair Trade: Apple & Google")

google_close = request.security("GOOG", "D", close)
google_open = request.security("GOOG", "D", open)

Затем мы можем выполнить расчет, чтобы определить процентное изменение цены.

price_change = google_close / google_open

Теперь переменная price_change содержит вычисление. Так, например, если Google открылся на уровне 100 долларов и вырос на 5%, чтобы закрыться на уровне 105 долларов, переменная price_change будет равна 105/100, что равно 1,05.

Но если Google открылся на уровне 100 долларов и снизился на 5%, чтобы закрыться на уровне 95 долларов, переменная будет выглядеть как 95/100, что равно 0,95.

Итак, мы знаем, что если Google откажется на 5% или больше, переменная price_change будет равна 0,95 или меньше, и мы хотим открыть длинную позицию. Вот синтаксис для этого.

if price_change < 0.95
    strategy.entry("long", strategy.long, 100)

И синтаксис, чтобы получить короткий, если Google сплачивает более 5%.

if price_change > 1.05
    strategy.entry("short", strategy.short, 100)

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

Наконец, мы построим переменную price_change в окне данных. Это не обязательно, но приятно видеть, и мы можем подтвердить, что сделки выполняются должным образом.

plot(price_change)

И вот результаты нашей стратегии.

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

Похоже, была проделана хорошая работа, чтобы выбрать этот минимум в марте!

Полный код:

//@version=5
strategy("Pair Trade: Apple & Google")

google_close = request.security("GOOG", "D", close)
google_open = request.security("GOOG", "D", open)

price_change = google_close / google_open

if price_change < 0.95
    strategy.entry("long", strategy.long, 100)

if price_change > 1.05
    strategy.entry("short", strategy.short, 100)

plot(price_change)

Как модифицировать наши скрипты без кодирования?

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

Взгляните на стандартный индикатор ATR, предлагаемый в Tradingivew. Обратите внимание, как легко изменить длину и даже цвета на вкладке «Стиль».

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

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

longTrigger = input(title="% Change for short entries", defval=5)

shortTrigger = input(title="% Change for long entries", defval=5)

Давайте пройдемся по параметрам, которые передаются через функцию input().

  1. title — здесь мы указываем текст, который видит пользователь при попытке изменить значение этого конкретного параметра.
  2. defval — это значение по умолчанию.

Теперь мы можем получить значения от пользователя. Но они будут вводить значение, такое как 5 (%). Нам нужно преобразовать это в 1,05 для наших операторов if.

longTrigger := 1 - longTrigger/100
shortTrigger := 1 + shortTrigger/100

И нам нужно изменить наши операторы if, чтобы они смотрели на наши вновь созданные переменные на основе пользовательского ввода, а не на ранее жестко закодированных значениях.

if price_change < longTrigger
    strategy.entry("long", strategy.long, 100)

if price_change > shortTrigger
    strategy.entry("short", strategy.short, 100)

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

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

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

И окно стиля для настройки параметров печати.

Полный код:

//@version=5
strategy("Pair Trade: Inputs")

longTrigger = input(title="% Change for short entries", defval=5)
shortTrigger = input(title="% Change for long entries", defval=5)

longTrigger := 1 - longTrigger/100
shortTrigger := 1 + shortTrigger/100

google_close = request.security("GOOG", "D", close)
google_open = request.security("GOOG", "D", open)

price_change = google_close / google_open

if price_change < longTrigger
    strategy.entry("long", strategy.long, 100)

if price_change > shortTrigger
    strategy.entry("short", strategy.short, 100)
    
plot(price_change)

Как построить сценарий с помощью Pine?

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

График работы рынка Форекс

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

Форекс торгует 24 часа в сутки и 5 дней в неделю. Различные рынки по всему миру открываются и закрываются в течение дня, что влияет на волатильность валюты.

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

Большинство трейдеров Форекс обращают внимание на лондонскую и нью-йоркскую сессии. Мы начнем с указания времени для этих сессий.

//@version=5
indicator("Forex Sessions", overlay=true)

London = time(timeframe.period, "0700-1500")
NY = time(timeframe.period, "1200-2000")

Здесь мы использовали функцию time() для создания периода. В параметрах мы используем 07:00 UTC для времени начала лондонской сессии и 15:00 UTC для времени окончания.

Переменная London теперь будет содержать время бара, если бар попадает между этим периодом. В противном случае он покажет NaN («не»-значение).

Мы можем использовать оператор if, чтобы проверить вывод переменной London.

val = if (na(London))
    1
else
    0

В приведенном выше коде мы используем встроенную функцию na(). Это проверяет, имеет ли переменная значение NaN или нет.

если переменная London возвращает значение NaN, это означает, что бар находится вне лондонских торговых часов.

В этом случае вызываемой переменной val будет присвоено целое число 1. В противном случае переменной будет присвоено значение val0.

Наконец, мы отрисуем только что созданную переменную val.

plot(val)

Вот как выглядит наш график после сохранения и добавления этого индикатора на график.

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

Мы могли бы построить его в окне данных, чтобы свечи было лучше видно, но визуализировать открытие и закрытие рынка все равно было бы непросто.

Кроме того, код выглядит не слишком хорошо.

Давайте начнем с использования однострочного оператора if, чтобы немного очистить наш код.

na(London) ? 1 : 0

Этот код выполняет ту же функцию, что и предыдущий оператор if. В этом случае нам не нужно использовать переменную val. Разберем синтаксис.

na(London)

Эта часть проверяет, содержит ли переменная London значение NaN.

? 1 : 0

Знак вопроса здесь — это краткая форма оператора if/else.

То, что следует за вопросительным знаком, является важной частью. Здесь два числа, разделенные двоеточием. Число перед двоеточием, в данном случае 1, — это то, что должно быть возвращено в случае, если оператор if верен.

Число после двоеточия, в данном случае 0, возвращается, когда оператор if возвращает false.

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

plot(na(London) ? 1 : 0)

Итак, теперь мы превратили оператор if в однострочный фрагмент кода.

Чтобы сделать график более удобным для чтения, мы можем нанести другой цвет фона, если лондонский рынок открыт.

Для этого мы заменяем функцию plot() на функцию bgcolor(). Это позволяет нам изменить цвет фона.

bgcolor(na(London) ? 1 : 0)

Также мы укажем цвет, когда рынок открыт.

bgcolor(na(London) ? na : color.blue)

Наша диаграмма начинает выглядеть намного лучше!

Последнее, что мы сделаем, это добавим код, чтобы увидеть, открыт ли рынок в Нью-Йорке, и установим зеленый фон, если это так.

bgcolor(na( NY ) ? na : color.green)

Вы заметите, что на приведенной ниже диаграмме есть три цвета.

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

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

Полный код:

//@version=5
indicator("Forex Sessions", overlay=true)

Tokyo = time(timeframe.period, "0000-0800")
London = time(timeframe.period, "0700-1500")
NY = time(timeframe.period, "1200-2000")

bgcolor(na(Tokyo) ? na : color.fuchsia)
bgcolor(na(London) ? na : color.blue)
bgcolor(na( NY ) ? na : color.green)

Нанесение аннотаций

Существует несколько вариантов печати аннотаций. Например, вы можете использовать функцию hline() для рисования горизонтального уровня на графике.

Существует функция plotchar(), которая позволяет отображать символы ASCII на графике. Это часто используется для построения заметки сверху или снизу ценового бара.

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

Полный список различных доступных аннотаций см. в разделе Обзор аннотаций в руководстве пользователя скрипта Pine.

Как я могу создать собственный индикатор в скрипте Pine?

Мы собираемся создать мультитаймфреймовый индикатор.

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

Стратегия использует полосы Боллинджера на 5-минутном графике и RSI на 1-минутном графике.

Идея состоит в том, чтобы искать расхождение rsi на 1-минутном графике, когда цена достигает верхней или нижней полосы Боллинджера на 5-минутном графике.

Потенциальной целью является средняя линия 5-минутной полосы Боллинджера или нижняя линия 1-минутной полосы Боллинджера.

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

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

Когда я торговал по этой стратегии, мне приходилось держать открытыми два графика: 1-минутный и 5-минутный.

Но в приведенном выше примере показаны 5-минутные полосы Боллинджера, нарисованные непосредственно на 1-минутном графике. Мы создадим этот индикатор в скрипте Pine.

//@version=5
indicator(title="Higher TF BBands", shorttitle="TF BBands", overlay=true)

Начнем с объявления имени скрипта и указания, что это индикатор. Также можно добавить более короткое название, это имя будет отображаться на диаграммах.

Затем мы устанавливаем некоторые пользовательские входы. Мы можем дублировать большинство входных данных из обычного индикатора полосы Боллинджера (как показано на изображении выше) для нашего пользовательского индикатора.

// Get user input
tf = input(title="BBands Timeframe", defval="5")
len = input(title="Length", defval=20)
stddev = input(title='StdDev', defval=2)

Мы можем создать индикатор полосы Боллинджера из встроенной вспомогательной функции.

[middle, upper, lower] = ta.bb(close, len, stddev)

Эта функция возвращает три значения. Нижняя, средняя и верхняя полоса. Они сохраняются индивидуально в переменные.

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

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

hbbandsMid = request.security(syminfo.tickerid, tf, middle, barmerge.gaps_on, barmerge.lookahead_off)
hbbandsUpper = request.security(syminfo.tickerid, tf, upper, barmerge.gaps_on, barmerge.lookahead_off)
hbbandsLower = request.security(syminfo.tickerid, tf, lower, barmerge.gaps_on, barmerge.lookahead_off)

Символ тикера остается прежним, поэтому мы использовали значение syminfo.tickerid, которое будет возвращать любой тикер, отображаемый на основном графике.

Вот и все, осталось построить новый индикатор.

plot(hbbandsMid)
plot(hbbandsUpper)
plot(hbbandsLower)

Теперь мы можем видеть полосы Боллинджера на 5-минутном графике, отображаемом на 1-минутном графике.

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

Полный код:

//@version=5
indicator(title="Higher TF BBands", shorttitle="TF BBands", overlay=true)

// Get user input
tf = input(title="BBands Timeframe", defval="60")
len = input(title="Length", defval=20)
stddev = input(title='StdDev', defval=2)

[middle, upper, lower] = ta.bb(close, len, stddev)

hbbandsMid = request.security(syminfo.tickerid, tf, middle, barmerge.gaps_on, barmerge.lookahead_off)
hbbandsUpper = request.security(syminfo.tickerid, tf, upper, barmerge.gaps_on, barmerge.lookahead_off)
hbbandsLower = request.security(syminfo.tickerid, tf, lower, barmerge.gaps_on, barmerge.lookahead_off)

plot(hbbandsMid)
plot(hbbandsUpper)
plot(hbbandsLower)

Последние мысли

Если вы следили за примерами, у вас будет хорошее представление о том, на что способен скрипт Pine.

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

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

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

Полная статистика, предлагаемая для стратегий, также является большим плюсом скрипта Pine.

У TradingView есть несколько ресурсов, если вы хотите продвинуть свои навыки кодирования скриптов Pine на шаг дальше.

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

Вот еще несколько ресурсов —

  1. Руководство по быстрому запуску — здесь приводится пример индикатора и разбивается сценарий построчно.
  2. Руководство пользователя Pine Script v5 — Подробное руководство по скрипту Pine.
  3. Блог TradingView – объявления о новых функциях, которые часто содержат примеры кода.
  4. Библиотека скриптов TradingView — библиотека исследований и стратегий Pine с открытым исходным кодом.

Последний вариант в списке — отличный ресурс, так как обычно другими трейдерами уже разработан нужный вам индикатор или стратегию.

Это также хороший источник идей для создания собственных индикаторов или стратегий.

Если вы хотите попробовать некоторые из примеров, загрузите весь код одним щелчком мыши на GitHub. Просто нажмите зеленую кнопку и выберите «Загрузить zip». Код будет в текстовых файлах, которые можно скопировать в редактор Pine Tradingview.

Читать оригинал руководства от Algotrading101

Рекомендуем к прочтению:

Лучшие индикаторы TradingView 2022

Лучшие альтернативы TradingView

Сегодня в тренде В тренде криптовалют сегодня

Новости криптовалют сегодня Новости криптовалют

Всем привет!

Видео по урокам на pine script хорошо заходят, поэтому я решил продолжить эту тематику. В этот раз мы напишем простой индикатор, который будет показывать текущие уровни Фибо за период, я постарался максимально упростить подачу материала, чтобы было доступно для понимания даже для пользователей, которые незнакомы или малознакомы с встроенным в TV языком программирования.

Ставьте лайк если понравилось, пишите вопросы если что-то не понятно, предлагайте темы для дальнейших уроков по pine script.

Всем удачи!


Все виды контента, которые вы можете увидеть на TradingView, не являются финансовыми, инвестиционными, торговыми или любыми другими рекомендациями. Мы не предоставляем советы по покупке и продаже активов. Подробнее — в Условиях использования TradingView.

Real checkReal check — 21 февраля 2021

1 комментарий

Популярная тема среди продвинутых людей: «Как самому написать индикатор или стратегию на tradingview«.

Все очень просто и делается интуитивно, в Трейдингвью применяется pine script.

Открываем внизу графиков вкладку pine script

Далее начинаем писать код

Пишем свой индикатор

Сперва нужно научиться писать индикаторы, а потом уже стратегии.

Итак:

1. Сверху пишем версию pine script — можно и без этого пункта

//@version=3

или

//@version=4

2. слово Study — означает, что пишем как раз индикатор.

study(title= «MA Cross 14 & 28», overlay=true)

title — это название нашего индикатора, которое будет отображаться на графике

overlay=true означает отобразить поверх графика

3. Указываем входные данные. У нас это sma 14 и 28. Запишем их в переменные, short — короткий период, long — длинный период

short = sma(close, 14)
long = sma(close, 28)

4. Начинаем рисовать, это делается при помощи функции plot

plot(short, color = red, linewidth = 3)
plot(long, color = green, linewidth = 3)

Тут видно, что мы задействуем переменные, которые указали выше, а также цвет линий и ширину

Все! уже можно нажимать Сохранить (там же ) и Добавить на график!

Теперь вы видите их на графике это скользящие средние.

5. Можно жирным выделить пересечение данных MA для наглядности

plot(cross(short, long) ? short : na, style = cross, linewidth = 4)

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

Пишем свою стратегию

Тут в центре — условия, то же самое, что в индикаторах (писали выше), только сверху и снизу меняется.

Сверху вместо study пишем :

strategy(«Cross EMA», overlay=true)

Внизу: уже будут команды

Смотрите также: как влияет маржинальная торговля на здоровье

Порекомендовать друзьям:

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

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

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

Давайте начнем!

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

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

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

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

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

Как создать индикаторы TA на TradingView

Ваш, вероятно, будет более свежим.

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

Как создать индикаторы TA на TradingView

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

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

Как создать индикаторы TA на TradingView

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

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

Как создать индикаторы TA на TradingView

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

учеба (Мой сценарий)

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

сюжет (близко)

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

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

// @ version = 4study (My Script, overlay = true) plot (open, color = color.purple)

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

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

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

// @ version = 4study (My Script, overlay = true) plotcandle (open, high, low, close)

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

// @ version = 4study (My Script, overlay = true) colors = open = close? color.red: color.greenplotcandle (открытие, максимум, минимум, закрытие)

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

// @ version = 4study (My Script, overlay = true) colors = open = close? color.red: color.greenplotcandle (открытие, максимум, минимум, закрытие, цвет = цвета)

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

Как создать индикаторы TA на TradingView

Красивый!

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

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

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

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

сюжет (sma (близко, 10))

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

Как создать индикаторы TA на TradingView

SMA, основанная на предыдущих десяти днях.

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

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

EMA = (Close - EMA предыдущих дней) * множитель - EMA предыдущих дней

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

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

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

// @ version = 4study (My Script, overlay = true) plot (sma (close, 10)) plot (ema (close, 10))

Как создать индикаторы TA на TradingView

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

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

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

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

Как создать индикаторы TA на TradingView

Продолжайте и добавьте это в диаграмму.

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

Как создать индикаторы TA на TradingView

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

Как создать индикаторы TA на TradingView

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

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

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

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

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

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

// @ version = 4strategy (ToDaMoon, overlay = true) enter = input (11000) exit = input (11300) price = closeif (price = enter) strategy.entry (BuyTheDip, strategy.long, comment = BuyTheDip) if (price = выход) strategy.close_all (comment = SellTheNews)

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

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

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

Как создать индикаторы TA на TradingView

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

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

Как создать индикаторы TA на TradingView

Позиции, которые мы открыли и покинули.

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

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

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

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

исследование (title = Binance Academy Script, overlay = true)

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

Study (title = Binance Academy Script, overlay = true) emaLength = input (title = EMA Length, type = input.integer, defval = 25, minval = 0)

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

Study (title = Binance Academy Script, overlay = true) emaLength = input (title = EMA Length, type = input.integer, defval = 25, minval = 0) emaVal = ema (close, emaLength)

Большой. На RSI. Ну дайте ему длину аналогичным образом:

study (title = Binance Academy Script, overlay = true) emaLength = input (title = EMA Length, type = input.integer, defval = 25, minval = 0) emaVal = ema (close, emaLength) rsiLength = input (title = RSI Длина, тип = input.integer, defval = 25, minval = 0)

И теперь мы можем его вычислить:

study (title = Binance Academy Script, overlay = true) emaLength = input (title = EMA Length, type = input.integer, defval = 25, minval = 0) emaVal = ema (close, emaLength) rsiLength = input (title = RSI Длина, тип = input.integer, defval = 25, minval = 0) rsiVal = rsi (close, rsiLength)

На этом этапе давайте соберем логику, которая раскрашивает свечи в зависимости от значений EMA и RSI. Давайте возьмем ситуацию, когда (а) цена закрытия свечи превышает EMA и (б) когда RSI выше 50.

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

Итак, наша следующая строка будет выглядеть так:

study (title = Binance Academy Script, overlay = true) emaLength = input (title = EMA Length, type = input.integer, defval = 25, minval = 0) emaVal = ema (close, emaLength) rsiLength = input (title = RSI Длина, тип = input.integer, defval = 25, minval = 0) rsiVal = rsi (close, rsiLength) colors = close emaVal и rsiVal 50? color.green: цвет.красный

Если мы переведем это на простой английский, мы просто скажем, что если значение EMA превышает цену закрытия, а оценка RSI превышает 50, хорошо закрасьте свечу в зеленый цвет. В противном случае хорошо покрасьте его в красный цвет.

Затем постройте EMA:

study (title = Binance Academy Script, overlay = true) emaLength = input (title = EMA Length, type = input.integer, defval = 25, minval = 0) emaVal = ema (close, emaLength) rsiLength = input (title = RSI Длина, тип = input.integer, defval = 25, minval = 0) rsiVal = rsi (close, rsiLength) colors = close emaVal и rsiVal 50? color.green: color.redplot (emaVal, EMA)

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

study (title = Binance Academy Script, overlay = true) emaLength = input (title = EMA Length, type = input.integer, defval = 25, minval = 0) emaVal = ema (close, emaLength) rsiLength = input (title = RSI Длина, тип = input.integer, defval = 25, minval = 0) rsiVal = rsi (close, rsiLength) colors = close emaVal и rsiVal 50? color.green: color.redplot (emaVal, EMA) plotcandle (open, high, low, close, color = colors)

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

Как создать индикаторы TA на TradingView

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

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

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

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

  • Краткое руководство по индикатору Parabolic SAR
  • Руководство по освоению коррекции Фибоначчи
  • Объяснение опережающих и запаздывающих индикаторов
  • Пояснения к индикатору MACD

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

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

Примеры индикаторов, которые мы можем запрограммировать при помощи встроенных функций:

  1. С помощью функции ta.sma() можно вычислить простую скользящую среднюю. Для функции sma нужно задать серию значений и длину (количество баров).
  2. Для экспоненциальной скользящей средней мы используем функцию ta.ema(). А ta.wma() дает нам взвешенное скользящее среднее.
  3. Существует также скорректированное экспоненциальное скользящее среднее (также известное как экспоненциальное скользящее среднее Уайлдера), которое мы вычисляем с помощью функции ta.rma().
  4. Для симметрично взвешенной скользящей средней мы используем функцию ta.swma() TradingView. А с помощью функции ta.alma() мы получаем скользящую среднюю Арно Легу.
  5. В TradingView также есть две скользящие средние, которые сглаживают данные в зависимости от объема. Функция ta.vwma() дает нам скользящую среднюю, взвешенную по объему. А с помощью ta.vwap() мы получаем средневзвешенную по объему цену за текущий торговый день.

Как нарисовать индикатор в TradingView

С помощью функции plot() мы можем построить скользящие средние, задав нужный нам цвет линий, вид графика и толщину линий:

//@version=5

indicator(title=«MA», overlay=true)

plot(ta.sma(close, 10), color=color.black, linewidth=2) // выводит SMA по цене close с периодом 10, цвет черный, толщина линии 2

plot(ta.sma(high low, 20), color=color.blue, linewidth=2) // выводит SMA разницы цен с периодом 10, цвет синий, толщина линии 2

plot(ta.ema(close, 50), color=color.fuchsia, linewidth=2)// выводит EMA по цене close с периодом 50, цвет фуксия, толщина линии 2

plot(ta.rma(close,15), color=color.lime, linewidth=2) // выводит RMA о цене close с периодом 15, цвет лайм, толщина линии 2

Все эти 4 скользящие можно вывести на 1 графике:

Все эти 4 скользящие можно вывести на 1 графике:

Не стоит совмещать осцилляторы типа RSI и скользящие средние на одной шкале, осцилляторы и гистограммы лучше выводить в отдельном окне.

//@version=5

indicator(title=«rsi», overlay=false)

plot(ta.rsi(close, 7), color=color.lime, linewidth=2) // выводит RSI по ценам close с периодом 7, цвет лайм, толщина линии 2

plot(ta.rsi(close, 14), color=color.fuchsia, linewidth=2) // выводит RSI по ценам close с периодом 714, цвет черный, толщина линии 2

hline(30, color=color.gray, linewidth=2) // рисуем линию толщиной 2 серого цвета на уровне 30

hline(70, color=color.gray, linewidth=2) // рисуем линию толщиной 2 серого цвета на уровне 70

Как нарисовать скользящую среднюю в TradingView

Заключение

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

На основе этих индикаторов вы можете написать свои стратегии по торговле теми или иными бумагами или анализировать разные акции.

когда первый раз зашел на биржу

Вся история началась с 5 апреля 2020 года, я в очередной раз сидел за графиком и думал, что всю эту кашу надо автоматизировать. Хоть как-то.

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

Конечно, все вам скажут про мир во всем мире, но идея очень простая — заработать бабла.

Дони, трейдер

Так как по образованию я из ИТ и кручусь в этом мире последние эдак лет 6-7, мне хотелось куда-то складывать свои деньги, но обычный банковский вклад в 5% не очень то радовал. Ну правда, 5% годовых? Проблема удручалась еще и тем, что часть денег была в долларах, а там на секундочку вклад вообще самый высокий в РФ достигает — 0,91%.

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

Я выработал некую стратегию в голове, что буду откладывать часть денег каждый месяц туда и содержать свой счет в пропорциях 70% облигации и 30% акции, чтобы в случае чего не оказаться в полной заднице.

Если с облигациями худо бедно разобраться можно, то вот акции – это уже повеселее.

Встает вопрос, что покупать и когда продавать. В интернете много всего, пришлось копаться и в итоге я нашел одного парня, который на примере написания программы на Python рассказал пару интересных для меня моментов.

А именно, чтобы код искал за меня вкусные акции, а не я сидел и пулился целый день в монитор. Для меня это прозвучало как зов господа с небес – не меньше.

Конечно прозвучало круто, ведь можно было ничего не делать, а какие акции покупать находились сами, вот так счастье.

Джордан, трейдер

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

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

Тогда я написал для себя очень простой скриптик на TradingView – благо там можно делать примерно все.

Кстати вот он:

Он показывает когда было бы круто зайти в акцию.

Продажа сигнализирует об открытии шорта, но буду честен – я пока не делаю шортов, наверное еще не дорос до них.

И я начал добавлять его на свои купленные акции, что явно помогало мне принимать решения.

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

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

Все это назвалось GooseTrade

Теперь я имею список акций, которые либо уже в течении 2-3 дней растут, либо те которые только начинают рост, конечно же те которые только начинают отдаю по подписке.

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

По итогам, я уже сейчас обыгрываю процентную ставку в банке.

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

Интересно конечно, а проводил какие-нибудь интервью у своих емеил подписчиков?

Макс, отец всего

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

Спасибо, что дочитали до конца!

Если у вас есть вопросы или пожелания, я всегда готов выслушать и ответить.
На вопрос, а какой процент хороших акций находится – 65-69% акций из списка становятся плюсовыми на след. день.

Pine Script добавит вам удовольствия от Tradingview. Оставайтесь на месте, чтобы проверить ресурсы, чтобы узнать это.

Торговый вид — это кроссплатформенная платформа премиум-класса для построения графиков с доступом к ряду рынков и бирж.

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

Но торговля может быть сложной без инструментов аналитики. И именно здесь в игру вступают пользовательские индикаторы. TradingView поддерживает создание индикаторов с помощью собственного PineScript.

Pine Script — это облегченный язык программирования, эксклюзивный для Tradingview. Вы можете изучить Pine Script без какого-либо опыта программирования. Тем не менее, это поможет вам резко ускориться с любым прошлым знакомством с программированием (Python).

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

Вы найдете множество торговых индикаторов, разработанных в Pine Script другими пользователями.

Например, здесь рассказывается о максимумах и минимумах за определенный пользователем промежуток времени:

Некоторые из них являются скриптами с открытым исходным кодом, код которых доступен на Tradingview вместе с каждым таким скриптом.

Один из более сложных индикаторов, названный VADER, рассказывает вам о тенденциях покупок и продаж на рынке:

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

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

Программирование TradingView PineScript

Этот Курс Pine Script на Udemy для абсолютных новичков.

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

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

Вы можете пройти этот курс с бесплатной учетной записью TradingView. Вы также получаете пожизненный доступ к этому курсу и сертификат об окончании в конце.

Руководство для начинающих по Pine Script — это бесплатный обучающий ресурс Pine от Art of Trading. Однако вы также можете перейти на их платные версии.

Как видно из названия, он может помочь вам развить навыки Pine с нуля. Кроме того, первый модуль знакомит кандидатов начального уровня с программированием, а затем — с основами Pine.

Этот базовый курс заканчивается тем, что вы создаете собственный скрипт Pine.

Наконец, вы также можете посмотреть короткую версию этого бесплатного курса на YouTube.

Программирование PineScript

Эта премия Программирование PineScript курс включает более 5 часов видеоматериалов с более чем 50 примерами кода, которые помогут вам освоить TradingView.

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

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

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

Курс соснового скрипта

Это бесплатный подробный текстовый Курс PineScript от TradingCode.net.

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

Технический анализ является неотъемлемой частью модуля, наряду с тестированием стратегии на истории. Наконец, курс заканчивается уроками по управлению капиталом.

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

Скрипт Pine (TradingView)

Это еще один текстовый Курс PineScript в виде одной статьи. Курс начинается с введения, преимуществ и альтернатив Pine Script.

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

Наконец, это вводный модуль, который вы можете пройти без каких-либо ноу-хау в программировании.

Вывод

Изучение PineScript — лучший способ получить максимум. Кроме того, Pine разработан, чтобы делать больше с меньшими затратами, поэтому любой новичок может начать, развивать и помогать другим получать ценную информацию.

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

Понравилась статья? Поделить с друзьями:
  • Как написать инди рок
  • Как написать индекс на пустом конверте
  • Как написать индекс на айфоне
  • Как написать индекс казахстана
  • Как написать индеец правильно