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