请求修复200 SMA高低线指标:支持指定日期与盘后时段
修复Pine Script:交互式日期选择的200MA静态高低线(支持盘后)
问题梳理
需求是在目标日期的次日,显示该日期内200MA的静态高低线,当前代码存在以下问题:
- 交互式日期选择功能异常,仅能显示最后一次选择日期的线条,切换其他日期时数据不重置
- 盘后时段未被纳入统计范围
- 每个K线都创建新线条,导致图表线条堆积
问题根源
- 使用
var声明的hi/lo是全局持久变量,切换日期时不会自动重置,保留了旧日期的极值 - 日期匹配逻辑错误:直接用
in_date作为判断条件,仅当K线时间完全等于输入时间戳时才触发,无法覆盖整个目标日期的K线 - 时段限制
timeAllowed排除了盘后数据,且线条创建逻辑错误,每个K线都生成新线条
修复方案
- 移除
var关键字,基于日期匹配来重置高低值 - 正确判断当前K线是否属于选择的目标日期,统计该日期内200MA的最高/最低值
- 仅在目标日期结束后的第一个K线创建静态线条,避免重复生成
- 新增盘后支持选项,让用户自主选择是否纳入盘后数据
修复后的完整代码
//@version=5 indicator('200MA 静态高低线', '', true) // 交互式日期输入 target_date = input.time(timestamp("01 Mar 2024 GMT-6"), "选择目标日期", confirm = true) // 可选:是否包含盘后数据 include_afterhours = input.bool(true, "包含盘后时段", tooltip="勾选后将统计盘内+盘后的200MA极值") // 盘内时段(仅当不包含盘后时生效) regular_session = input.session('0300-1959', "盘内时段", confirm=true) // 计算200MA sma200 = ta.sma(close, 200) // 解析目标日期的年/月/日 target_year = ta.year(target_date) target_month = ta.month(target_date) target_day = ta.dayofmonth(target_date) // 判断当前K线是否属于目标日期 is_target_day = ta.year == target_year and ta.month == target_month and ta.dayofmonth == target_day // 判断是否在统计时段内(盘内+可选盘后) is_in_session = include_afterhours ? true : time(timeframe.period, regular_session + ':23456') // 统计目标日期内的200MA最高/最低值 var float daily_hi = na var float daily_lo = na // 每日开盘时重置极值 if ta.change(ta.dayofmonth) daily_hi := na daily_lo := na // 目标日期内更新极值 if is_target_day and is_in_session daily_hi := na(daily_hi) ? sma200 : math.max(daily_hi, sma200) daily_lo := na(daily_lo) ? sma200 : math.min(daily_lo, sma200) // 在目标日期的次日开盘时绘制静态高低线 if not is_target_day and is_target_day[1] and not na(daily_hi) and not na(daily_lo) // 绘制高线 line.new(bar_index, daily_hi, bar_index + 1, daily_hi, extend=extend.right, color=color.rgb(218, 15, 15), width=1) // 绘制低线 line.new(bar_index, daily_lo, bar_index + 1, daily_lo, extend=extend.right, color=color.rgb(218, 15, 15), width=1)
代码说明
- 日期匹配:通过解析目标日期的年/月/日,精准匹配当天所有K线,确保统计完整的当日200MA极值
- 盘后支持:新增开关选项,用户可选择是否纳入盘后数据,默认开启
- 线条创建逻辑:仅在目标日期结束后的第一个K线绘制一次线条,避免图表堆积
- 极值重置:每日自动重置极值变量,切换日期时无需手动重置,保证数据准确性
内容的提问来源于stack exchange,提问作者First Last
相关产品推荐
相关产品推荐

