Как нарисовать вертикальную линию в определенное время в pinescript на Tradingview? - PullRequest
0 голосов
/ 20 января 2020

Я хотел бы нарисовать вертикальную линию, каждый день в определенное местное время (например, 08:00 GMT + 1).

Так как мой последний пост о вертикальных линиях, сосна -скрипт был обновлен и теперь включает vline(), однако проблема здесь в том, чтобы правильно выбрать время. Большинство серверов (для FX), по-видимому, базируются в США, и настройки местного времени в режиме просмотра трейдинга (показанные слева внизу) кажутся полностью независимыми от того, что делается в pine-script.

//@version=4
study("Time Adjusted Vertical Line", overlay=true)

vline(BarIndex, Color, LineStyle, LineWidth) => // Verticle Line, 54 lines maximum allowable per indicator
    return = line.new(BarIndex, -1000, BarIndex, 1000, xloc.bar_index, extend.both, Color, LineStyle, LineWidth)

if(bar_index%10==0.0)
    vline(bar_index, #FF8000ff, line.style_solid, 1) // Variable assignment not required

Я не мог заставить работать вышеперечисленное, но я получил это, чтобы, по крайней мере, показать строки:

//@version=4
study(title="Time Based Session Bars", shorttitle="NowOpen", overlay=true)
line_height = 2    // We must define a height that reaches far above the highest price level in main chart!

gmt_offs = 2 // GMT + X
nys_offs = 6 // EST (in GMT)

t1 = time(timeframe.period, "0930-0935:23456")
//t1 = time(timeframe.isintraday, "0930-0935:23456")
//t2 = t1 + gmt_offs*60*60*60
t2 = t1 + 2
plot(na(t2) ? 0 : line_height, title='Hello!', color=#101010, linewidth=1, style=plot.style_histogram, transp=50, offset=0, trackprice=false)

Однако строки совершенно неправильны:

enter image description here

Как расширить вышеприведенный код, чтобы построить вертикальную линию каждый день в определенное время и получить правильное время размещения?


Возможно Полезные ссылки:


ОБНОВЛЕНИЕ

Благодаря PineCoders-LucF мне удалось получить примерно то, что я хотел, с помощью следующего кода:

//@version=4
study("Line at time",overlay=true)

t1 = timestamp("GMT+2", year, month, dayofmonth, 07, 00, 00)
//t2 = timestamp("GMT+2", year, month, dayofmonth, 10, 00, 00)  // Uncomment this to make a range
t2=t1                                                           // Comment out this to use a range
bgcolor( (time >= t1) and (time <= t2) ? color.silver : na, transp = 0)

Однако Есть два вопроса с этим кодом.

  1. Он не использует функциональность timeframe.period, которая позволяет указывать определенные дни и временные интервалы в одном месте.
  2. Она помещает линию в "середину" свечи, поэтому, если вы находитесь на 1-м графике и хотите линию в 08.00, она просто поместит ее в середину. Таким образом, не подходит как сигнал тревоги / сигнал, если вы не используете период времени <= 1 минута </li>

1 Ответ

3 голосов
/ 21 января 2020

Версия 1

Одна версия функции timestamp() может использовать параметр часового пояса:

//@version=4
study("Line at time", overlay=true)
targetTime = timestamp("GMT+1", year, month, dayofmonth, 08, 00, 00)
bgcolor(targetTime == time ? color.silver : na, transp = 0)

// Debugging: these plots lines in separate window
plot(targetTime, "targetTime", color.orange)
plot(time, "time")

Диаграмма отображается с UTC + 1 раз и индикатором установлено значение «Без шкалы», чтобы не нарушать шкалу цен:

enter image description here

Версия 2

В этой версии вы можете выбрать:

  • A от / до часового диапазона
  • Отображение линии только по рабочим дням
  • Между режимами bgcolor или vline
//@version=4
study("Line at time",overlay=true)
fromHour = input(7)
toHour = input(10)
weekdaysOnly = input(true)
useVline = input(false)
dayIsOk = not weekdaysOnly or (dayofweek != dayofweek.saturday and dayofweek != dayofweek.sunday)
t1 = timestamp("GMT+2", year, month, dayofmonth, fromHour, 00, 00)
t2 = timestamp("GMT+2", year, month, dayofmonth, toHour, 00, 00)
timeIsOk = (time >= t1) and (time <= t2)
bgcolor( not useVline and timeIsOk and dayIsOk ? color.orange : na, transp = 80)
if useVline and timeIsOk and dayIsOk
    line.new(bar_index, low * .9999, bar_index, high * 1.0001, xloc.bar_index, extend.both, #FF8000ff, line.style_solid, 1)

enter image description here

...