Как отрисовать сессии в Pine Script v5: Азия, Лондон, Нью-Йорк

Как отрисовать сессии в Pine Script v5: Азия, Лондон, Нью-Йорк Pine Script
Пошаговое руководство по отрисовке торговых сессий (Азиатская, Лондонская, Нью-Йоркская) в Pine Script v5 с использованием функций time и bgcolor. Готовый код индикатора.
Суть: Для отрисовки торговых сессий в Pine Script v5 используется функция time() со спецификацией сессии и таймзоны, а визуализация фона выполняется с помощью функции bgcolor(). Это позволяет гибко подсвечивать Азиатскую, Лондонскую и Нью-Йоркскую сессии на внутридневных таймфреймах.

Исходный код

В алгоритмической торговле время играет ключевую роль. Понимание того, какая сессия сейчас активна, помогает фильтровать ложные пробои и учитывать волатильность. Например, при расчете Session-Anchored CVD в Pine Script v5: Полное руководство крайне важно точно определять границы сессий. В этой статье мы разберем, как написать профессиональный индикатор торговых сессий (Азия, Лондон, Нью-Йорк) с возможностью настройки часового пояса.

Ниже представлен готовый к использованию код индикатора для TradingView на языке Pine Script v5. Он поддерживает выбор таймзоны, кастомизацию цветов и времени работы каждой сессии.

//@version=5
indicator("Trading Sessions Visualizer [Finfluct]", overlay=true)

// Настройки Азиатской сессии
use_asia = input.bool(true, "Отображать Азию", group="Азиатская сессия")
asia_sess = input.session("0000-0900", "Время Азии", group="Азиатская сессия")
asia_color = input.color(color.new(#00e676, 90), "Цвет Азии", group="Азиатская сессия")

// Настройки Лондонской сессии
use_london = input.bool(true, "Отображать Лондон", group="Лондонская сессия")
london_sess = input.session("0800-1700", "Время Лондона", group="Лондонская сессия")
london_color = input.color(color.new(#29b6f6, 90), "Цвет Лондона", group="Лондонская сессия")

// Настройки Нью-Йоркской сессии
use_ny = input.bool(true, "Отображать Нью-Йорк", group="Нью-Йоркская сессия")
ny_sess = input.session("1300-2200", "Время Нью-Йорка", group="Нью-Йоркская сессия")
ny_color = input.color(color.new(#ff5252, 90), "Цвет Нью-Йорка", group="Нью-Йоркская сессия")

// Выбор часового пояса
tz = input.string("UTC", "Часовой пояс", options=["UTC", "America/New_York", "Europe/London", "Asia/Tokyo", "Europe/Moscow"], group="Общие настройки")

// Функция для проверки нахождения бара внутри сессии
in_session(sess_spec, timezone) =>
    // Добавляем ":23456" для проверки только рабочих дней (пн-пт)
    not na(time(timeframe.period, sess_spec + ":23456", timezone))

// Проверка активности сессий на внутридневных таймфреймах
is_intraday = timeframe.isintraday

is_asia = is_intraday and use_asia and in_session(asia_sess, tz)
is_london = is_intraday and use_london and in_session(london_sess, tz)
is_ny = is_intraday and use_ny and in_session(ny_sess, tz)

// Отрисовка фона с помощью bgcolor
bgcolor(is_asia ? asia_color : na, title="Фон Азиатской сессии")
bgcolor(is_london ? london_color : na, title="Фон Лондонской сессии")
bgcolor(is_ny ? ny_color : na, title="Фон Нью-Йоркской сессии")

Разбор параметров

Давайте подробно разберем ключевые функции и параметры, использованные в коде:

  • input.session(): Позволяет пользователю удобно настраивать временной интервал сессии через стандартный интерфейс настроек TradingView. Передает строку формата «ЧЧММ-ЧЧММ».
  • time(timeframe.period, sess_spec, timezone): Основная функция для работы со временем. Если текущий бар попадает в указанный интервал sess_spec при заданной таймзоне timezone, функция возвращает UNIX-время начала бара. Если не попадает — возвращает na.
  • :23456: Маска дней недели, где 2 — понедельник, а 6 — пятница. Мы конкатенируем её к строке сессии, чтобы исключить отрисовку зон на выходных днях (криптовалютный рынок торгуется 24/7, но традиционные сессии к нему неприменимы в выходные).
  • timeframe.isintraday: Логический флаг, который гарантирует, что сессии будут отрисовываться только на внутридневных графиках (минуты, часы), предотвращая визуальный хаос на дневных или недельных таймфреймах.
  • bgcolor(): Функция закрашивает задний фон графика. Если условие истинно, применяется выбранный цвет с прозрачностью (например, color.new(#ff5252, 90), где 90 — уровень прозрачности), иначе возвращается na, и фон остается стандартным.

Как запустить

Чтобы запустить этот индикатор на платформе TradingView, выполните следующие шаги:

1. Откройте любой внутридневной график (например, EURUSD, таймфрейм 5m или 15m) на сайте TradingView.

2. В нижней части экрана найдите и откройте вкладку Pine Editor.

3. Полностью удалите стандартный шаблон кода и вставьте скопированный выше исходный код.

4. Нажмите кнопку Save (Сохранить), укажите имя скрипта, а затем нажмите Add to chart (Добавить на график).

5. Теперь вы увидите цветные зоны сессий. Вы можете зайти в настройки индикатора (иконка шестеренки), чтобы изменить часовой пояс, цвета или точное время работы сессий под вашу торговую стратегию.

Если вы хотите создавать более сложные алгоритмы, например, динамически менять логику в зависимости от внешних факторов, рекомендуем ознакомиться с нашей статьей про Динамический bgcolor по фазам луны в Pine Script v5. А для построения полноценных торговых систем вам обязательно пригодится руководство по настройке Мульти-лимитный Take Profit в Pine Script v5: Пошаговое руководство.

Оцените статью
FinFluct