为何Pine Script中label.new仅显示最近约50根K线的标签?
问题描述
我希望在每根K线上方显示标签,因此使用了以下代码:
label.new(bar_index, high, style=label.style_none, text=str.tostring(bar_index))
但发现标签仅在最近约50根K线(从该位置到最新K线)上显示,更早的K线完全没有标签。请问这是为何?我是否遗漏了某些设置?
解决方案
这是因为Pine Script默认限制了标签的最大创建数量,默认值为50。每当新K线生成时,旧标签会被自动清理,只保留最新的50个,所以你只能看到近期的标签。
有两种解决方式:
调整全局标签数量限制
在Pine Script编辑器的「设置」面板中,找到「Label limit(标签数量限制)」选项,直接调高允许的标签总数即可。这个方法操作简单,适合不需要精细控制的场景。手动管理标签生命周期(更灵活)
使用数组存储所有创建的标签,自定义保留的标签数量,超过上限时删除最早的标签,避免自动清理://@version=5 indicator("全K线标签", overlay=true) // 用数组存储所有标签 var label[] label_list = array.new_label() // 创建新标签并加入数组 current_label = label.new(bar_index, high, style=label.style_none, text=str.tostring(bar_index)) array.push(label_list, current_label) // 设置最大保留标签数,超过则删除最早的 max_keep_labels = 1000 if array.size(label_list) > max_keep_labels oldest_label = array.shift(label_list) label.delete(oldest_label)
注意:不要设置过大的标签数量,否则会拖慢图表加载和运行性能,根据实际需求调整即可。
内容的提问来源于stack exchange,提问作者djf
相关产品推荐
相关产品推荐

