Pine Script如何检测图表时间周期并格式化警报中的timeframe.period值
Pine Script 时间周期格式化解决方案
原代码错误点
timeframe.period为字符串类型,无法直接进行数值比较、取模/除法运算- 自定义变量名
timeframe与Pine内置的timeframe命名空间冲突,会触发编译报错 - 转换逻辑错误:将分钟级的周期值转换为小时数需要做除以60运算,你写的取模逻辑会得到120%60=0的错误结果,同时Pine不支持直接用
1D作为数值参与比较
可直接运行的实现代码
// 格式化时间周期为易读格式 var string readableTimeframe = na tfTotalSeconds = timeframe.in_seconds() if tfTotalSeconds < 86400 // 小于1天的周期做转换 if timeframe.ishours // 小时级周期直接取乘数,可按需添加H后缀,不需要直接删即可 readableTimeframe := str.tostring(timeframe.multiplier) + "H" else // 分钟/秒级周期直接输出原乘数,可按需加M/S后缀 readableTimeframe := str.tostring(timeframe.multiplier) else // 天及以上周期直接用原值 readableTimeframe := timeframe.period msgr1 = syminfo.ticker + ',' + readableTimeframe + ', Crossed Resistance 1' if srLines == true and close > h10 alert(msgr1)
逻辑说明
- 用内置函数
timeframe.in_seconds()获取当前周期对应的总秒数,和86400(1天对应的秒数)做比较,判断逻辑严谨无歧义 - 内置变量
timeframe.ishours、timeframe.multiplier可以直接获取周期的类型和数值部分,不需要手动做单位转换,避免计算错误 - 输出添加了H后缀便于识别,不需要可以直接删除
+ "H"部分,就会只输出纯数字的小时值
内容的提问来源于stack exchange,提问作者alex deralu
相关产品推荐
相关产品推荐

