Pine Script v5 для TradingView - пошаговое руководство
Шрифт:
В наших торговых условиях мы можем сделать необходимые расчеты для нашего стоп-лосса и тейк-профита. 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. Вот параметры, которые были переданы.
exit — это идентификатор сделки для выхода из сделки.
long — это идентификатор, который мы ранее установили при входе в сделку. Это позволит скрипту Pine узнать, из какой позиции мы пытаемся выйти.
stop=stopLoss – указываем, что уровень, содержащийся в переменной stopLoss, должен использоваться как стоп-ордер на выход из сделки.
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 открылся на уровне 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)