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

如何在Pine Script的request.security中指定时段获取前日高低点?

用request.security获取前一天指定时段的高低点(Pine Script v5)

完全可以在request.security()中定义时段,只需在时间框架参数里同时指定周期和会话规则,就能精准提取目标时段的高低点,无需自行跟踪K线状态。

实现思路

要获取前一天14:00-15:00的高低点,核心步骤:

  1. 在request.security()的第二个参数中,用"周期,会话"格式指定范围,比如"D,1400-1500";
  2. 通过偏移日线周期的结果,直接获取前一天的时段数据;
  3. 利用内置函数ta.highest()/ta.lowest()自动计算时段内的高低点,无需手动维护变量。

修改后的完整代码

//@version=5
indicator('前一天14-15时段高低点', overlay=true)

// 输入目标时段
target_sess = input.session('1400-1500', title='目标时段')

// 定义安全函数:提取前一天指定时段的高低点
f_get_prev_session_highlow() =>
    // 切换到日线周期,并应用会话过滤
    [sess_high, sess_low] = request.security(syminfo.tickerid, "D", 
        [ta.highest(high, barssince(time(timeframe.period, target_sess + ":1234567")) + 1),
         ta.lowest(low, barssince(time(timeframe.period, target_sess + ":1234567")) + 1)],
         gaps=barmerge.gaps_on)
    // 偏移一天,获取前一天的数据
    [sess_high[1], sess_low[1]]

// 获取前一天的高低点
[prev_high, prev_low] = f_get_prev_session_highlow()

// 绘制结果
plot(prev_high, color=color.new(color.blue, 0), title='前一天时段高点', linewidth=2)
plot(prev_low, color=color.new(color.white, 0), title='前一天时段低点', linewidth=2)

关键代码解释

  • request.security()的第二个参数"D,1400-1500":明确在日线周期下,仅处理14:00-15:00的会话数据;
  • barssince(time(...)):统计当前会话内的K线数量,确保计算的高低点仅限目标时段;
  • [sess_high[1], sess_low[1]]:将结果偏移一个日线周期,直接拿到前一天的时段数据;
  • gaps=barmerge.gaps_on:保留数据缺口,避免跨周期合并时的失真问题。

对比原代码的优势

  1. 无需手动跟踪in_session、is_first等状态变量,代码更简洁;
  2. 直接通过跨周期安全函数提取数据,逻辑清晰不易出错;
  3. 天然支持前一天数据的偏移,无需额外写日期判断逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:20:27