Pine Script v5 для TradingView - пошаговое руководство
Шрифт:
Давайте пройдемся по параметрам, которые передаются через функцию input.
title — здесь мы указываем текст, который видит пользователь при попытке изменить значение этого конкретного параметра.
defval — это значение по умолчанию.
Теперь мы можем получить значения от пользователя. Но они будут вводить значение, такое как 5 (%). Нам нужно преобразовать это в 1,05 для наших операторов if. longTrigger := 1 - longTrigger/100 shortTrigger := 1 + shortTrigger/100
И нам нужно изменить наши операторы if, чтобы они смотрели на наши вновь созданные переменные
Чтобы получить доступ к параметрам ввода, щелкните значок шестеренки рядом с названием вашей стратегии в окне данных.
Пользовательские значения теперь могут быть установлены для процентного изменения, используемого в стратегии.
Существует также окно свойств, которое позволит вам установить пользовательские параметры для других частей стратегии.
И окно стиля для настройки параметров печати.
Полный код: //@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 дней в неделю. Различные рынки по всему миру открываются и закрываются в течение дня, что влияет на волатильность валюты.
Давайте запрограммируем индикатор, который, взглянув на график, покажет нам, когда ожидается наибольшая занятость на рынках.
Большинство трейдеров Форекс обращают внимание на лондонскую и нью-йоркскую сессии. Мы начнем с указания времени для
Здесь мы использовали функцию 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)
Наша диаграмма начинает выглядеть намного лучше!