时间范围
介绍
图表的时间范围有时也称为 间隔或分辨率。它是图表上一个条形图所代表的时间单位。所有标准图表类型都使用时间范围:“条形图”、“蜡烛图”、“空心蜡烛图”、“线图”、“面积图”和“基线图”。一种非标准图表类型也使用时间范围:“平均线”。
有兴趣访问多个时间范围数据的程序员需要熟悉 Pine Script™ 中时间范围的表达方式以及如何使用它们。
时间框架字符串在不同情况下发挥作用:
- 当从其他符号和/或时间范围请求数据时,必须在request.security()中使用它们 。请参阅其他时间范围和数据 页面 以了解request.security()的用法 。
- 它们可以用作 time() 和 time_close() 函数的参数,以返回更高时间范围的条形图的时间。反过来,这可以用于从图表的时间范围检测更高时间范围的变化,而无需使用 request.security()。请参阅 测试更高时间范围的变化部分以了解如何执行此操作。
- input.timeframe()函数 提供了一种方法,允许脚本用户通过脚本的“输入”选项卡定义时间范围(有关更多信息,请参阅 时间范围输入部分)。
- indicator
()
声明语句有一个可选
timeframe
参数,可用于为简单脚本提供多时间框架功能,而无需使用 request.security()。 - 许多内置变量提供有关脚本所运行图表所使用的时间范围的信息。 有关它们的更多信息, 请参阅图表时间范围部分,包括timeframe.period ,它以 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
- 接下来,我们验证时间范围,以确保输入的时间范围等于或高于图表的时间范围。如果不是,我们将生成运行时错误。
- 我们最终打印转换为分钟的两个时间范围值。