Datetime Pine脚本:如何在图表中显示当前时间';标签上的时区,在每次价格更新时?

Datetime Pine脚本:如何在图表中显示当前时间';标签上的时区,在每次价格更新时?,datetime,pine-script,Datetime,Pine Script,我试图做一些看似琐碎的事情,但却遇到了各种各样的问题 每次更新当前价格时,我都会在标签上绘制某些基本信息,而不管图表的时间框架如何 我能够准确地显示数量和价格信息,但是显示时间是一个挑战 我的第一次尝试是使用以下代码: if (barstate.islast) label.set_text( id=myLabel, text="\nTime: " + tostring(hour) + ":" + tostring

我试图做一些看似琐碎的事情,但却遇到了各种各样的问题

每次更新当前价格时,我都会在标签上绘制某些基本信息,而不管图表的时间框架如何

我能够准确地显示数量和价格信息,但是显示时间是一个挑战

我的第一次尝试是使用以下代码:

if (barstate.islast)
    label.set_text(
         id=myLabel,
         text="\nTime: " + tostring(hour) + ":" + tostring(minute) + ":" + tostring(minute)
         )
我很快了解到,即使我的图表设置为纽约时区(即UTC-4),调用
tostring(hour)
显示UTC的小时数

弄清楚如何指定显示时间与图表的时区相对应一直是第一个主要障碍,我一直在与
timestamp()
syminfo.timezone
纠缠不休,但毫无效果

我的第二个主要问题是
tostring(second)
不能正确显示秒数,即使是UTC时间

在制作1m图表时,我想我通过实施

tostring((timenow time)/1000)

但是,秒数不能在不同的时间范围内正确显示

除此之外,来自不同时区的不同交易所的图表都将显示与UTC时间相关的“错误”时间

一定是我遗漏了一些非常基本的东西,因为时间是如此重要的数据,但我无法确定正确的语法


提前感谢您的帮助。

这里有几个不同的问题:

  • Pine脚本在您可能手动选择的图表时区上不可见。这只会影响图表的显示
  • minute
    变量返回条形图开始处的分钟数,因此在新条形图开始之前,不会在实时条形图中的脚本迭代中更改。要获取当前分钟,您需要使用的重载版本,您可以在其中以毫秒为单位指定时间戳。内置变量返回特定脚本迭代时间的时间戳(在实时栏中也是如此;当脚本在历史栏上运行时,
    timenow
    仅在脚本执行期间每秒更新一次)。因此,您需要使用
    minute(timenow)
  • 如果希望
    minute()
    返回非exchange时区的时间,可以使用第二个参数指定时区,这就是我们在第二个示例中所做的。在我们的示例中,可以通过脚本的“设置/输入”更改时区。与时区一起使用,
    minute()
    将类似于:
    分钟(timenow,“GMT-4”)
  • //@version=4
    study("", "Time", true)
    i_timeZone = input("GMT-4")
    f_print(_txt) => var _lbl = label.new(bar_index, highest(10)[1], _txt, xloc.bar_index, yloc.price, #00000000, label.style_none, color.gray, size.large, text.align_left), label.set_xy(_lbl, bar_index, highest(10)[1]), label.set_text(_lbl, _txt)
    
    f_print(tostring(hour(timenow), "00:") + tostring(minute(timenow), "00:") + tostring(second(timenow), "00") + " (Exchange)\n")
    f_print(tostring(hour(timenow, i_timeZone), "00:") + tostring(minute(timenow, i_timeZone), "00:") + tostring(second(timenow, i_timeZone), "00") + " (Input: " + i_timeZone + ")")