В наших торговых условиях мы можем сделать необходимые расчеты для нашего стоп-лосса и тейк-профита. 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% движения встречаются редко. Нам, вероятно, потребуется увидеть намного больше сделок, чтобы определить, является ли это хорошей стратегией.
Похоже, была проделана хорошая работа, чтобы выбрать этот минимум в марте!
Полный код: //@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().
title здесь мы указываем текст, который видит пользователь при попытке изменить значение этого конкретного параметра.
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.