遵循PineCoders最佳实践时Pine脚本time类型变量声明报错的解决方案咨询
解决Pine Script中
time类型声明的报错问题 我来帮你搞定这个Pine Script的类型声明问题!你遇到的'time' is not a valid type keyword in variable declaration报错,核心原因是Pine Script的类型系统里根本没有time这个类型关键字——时间戳(包括input.time组件返回的值)本质上是Unix时间格式的整数,所以正确的类型应该是int。
具体修改方案
你只需要把变量声明里的time换成int,就能解决报错,同时完全符合PineCoders的最佳实践,和你提到的LucF的脚本写法保持一致:
修改后的完整代码如下:
var string START_TIME = "2018-01-01T00:00" var string END_TIME = "2030-01-01T00:00" var string GP12 = "Date range filtering" bool i_dateFilter = input(false, "Date Range Filtering", group = GP12) int i_startDateTime = input(timestamp(START_TIME), "Start Date/Time", type = input.time, group = GP12) int i_endDateTime = input(timestamp(END_TIME), "End Date/Time", type = input.time, group = GP12) f_tradeDateIsAllowed() => i_dateFilter ? (time >= i_startDateTime and time <= i_endDateTime) : true
额外说明
input.time组件虽然提供了可视化的时间选择器,但它返回的是整数类型的Unix时间戳,所以用int类型声明变量是完全正确的。- 你不需要修改
f_tradeDateIsAllowed()函数里的逻辑:Pine Script内置的time变量本身也是整数类型的时间戳,和你声明的i_startDateTime、i_endDateTime类型匹配,直接做大小比较完全合法。 - 你提到的LucF的脚本中,也是用
int类型来存储时间输入值的,这个写法完全符合Pine Script的类型规范和最佳实践。
内容的提问来源于stack exchange,提问作者nop
相关产品推荐
相关产品推荐

