Skip to content

Latest commit

 

History

History
72 lines (46 loc) · 6.18 KB

Timeframes.md

File metadata and controls

72 lines (46 loc) · 6.18 KB

时间框架

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

对访问多个时间范围内的数据感兴趣的程序员需要熟悉时间范围在 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()提供脚本用户选择的时间范围 。chartTFInMinutes``inputTFInMinutes``timeframe
  • 接下来,我们验证时间范围以确保输入时间范围等于或高于图表的时间范围。如果不是,我们会生成一个运行时错误。
  • 我们最终打印转换为分钟的两个时间范围值。