时间范围

介绍

图表的时间范围有时也称为 间隔分辨率。它是图表上一个条形图所代表的时间单位。所有标准图表类型都使用时间范围:“条形图”、“蜡烛图”、“空心蜡烛图”、“线图”、“面积图”和“基线图”。一种非标准图表类型也使用时间范围:“平均线”。

有兴趣访问多个时间范围数据的程序员需要熟悉 Pine Script™ 中时间范围的表达方式以及如何使用它们。

时间框架字符串在不同情况下发挥作用:

时间范围字符串规范

时间范围字符串遵循以下规则:

  • 它们由乘数和时间范围单位组成,例如“1S”,“30”(30分钟),“1D”(一天),“3M”(三个月)。

  • 该单位用一个字母表示,其中不使用字母表示分钟:“S”表示秒,“D”表示天,“W”表示周,“M”表示月。

  • 当不使用乘数时,假定为 1:“S”相当于“1S”、“D”相当于“1D”等。如果仅使用“1”,则将其解释为“1min”,因为分钟不使用单位字母标识符。

  • 没有“小时”单位;“1H”无效一小时的正确格式是“60”(请记住,没有为分钟指定单位字母)。

  • 各个时间范围单位的有效乘数各不相同:

    • 对于秒,只有离散的 1、5、10、15 和 30 乘数有效。
    • 分钟数,1 至 1440。
    • 天数,1 至 365。
    • 周数,1 至 52。
    • 月份,1 至 12。

比较时间范围

比较不同的时间范围字符串很有用,例如,可以确定图表上使用的时间范围是否低于脚本中使用的较高时间范围。

将时间范围字符串转换为以分钟的小数形式表示,提供了一种使用通用单位进行比较的方法。此脚本使用 timeframe.in_seconds () 函数将时间范围转换为浮点秒,然后将结果转换为分钟:

//@version=5
indicator("Timeframe in minutes example", "", true)
string tfInput = input.timeframe(defval = "", title = "Input TF")

float chartTFInMinutes = timeframe.in_seconds() / 60
float inputTFInMinutes = timeframe.in_seconds(tfInput) / 60

var table t = table.new(position.top_right, 1, 1)
string txt = "Chart TF: "    + str.tostring(chartTFInMinutes, "#.##### minutes") + 
"\nInput TF: " + str.tostring(inputTFInMinutes, "#.##### minutes")
if barstate.isfirst
    table.cell(t, 0, 0, txt, bgcolor = color.yellow)
else if barstate.islast
    table.cell_set_text(t, 0, 0, txt)

if chartTFInMinutes > inputTFInMinutes
    runtime.error("The chart's timeframe must not be higher than the input's timeframe.")

注意:

  • 我们使用内置的 timeframe.in_seconds() 函数将图表和 input.timeframe() 函数转换为秒,然后除以 60 转换为分钟。
  • 在初始化和 变量时,我们两次调用 timeframe.in_seconds()函数。在第一个实例中,我们没有为其参数提供参数,因此该函数以秒为单位返回图表的时间范围。在第二个调用中,我们通过调用input.timeframe()提供脚本用户选择的时间范围 chartTFInMinutesinputTFInMinutestimeframe
  • 接下来,我们验证时​​间范围,以确保输入的时间范围等于或高于图表的时间范围。如果不是,我们将生成运行时错误。
  • 我们最终打印转换为分钟的两个时间范围值。
Original text
Rate this translation
Your feedback will be used to help improve Google Translate