请求编写Pine脚本:日内1分钟K线成交量分级变色
解决1分钟K线成交量分级着色问题
功能实现代码
//@version=5 indicator("当日成交量分级着色", overlay=true) // 检测交易日切换,用于重置计算 is_new_day = ta.change(time("D")) // 计算当日最高成交量,每日自动重置范围 daily_highest_vol = ta.highest(volume, ta.barssince(is_new_day) + 1) // 定义K线颜色规则 bar_color = if volume == daily_highest_vol color.white else if volume > daily_highest_vol * 0.5 color.yellow else na // 保留默认K线颜色 // 应用颜色到K线 barcolor(bar_color) // 可选:显示当日最高成交量数值(新手辅助查看) var label vol_label = label.new(na, na, "", color=color.white, textcolor=color.black, style=label.style_label_down) if is_new_day or volume == daily_highest_vol label.set_xy(vol_label, bar_index, high) label.set_text(vol_label, str.tostring(daily_highest_vol, "当日最高量: #,##0"))
代码关键逻辑说明
- 交易日重置:通过
ta.change(time("D"))识别每日开盘节点,确保成交量统计范围仅限定在当前交易日内。 - 当日最高量计算:
ta.highest(volume, ta.barssince(is_new_day)+1)动态统计当日从开盘到当前K线的成交量最大值,每日自动重置统计区间。 - 着色规则:
- 成交量等于当日最高值的K线,标记为白色;后续出现更高成交量的K线,会自动替换当日最高值并同样显示白色。
- 成交量超过当日最高值50%的K线,标记为黄色。
- 其余K线保持默认颜色,避免干扰正常走势观察。
原参考脚本问题分析
你提供的参考脚本无法运行的核心原因:
- 错误使用
var声明highest_volume,var变量只会初始化一次,无法实现每日重置统计的需求。 - 冗余的
label_array数组操作,需求仅需修改K线颜色,无需复杂的标签管理逻辑。 - 缺少核心的
barcolor函数,未实际实现K线着色的功能。
内容的提问来源于stack exchange,提问作者Anuj
相关产品推荐
相关产品推荐

