Pine Script策略开发:计算指定时段价格极值并绘图
Pine Script 特定时段高低价计算与绘制方案
问题修正与实现思路
你需要计算每日12:00-14:00的价格极值,并在13:00-16:00时段将结果绘制在图表上。原代码的时段逻辑和高低价计算方式存在偏差,以下是修正后的完整实现:
逐K实时追踪版代码
//@version=5 strategy("特定时段高低价追踪策略", overlay = true) // 定义核心时段 t_calc = time(timeframe.period, "1200-1400:1234567") // 12:00-14:00,用于计算高低价 t_show = time(timeframe.period, "1300-1600:1234567") // 13:00-16:00,用于显示结果 // 存储当日目标时段的高低价,用var保证变量不被逐K重置 var float daily_session_high = na var float daily_session_low = na // 每日开盘时重置高低价,避免跨日数据干扰 if ta.newbar("D") daily_session_high := na daily_session_low := na // 在目标时段内实时更新高低价 if not na(t_calc) daily_session_high := ta.max(high, daily_session_high) daily_session_low := ta.min(low, daily_session_low) // 仅在显示时段绘制高低价线,用linebr保证线条连续且仅在有效区间显示 plot(not na(t_show) ? daily_session_high : na, color=color.red, style=plot.style_linebr, title="12-14时段最高价") plot(not na(t_show) ? daily_session_low : na, color=color.green, style=plot.style_linebr, title="12-14时段最低价")
小时K线聚合版代码(适合大周期图表)
如果你的图表周期大于1小时,需要基于1小时K线聚合计算12:00-14:00的极值,可以用以下方案:
//@version=5 strategy("特定时段高低价追踪策略(小时K版)", overlay = true) // 定义显示时段 t_show = time(timeframe.period, "1300-1600:1234567") // 调取1小时周期,提取当日12:00-14:00对应的2根小时K线的高低极值 [session_high, session_low] = request.security(syminfo.tickerid, "60", [ta.highest(high, 2), ta.lowest(low, 2)], gaps=barmerge.gaps_on) // 在显示时段绘制结果 plot(not na(t_show) ? session_high : na, color=color.red, style=plot.style_linebr, title="12-14时段最高价") plot(not na(t_show) ? session_low : na, color=color.green, style=plot.style_linebr, title="12-14时段最低价")
关键逻辑说明
- 每日重置:通过
ta.newbar("D")判断新交易日,重置当日的高低价变量,确保数据仅对应当日目标时段。 - 时段判断:用
time()函数精确匹配目标时段,避免非时段内的无效计算。 - 绘制控制:通过
not na(t_show)控制仅在指定时段显示线条,避免图表冗余。
内容的提问来源于stack exchange,提问作者Sam
相关产品推荐
相关产品推荐

