Сессии и функции времени

From TradingView Wiki
Jump to: navigation, search
Language: English  • 日本語 • Русский



Функции и переменная time

В Pine существуют специальные средства для работы с торговыми сессиями, временем и датой. Мы рассмотрим простую диаграмму IBM, 30, на которой были применены 2 скрипта: “Дата/время бара (Bar date/timeя)” и “Сессии (Session bars)”.

Chart time 1.png

Вот начальный код первого скрипта "Дата/время бара":

study("Bar date/time")
plot(time)

Это иллюстрирует значение переменной времени. Переменная time возвращает дату/время (временную метку) каждого столбца на диаграмме в формате UNIX. Как видно из скриншота, значение timeна последнем баре равно 1397593800000. Это значение - это миллисекунды, прошедшие с 00:00:00 по UTC, 1 января 1970 года и Соответствует вторнику, 15 апреля 2014 года в 20:30:00 по UTC. (Есть много онлайн-конвертеров, например OnlineConversion.com). Диаграмма времени графика на снимке экрана показывает время последнего бара как 2014-04-15 16:30 (в часовом поясе обмена, отсюда разница между этим временем и UTC составляет 4 часа).

Второй скрипт, "Сессии (Session bars)":

study("Session bars")
t = time(period, "0930-1600")
plot(na(t) ? 0 : 1)


Он показывает, как пользователь может различать строки сеанса и полосы, которые проходят в расширенные часы, используя встроенную функцию time, а не переменную time (фон за этими столбцами Был окрашен серым цветом). Функция time возвращает время строки в миллисекундах UNIX time или NaN, если панель находится за пределами данной торговой сессии (09: 30-16: 00 в нашем примере). time принимает два аргумента, первый - это «разрешение», бары которого необходимы для определения временной метки, а вторая - «спецификация сеанса», которая представляет собой строку, которая указывает начало и конец Торговой сессии (в часовом поясе обмена). Строка «0930-1600» соответствует символу торговой сессии IBM. Примеры конфигураций торговых сессий: «0000-0000» - полный 24 часа с сеансом, начинающимся в полночь. «1700-1700» - полный 24 часа с началом сеанса в 17:00. «0900-1600,1700-2000» - сеанс, который начинается в 9:00 с перерыва в 16:00 до 17:00 и заканчивается в 20:00 «2000-1630» - ночная сессия, которая начинается в 20:00 и заканчивается в 16:30 на следующий день. «0930-1700: 146» - сессия, которая начинается в 9:30 и заканчивается в 17:00 по воскресеньям (1), по средам (4) и пятницам (6) (другие дни недели - выходные дни).

Спецификация сеанса, передаваемая функции time, не обязана соответствовать реальной торговой сессии символа на графике. Можно передать разные «гипотетические» спецификации сеанса, которые можно использовать для выделения этих или (других?) Баров в серии данных. Можно передавать разные «гипотетические» спецификации сеанса, которые могут использоваться для выделения тех или иных баров в серии данных.

Существует перегруженная функция time, которая позволяет пользователю пропустить спецификацию пользовательского сеанса. В этом случае внутренне он будет использовать регулярную спецификацию сеанса для символа. Например, можно выделить начало каждого полчаса на минутной диаграмме следующим образом:

study("new 30 min bar")
is_newbar(res) =>
    t = time(res)
    change(t) != 0 ? 1 : 0
plot(is_newbar("30"))

Chart time 2.png

Функция is_newbar из предыдущего примера может использоваться во многих ситуациях. Например, на дневном графике важно отображать максимумы и минимумы, которые начинались с открытия рынка:

study("Opening high/low", overlay=true)

highTimeFrame = input("D", type=resolution)
sessSpec = input("0930-1600", type=session)

is_newbar(res, sess) =>
    t = time(res, sess)
    change(t) != 0 ? 1 : 0

newbar = is_newbar(highTimeFrame, sessSpec)
s1 = newbar ? low : nz(s1[1])
s2 = newbar ? high : nz(s2[1])

plot(s1, style=circles, linewidth=3, color=red)
plot(s2, style=circles, linewidth=3, color=lime)

Chart time 3.png

Обратите внимание на переменные highTimeFrame и sessSpec. Они были объявлены особым образом с переменной функций input. Более подробную информацию о входах индикатора можно найти здесь: вход переменных.

Встроенные переменные для работы с Time

Стандартная библиотека Pine имеет набор встроенных переменных, которые позволяют использовать время скрипта в логике алгоритма аргумента в скриптах:

  • time — время UNIX текущего бара в миллисекундах (в часовом поясе UTC).
  • year — текущий год.
  • month — текущий месяц.
  • weekofyear — номер недели текущего бара.
  • dayofmonth — дата текущего времени бара.
  • dayofweek — День недели для текущего времени бара. Вы можете использовать вс, пн, вт, ср, чт, пт and сб для сравнения.
  • hour — Текущий час.
  • minute — текущая минутка.
  • second — текущая секунда.

Ниже перечислены также встроенные функции:

  • year(x) — Возвращает год для предоставленного времени UTC.
  • month(x) — Возвращает месяц для предоставленного времени UTC.
  • weekofyear(x) — Возвращает неделю года для предоставленного времени UTC.
  • dayofmonth(x) — Возвращает день месяца для предоставленного времени UTC.
  • dayofweek(x) — Возвращает день недели для предоставленного времени UTC.
  • hour(x) — Возвращает час для предоставленного времени UTC.
  • minute(x) — Возвращает минуту для предоставленного времени UTC.
  • second(x) — Возвращает секунду за предоставленное время.

Все эти переменные и функции возвращают время в установленный часовой пояс, за исключением переменной time , которая возвращает время в часовой пояс UTC.


Предыдущая статья: Состояние баров (свечей). Встроенные переменные barstate, Следующая: Расширенные и регулярные сеансы, Вверх: Pine Script Tutorial/ru