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

请求修正Pine Script代码:准确统计开盘后红绿K线数量(含首根K线)

开盘后红绿K线计数修正方案

原代码问题分析

  • 日线切换判断错误:ta.change('D') 写法无效,无法正确识别新一天开盘,导致首根K线遗漏统计。
  • 标签重叠覆盖:两个计数标签放在同一坐标点,互相遮挡导致显示模糊。
  • 计数逻辑不严谨:变量初始化和日线切换时的赋值逻辑,无法确保首根K线被正确计入。

修正后的代码

//@version=5
indicator("开盘后红绿K线计数", overlay=true)

// 准确检测新一天开盘
is_new_day = ta.change(time("D"))

// 定义阳线、阴线标识(平开K线不计入统计)
is_up_bar = close > open ? 1 : 0
is_down_bar = close < open ? 1 : 0

// 统计当日阳线数量:新日初始化为本根K线状态,非新日累加
var int up_count = 0
up_count := is_new_day ? is_up_bar : up_count[1] + is_up_bar

// 统计当日阴线数量:逻辑与阳线一致
var int down_count = 0
down_count := is_new_day ? is_down_bar : down_count[1] + is_down_bar

// 分开设置标签位置,避免重叠,用颜色区分
label.new(bar_index, high + ta.atr(10)*0.1, str.tostring(up_count), 
          textcolor=color.green, style=label.style_none, size=size.small)
label.new(bar_index, high + ta.atr(10)*0.2, str.tostring(down_count), 
          textcolor=color.red, style=label.style_none, size=size.small)

// 可选:标记当日首根K线,方便验证统计准确性
var label first_bar_mark = na
if is_new_day
    first_bar_mark := label.new(bar_index, low - ta.atr(10)*0.1, "开盘首根", 
                                textcolor=color.orange, style=label.style_label_down, size=size.small)

关键修改说明

  1. 正确识别新开盘:用time("D")获取日线时间戳,配合ta.change()准确判断新一天的第一根K线,确保首根K线被计入统计。
  2. 避免标签重叠:利用ATR(平均真实波幅)设置不同的垂直偏移量,将阳线计数放在K线高点上方较近位置,阴线计数放在稍远位置,同时用绿色、红色区分,提升清晰度。
  3. 严谨计数逻辑:用var关键字初始化计数变量,确保变量不会在每次脚本重新计算时重置;新日时直接用当前K线的状态初始化计数,保证首根K线的数值被正确统计。
  4. 可选验证标记:新增的首根K线标记,可以直观确认统计起始点是否正确。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 15:35:26