如何在Pine Script中指定交易时段内绘制K线最高价与最低价
特定交易时段(0500-0800)高低价绘制解决方案
要实现特定交易时段内的最高价、最低价标记,你可以通过以下方式修改原有代码:
核心思路
- 定义目标时段:判断当前K线时间是否落在
05:00-08:00区间内 - 计算该时段内的最高价与最低价:从时段起始点开始,累计计算区间内的最高、最低价
- 标记时段内创高低价的K线,区分历史时段与当日时段
完整代码实现
study("Session High/Low Marker", overlay = true) // 定义目标交易时段(05:00-08:00) inTargetSession = (hour >= 5 and hour < 8) or (hour == 8 and minute == 0) // 捕捉时段的起始与结束点 sessionStart = change(inTargetSession) and inTargetSession sessionEnd = change(inTargetSession) and not inTargetSession // 计算当前目标时段内的最高价与最低价 sessionHigh = ta.highest(high, barssince(sessionStart) + 1) sessionLow = ta.lowest(low, barssince(sessionStart) + 1) // 区分当日与历史时段 isToday = (year == year(timenow)) and (month == month(timenow)) and (dayofmonth == dayofmonth(timenow)) isHist = not isToday // 判断当前K线是否为时段内最高价/最低价 isSessionHighBar = high == sessionHigh and inTargetSession isSessionLowBar = low == sessionLow and inTargetSession // 绘制背景色标记 bgcolor(sessionStart ? color.blue : na, transp = 80) // 标记时段开始 bgcolor(sessionEnd ? color.orange : na, transp = 80) // 标记时段结束 bgcolor(isSessionLowBar and isHist ? color.red : na, transp = 75) // 历史时段最低价K线 bgcolor(isSessionHighBar and isHist ? color.green : na, transp = 75) // 历史时段最高价K线 bgcolor(isSessionLowBar and isToday ? color.new(color.red, 50) : na) // 当日时段最低价K线 bgcolor(isSessionHighBar and isToday ? color.new(color.green, 50) : na) // 当日时段最高价K线
代码说明
inTargetSession:精确匹配05:00-08:00区间,包含08:00整的K线sessionStart/sessionEnd:触发时段的起始与结束信号,用于重置高低价的计算周期sessionHigh/sessionLow:从时段起始点到当前K线的累计最高、最低价- 通过不同透明度的颜色区分当日与历史时段的高低价K线,避免视觉混淆
内容的提问来源于stack exchange,提问作者simdia
相关产品推荐
相关产品推荐

