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

如何在Pine Script中将时段计算的水平线延长至实时K线

Pine Script 线条延长至实时K线解决方案

要实现将特定时段计算的水平线从UTC7点延长至当前实时K线,核心是固定保存每日的计算数值,并以UTC7点为起点创建线条,实时更新线条终点到最新K线,具体修改如下:

修改后的完整代码

//@version=5
indicator("EQ Zones Extended to UTC7+", overlay=true)

eq = input.session(title='Eq Session', defval='0200-0300', group="Eq & Zone Session")
utc7_start_hour = input.int(7, title="UTC Start Hour", group="Extension Settings")

// 1. 捕获EQ时段的高低点及计算值,每日固定保存
var float daily_eq_value = na
var float daily_r2plus = na
var float daily_r2minus = na
var float daily_r3plus = na
var float daily_r3minus = na

eq_session = is_new_session('1440', eq)
in_eq = in_session(eq)

float _eqlow = na
float _eqhigh = na
_eqlow := eq_session ? low : in_eq ? math.min(low, _eqlow[1]) : na
_eqhigh := eq_session ? high : in_eq ? math.max(high, _eqhigh[1]) : na

// 当EQ时段结束时,保存当日计算值
if not in_eq and in_eq[1]
    daily_eq_value := (_eqhigh[1] + _eqlow[1]) / 2
    diff_eq = _eqhigh[1] - _eqlow[1]
    daily_r2plus := 2.5 * diff_eq
    daily_r2minus := 2.5 * diff_eq
    daily_r3plus := 3.5 * diff_eq
    daily_r3minus := 3.5 * diff_eq

// 2. 构造当日UTC7点的时间戳
current_day_start = timestamp(year, month, dayofmonth, 0, 0)
utc7_time = current_day_start + utc7_start_hour * 3600 * 1000 // 转换为毫秒级时间戳

// 3. 管理线条:每日UTC7点后创建/更新线条,删除旧线条
var line eq_line = na
var line plus_r2_line = na
var line minus_r2_line = na
var line plus_r3_line = na
var line minus_r3_line = na

// 每日重置线条(新交易日开始时)
if ta.newbar and ta.dayofweek != ta.dayofweek[1]
    line.delete(eq_line)
    line.delete(plus_r2_line)
    line.delete(minus_r2_line)
    line.delete(plus_r3_line)
    line.delete(minus_r3_line)
    eq_line := na
    plus_r2_line := na
    minus_r2_line := na
    plus_r3_line := na
    minus_r3_line := na

// 当时间超过UTC7点且已有当日EQ计算值时,创建/更新线条
if time >= utc7_time and not na(daily_eq_value)
    // 若线条未创建则初始化,否则更新终点到当前K线时间
    if na(eq_line)
        eq_line := line.new(utc7_time, daily_eq_value, time, daily_eq_value, xloc=xloc.bar_time, color=color.fuchsia)
        plus_r2_line := line.new(utc7_time, daily_eq_value + daily_r2plus, time, daily_eq_value + daily_r2plus, xloc=xloc.bar_time, color=color.green)
        minus_r2_line := line.new(utc7_time, daily_eq_value - daily_r2minus, time, daily_eq_value - daily_r2minus, xloc=xloc.bar_time, color=color.red)
        plus_r3_line := line.new(utc7_time, daily_eq_value + daily_r3plus, time, daily_eq_value + daily_r3plus, xloc=xloc.bar_time, color=color.green)
        minus_r3_line := line.new(utc7_time, daily_eq_value - daily_r3minus, time, daily_eq_value - daily_r3minus, xloc=xloc.bar_time, color=color.red)
    else
        line.set_x2(eq_line, time)
        line.set_x2(plus_r2_line, time)
        line.set_x2(minus_r2_line, time)
        line.set_x2(plus_r3_line, time)
        line.set_x2(minus_r3_line, time)

关键修改说明

  • 固定保存每日计算值:用var变量存储daily_eq_value等数值,确保EQ时段结束后,数值会保留到当日收盘,不会随bar刷新丢失。
  • UTC7点时间构造:通过timestamp函数结合当日日期和指定小时,生成UTC7点的精确时间戳,作为线条的起始点。
  • 线条动态更新:在时间超过UTC7点后,若线条未创建则初始化;已创建的线条通过line.set_x2实时更新终点到当前K线的时间,实现“延长至实时K线”的效果。
  • 旧线条清理:每个新交易日开始时删除上一日的线条,避免画面杂乱。

内容的提问来源于stack exchange,提问作者Pony

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 16:55:26