You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Pine Script中获取摆动高点形成时间?现有代码失效求助

在Pine Script中获取摆动高点的形成时间

原代码的问题

  1. timestamp()函数用法错误:这个函数用于生成时间戳,需要传入年、月、日等独立时间组件,不能直接传入已有的epoch时间戳,因此原代码中的timestamp(last_sh_active_time)会触发参数不匹配错误。
  2. 缺少摆动高点信号定义:变量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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.27 17:32:56