Pine script 如何在Tradingview上的pinescript中在特定时间绘制垂直线?

Pine script 如何在Tradingview上的pinescript中在特定时间绘制垂直线?,pine-script,Pine Script,我想在每天的某个当地时间(如格林尼治标准时间08:00+1)画一条垂直线 自从我写了关于垂直线的文章之后,pine脚本已经被更新,包括了,然而,这里的问题是获得正确的时间。大多数服务器(用于FX)似乎是基于美国的,交易视图本地时间设置(显示在左下角)似乎完全独立于pine脚本中的操作 /@version=4 研究(“时间调整垂直线”,叠加=真) vline(BarIndex、颜色、线型、线宽)=>//垂直线,每个指示器最多允许54行 return=line.new(BarIndex,-1000,

我想在每天的某个当地时间(如格林尼治标准时间08:00+1)画一条垂直线

自从我写了关于垂直线的文章之后,pine脚本已经被更新,包括了,然而,这里的问题是获得正确的时间。大多数服务器(用于FX)似乎是基于美国的,交易视图本地时间设置(显示在左下角)似乎完全独立于pine脚本中的操作

/@version=4
研究(“时间调整垂直线”,叠加=真)
vline(BarIndex、颜色、线型、线宽)=>//垂直线,每个指示器最多允许54行
return=line.new(BarIndex,-1000,BarIndex,1000,xloc.bar\u索引,extend.both,Color,LineStyle,LineWidth)
如果(条形图索引%10==0.0)
vline(bar#u index,#FF8000ff,line.style_solid,1)//不需要变量赋值
我无法让上面的内容发挥作用,但我得到了这个,至少显示了以下几行:

/@version=4
研究(title=“基于时间的会话栏”,shorttitle=“NowOpen”,overlay=true)
line_height=2//我们必须定义一个远远高于主图表中最高价格水平的高度!
gmt\u offs=2//gmt+X
纽约时间=6//EST(格林尼治标准时间)
t1=时间(timeframe.period,“0930-0935:23456”)
//t1=时间(timeframe.isintraday,“0930-0935:23456”)
//t2=t1+gmt*60*60*60
t2=t1+2
绘图(na(t2)?0:line_height,title='Hello!',color=#101010,linewidth=1,style=plot.style_直方图,transp=50,offset=0,trackprice=false)
然而,这句话完全错了:

我如何扩展上述代码,在每天的某个时间绘制一条垂直线,并获得正确的时间位置


可能有用的链接:

  • (正式文件)

  • (Github回购文件)


更新

多亏了PineCoders LucF,我能够通过以下代码大致得到我想要的:

/@version=4
研究(“时间线”,叠加=真)
t1=时间戳(“GMT+2”、年、月、月、月、日、07、00、00)
//t2=时间戳(“GMT+2”,年,月,月,月,日)//取消对此的注释以形成一个范围
t2=t1//注释掉此项以使用范围
bgcolor((时间>=t1)和(时间版本1
一个版本的函数可以使用时区参数:

/@version=4
研究(“时间线”,叠加=真)
targetTime=时间戳(“GMT+1”,年,月,月,08,00,00)
bgcolor(targetTime==time?color.silver:na,transp=0)
//调试:在单独的窗口中绘制这些线
绘图(targetTime,“targetTime”,颜色为橙色)
绘图(时间,“时间”)
图表显示UTC+1次,指示器设置为“无刻度”,以不破坏价格刻度:

版本2 使用此版本,您可以选择:

  • 从/到小时的范围
  • 仅在工作日显示线路
  • 在bgcolor或vline模式之间
/@version=4
研究(“时间线”,叠加=真)
fromHour=输入(7)
toHour=输入(10)
weekdaysOnly=输入(真)
useVline=输入(假)
dayIsOk=非周日或(dayofweek!=dayofweek.周六和dayofweek!=dayofweek.sunday)
t1=时间戳(“GMT+2”、年、月、月、月、小时、00、00)
t2=时间戳(“GMT+2”,年、月、月、日、小时、00、00)

timeIsOk=(time>=t1)和(time这是我使用过的一些代码:

enableTimeLines = input(defval=true, type=input.bool, title="Enable Time Lines")
// Chartlines 1h and 4h
if enableTimeLines
    timeA = 21 // starts at 21:00 hs
    timeB = 21
    for i = 0 to 60
        timeA := timeA - 4 // and from 21hs goes backwards
        targetTimeA = timestamp("GMT-3", year, month, dayofmonth, timeA, 00, 00)
        line.new(x1=targetTimeA, y1=open, x2=targetTimeA, y2=close, xloc=xloc.bar_time, extend=extend.both, color=color.new(color.yellow, 20), style=line.style_dotted, width=1)
        timeB := timeB - 1
        if timeB != (21 or 01 or 05 or 09 or 13 or 17)
            targetTimeB = timestamp("GMT-3", year, month, dayofmonth, timeB, 00, 00)
            line.new(x1=targetTimeB, y1=open, x2=targetTimeB, y2=close, xloc=xloc.bar_time, extend=extend.both, color=color.new(color.silver, 50), style=line.style_dotted, width=1)
它每1小时画一条银线,除了每4小时画一条黄线,它会向后走


请记住,for循环的时间响应是有限制的。

此外,请确保您在小时图表上,因为只有一支蜡烛会显示/突出显示,否则您将看不到任何内容。但仍然缺少操作代码中的功能:(a)如何设置要显示的日期和(b)在给定每小时的范围内,我们如何使行变宽?答案中的版本1代码不仅适用于1小时TF;只要有一个开始时间等于
timestamp()中时间的条,它就可以工作
call,这是您在问题中要求的。在from/to代码的基础上,添加了具有更多选项的版本2。伙计们!请停止删除
pine-script-4
标记。Pinescript-4是一种完全不同的语言,与Pinescript-3不向后兼容。您所做的操作等同于删除
C
第一个也是最重要的原因是,对于回答pine脚本问题的人来说(比如Luc、Baris、me和其他一些人)跟踪更多的标签很不方便。因为人们用
v4
tag标记他们的问题,因为没有人跟踪标签,所以得到的答案可能更少。所以请不要创建多余的标签。特别是,考虑到没有那么多关于pine脚本的问题来对他们进行分组。第二个原因是类似的——你是不要混淆新用户要选择什么标签。第三个原因是您的示例中的
C#
C
是不正确的:pine-v4仍然是pine,它不是“一种完全不同的语言”。pine的当前版本是v4,其他版本已被弃用,不再受支持(虽然它们仍能工作,但我不知道它们能工作多久).它们之间的差异并不是很大-一些变量刚刚被重命名,比如
red
变成
color.red
,bug一般来说是同一种语言,具有相同的逻辑、意识形态等。几乎没有真正的差异,这破坏了向后兼容性。将其与C和C之间的差异进行比较,其中一个比较低-允许您直接使用内存的高级语言,另一种是带有垃圾收集器和例外处理的高级语言。Pine-4更像是使用C并使用宏更改了语言中的一些单词,如
#define Main
。但正因为如此,您没有得到新的语言。所以