如何在Pine Script中获取摆动高点形成时间?现有代码失效求助
在Pine Script中获取摆动高点的形成时间
原代码的问题
timestamp()函数用法错误:这个函数用于生成时间戳,需要传入年、月、日等独立时间组件,不能直接传入已有的epoch时间戳,因此原代码中的timestamp(last_sh_active_time)会触发参数不匹配错误。- 缺少摆动高点信号定义:变量
sh未明确赋值,ta.change(sh)无法识别摆动高点的触发条件。
正确实现代码
//@version=5 indicator("Swing High Time Tracker", overlay=true) // 定义摆动高点:两种方式二选一 // 方式1:使用内置摆动高点函数(默认对比前后1根K线的高点) swing_high = ta.swinghigh() // 方式2:自定义摆动高点(示例:前后2根K线内的最高值) // swing_high = ta.highest(high, 5) == high and high > high[1] and high > high[2] and high > high[-1] and high > high[-2] // 记录摆动高点形成的时间:当摆动高点出现时,保存当前K线的时间戳 var float last_swing_high_time = na if swing_high last_swing_high_time := time // 将时间戳转换为人类可读格式 readable_time = str.tostring(last_swing_high_time, "yyyy-MM-dd HH:mm") // 在图表上标记摆动高点及对应时间 label.new(bar_index, high, "摆动高点时间:\n" + readable_time, color=color.red, textcolor=color.white) plotchar(swing_high, "Swing High", "▲", location.belowbar, color=color.green)
关键细节
time本身就是当前K线的epoch时间戳(单位毫秒,与图表时间框架一致),直接记录即可。- 转换可读时间需使用*
str.tostring()*函数,第二个参数为格式字符串,支持yyyy(年)、MM(月)、dd(日)、HH(时)、mm(分)等格式符。 - 用
var声明last_swing_high_time,可保留上一次摆动高点的时间,避免每根K线重置变量值。
内容的提问来源于stack exchange,提问作者Chirag Goyal
相关产品推荐
相关产品推荐

