Чтение онлайн

на главную - закладки

Жанры

Учебник Pine Script 4
Шрифт:

В наших торговых условиях мы можем сделать необходимые расчеты для нашего стоп-лосса и тейк-профита. 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_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)

Поделиться:
Популярные книги

Гром Раскатного. Том 1

Володин Григорий Григорьевич
1. Штормовой Предел
Фантастика:
боевая фантастика
попаданцы
аниме
5.00
рейтинг книги
Гром Раскатного. Том 1

Цеховик. Книга 1. Отрицание

Ромов Дмитрий
1. Цеховик
Фантастика:
попаданцы
альтернативная история
5.75
рейтинг книги
Цеховик. Книга 1. Отрицание

Враг из прошлого тысячелетия

Еслер Андрей
4. Соприкосновение миров
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Враг из прошлого тысячелетия

Боярышня Дуняша 2

Меллер Юлия Викторовна
2. Боярышня
Любовные романы:
любовно-фантастические романы
5.00
рейтинг книги
Боярышня Дуняша 2

Вечный. Книга V

Рокотов Алексей
5. Вечный
Фантастика:
боевая фантастика
попаданцы
рпг
5.00
рейтинг книги
Вечный. Книга V

Мастер...

Чащин Валерий
1. Мастер
Фантастика:
героическая фантастика
попаданцы
аниме
6.50
рейтинг книги
Мастер...

Корсар

Русич Антон
Вселенная EVE Online
Фантастика:
боевая фантастика
космическая фантастика
6.29
рейтинг книги
Корсар

Печать Пожирателя

Соломенный Илья
1. Пожиратель
Фантастика:
попаданцы
аниме
сказочная фантастика
фэнтези
5.00
рейтинг книги
Печать Пожирателя

В лапах зверя

Зайцева Мария
1. Звериные повадки Симоновых
Любовные романы:
остросюжетные любовные романы
эро литература
5.00
рейтинг книги
В лапах зверя

Администратор

Дорничев Дмитрий
14. Мое пространственное убежище
Фантастика:
рпг
постапокалипсис
5.00
рейтинг книги
Администратор

Эволюционер из трущоб. Том 4

Панарин Антон
4. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 4

Зодчий. Книга II

Погуляй Юрий Александрович
2. Зодчий Империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Зодчий. Книга II

Кодекс Охотника. Книга IV

Винокуров Юрий
4. Кодекс Охотника
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Кодекс Охотника. Книга IV

Адвокат Империи 16

Карелин Сергей Витальевич
16. Адвокат империи
Фантастика:
аниме
фэнтези
попаданцы
5.00
рейтинг книги
Адвокат Империи 16