你是否曾尝试用代码画线来连接各个高低点,或者标记某些特定区域,但发现图表往左一拉,最早画的那些线就不见了。这个问题,和我们之前讲的标签消失问题如出一辙,都是因为你触发了Pine脚本默认的绘图数量限制。max_lines_count
这个参数,就是专门用来控制一个脚本在图表上最多可以绘制多少条趋势线的容量开关。
简单来说,你为max_lines_count
设置的值越高,你的脚本能在图表上留下的历史趋势线就越多。
无论你的脚本是指标还是策略,设置方法都完全一样:
- 对于指标: 在
indicator()
函数中设置,最高可设为500。//@version=6 indicator(title="我的指标", max_lines_count=500)
- 对于策略: 同样。
//@version=5 strategy(title="我的策略", max_lines_count=500)
max_lines_count
是一个可选参数,如果你不进行任何设置,你的脚本默认最多只能创建50条趋势线 ,这是导致趋势线消失的根本原因,这个参数的有效范围是从1到500 。
需要知道的几个关键
max_lines_count
的值必须是一个写在代码里的固定整数,不能使用变量来动态设定 。- 当脚本绘制的趋势线数量达到你设定的上限时,TradingView会自动删除图表上最旧的那条线(时间上最靠左的),来为最新的趋势线腾出空间 。这个机制确保了图表性能,不会因为无限绘制而崩溃,但也意味着你无法看到超出上限的、更早的历史画线 。
- 和标签一样,你设置的上限(比如500)也不是一个绝对精确的数字 。TradingView有时可能会允许图表上多显示几条线 。所以,不要用它来做严格的数量控制,把它理解为一个大致的容量限制即可。
- 只能通过代码设置,
max_lines_count
没有图形界面的手动设置选项 。想增加趋势线数量,只能通过修改代码来实现 。
实战示例
我们通过一个具体的例子来看看max_lines_count
是如何影响脚本表现的。下面这个指标,会在每个K线上绘制一条连接收盘价和30周期SMA的小垂直线 。
我们首先在不设置max_lines_count
的情况下运行脚本。
指标的代码如下:
//@version=6
indicator(title="Max lines example", overlay=true)
smaValue = ta.sma(close, 30)
plot(smaValue, color=color.gray, title="SMA")
barLine = line.new(x1=bar_index, y1=smaValue,
x2=bar_index, y2=close, width=2)
if close > open
line.set_color(barLine, color.green)
else
line.set_color(barLine, color.red)
在这段代码中,indicator()
函数没有设置max_lines_count
,因此脚本会采用默认的50条趋势线作为上限 。现在让我们看看这个脚本在图表上实际运行的效果。你会发现图表上只会显示离当前时间最近的50条小垂直线,更早的则不会被显示 :
在图表上显示更多趋势线
现在,为了让脚本能够回溯并显示更多的历史画线,我们将上限提升至允许的最大值500 。只需在indicator()
函数中,加上max_lines_count=500
即可 :
indicator(title="Max lines example", overlay=true, max_lines_count=500)
完成这项修改并保存脚本后,TradingView会自动重载它。你会发现图表上现在能够显示远比之前更多的趋势线,覆盖了更长的历史周期 :
总结
max_lines_count
这个设置,决定了一个脚本在图表上最多能绘制多少条趋势线 。如果你不特别设置,默认上限只有50条,你也可以通过在代码中设置max_lines_count
来提高这个限制,最高可以达到500条 。当达到上限时,系统会自动移除最旧的趋势线,为新的线条腾出空间,确保图表上始终显示最新的绘图 。