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

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

Жанры

Учебник 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)

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

Черное сердце

ван Ластбадер Эрик
Детективы:
триллеры
7.00
рейтинг книги
Черное сердце

Проводник

Кораблев Родион
2. Другая сторона
Фантастика:
боевая фантастика
рпг
7.41
рейтинг книги
Проводник

Ранчо

Стил Даниэла
Любовные романы:
современные любовные романы
7.71
рейтинг книги
Ранчо

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

Рокотов Алексей
6. Вечный
Фантастика:
рпг
фэнтези
5.00
рейтинг книги
Вечный. Книга VI

Василий Аксенов. Сентиментальное путешествие

Петров Дмитрий Павлович
Остров Аксенов
Документальная литература:
биографии и мемуары
прочая документальная литература
5.00
рейтинг книги
Василий Аксенов. Сентиментальное путешествие

Битва полчищ

Рудазов Александр
9. Архимаг
Фантастика:
фэнтези
юмористическое фэнтези
9.31
рейтинг книги
Битва полчищ

Публичное одиночество

Михалков Никита Сергеевич
Документальная литература:
биографии и мемуары
5.00
рейтинг книги
Публичное одиночество

Магистр. Трилогия

Степанов Николай Викторович
Магистр [Воронцов]
Фантастика:
научная фантастика
7.00
рейтинг книги
Магистр. Трилогия

"Военные приключения-3. Компиляция. Книги 1-22

Карпов Владимир Васильевич
Военные приключения
Детективы:
триллеры
криминальные детективы
исторические детективы
шпионские детективы
крутой детектив
5.00
рейтинг книги
Военные приключения-3. Компиляция. Книги 1-22

Мадрапур

Мерль Робер
Проза:
современная проза
7.00
рейтинг книги
Мадрапур

Локки 6. Потомок бога

Решетов Евгений Валерьевич
6. Локки
Фантастика:
аниме
фэнтези
5.00
рейтинг книги
Локки 6. Потомок бога

Синдзи-кун. Тетралогия

Хонихоев Виталий
Синдзи-кун
Фантастика:
фэнтези
попаданцы
5.00
рейтинг книги
Синдзи-кун. Тетралогия

Башня Занида (Авт.сборник)

де Камп Лайон Спрэг
Классика мировой фантастики
Фантастика:
фэнтези
5.00
рейтинг книги
Башня Занида (Авт.сборник)

Газлайтер. Том 5

Володин Григорий Григорьевич
5. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 5