Учебник Pine Script 4
Шрифт:
Наши выходы работают и отображаются на нашем основном графике вместе с длинными и короткими входами.
Полный код: //@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%.
Это стратегия возврата к среднему, поэтому, если 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.
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 дней в неделю. Различные рынки по всему миру открываются и закрываются в течение дня, что влияет на волатильность валюты.