外观
填充
约 2234 字大约 7 分钟
简介
MIne Script的部分视觉输出(包括plot绘图、hline水平线、line线段、box方框和polyline折线)允许对其占据的图表空间进行颜色填充。主要通过三种机制实现这类输出之间的空间填充:
fill()函数:用指定颜色填充两个plot()调用生成的绘图之间,或两个hline()调用生成的水平线之间的区域 linefill类型对象:填充由line.new()创建的线段实例之间的空间 其他绘图类型(如box方框和polyline折线)具有内置属性,可直接填充其占据的视觉空间
plot()与hline()填充
fill()函数用于填充两个绘图或水平线之间的区域,具有以下两种调用方式:
fill(plot1, plot2, color, title, editable, show_last, fillgaps) → void
fill(hline1, hline2, color, title, editable, fillgaps) → void参数plot1、plot2、hline1和hline2接受由plot()和hline()函数调用返回的绘图或水平线ID。fill()函数是唯一可以使用这些ID的内置函数。
这个简单示例展示了fill()函数如何处理绘图和水平线ID。它调用plot()和hline()三次以在图表上显示任意值。每次调用都会返回一个ID,脚本将这些ID赋值给变量供fill()函数使用。变量p1、p2和p3是"绘图"ID,而h1、h2和h3引用的是"水平线"ID:

Mine Script®
已复制
需特别注意:fill()函数要求两个参数必须同为“绘图”ID或同为“水平线”ID,不可混用。因此,当需要在固定水平线与波动序列之间填充时,程序员有时需改用plot()替代hline()。
例如,该脚本通过计算收盘价与10周期SMA的百分比距离生成振荡器(oscillator),并绘制在图表面板。虽然零轴线可用hline()显示(因其值不变),但由于fill()函数不接受“绘图”与“水平线”ID混合参数,我们必须使用plot()绘制零轴线才能实现填充效果:

Mine Script®
已复制
fill()函数的color参数接受“系列颜色(series color)”参数,这意味着填充颜色可以随着K线变化。例如,以下代码根据ma1是否高于ma2,使用透明度为90%的绿色或红色填充两条移动平均线之间的区域:

Mine Script®
已复制
线段填充
虽然fill()函数可以填充两个绘图或水平线之间的区域,但它不适用于线段对象。当需要在两条线段之间填充时,必须使用linefill.new()函数创建的linefill对象。该函数的调用方式如下:
linefill.new(line1, line2, color) → series linefill参数line1和line2接受线段ID,这些ID决定了linefill对象将填充的图表区域。脚本可通过调用linefill.set_color()并传入该ID作为参数来更新填充颜色。
linefill的行为取决于其引用的线段。脚本无法直接移动linefill,因为其填充范围由关联线段决定。使用linefill.get_line1()和linefill.get_line2()可获取linefill引用的线段ID。
任意两条线段之间只能存在一个linefill。重复调用linefill.new()并传入相同line1和line2参数时,将创建替换旧填充的新ID。
下例展示了linefill的基础用法:脚本通过内置函数ta.pivothigh()和ta.pivotlow()(使用固定参数leftbars和rightbars)计算pivotHigh和pivotLow序列。在最后一个确认的历史K线上,脚本绘制两条延伸线段——第一条连接最近两个非空pivotHigh值,第二条连接最近两个非空pivotLow值。
为突出这些线段形成的“通道”,脚本使用linefill.new()填充其间隙:

Mine Script®
已复制
方框与折线填充
box和polyline类型允许脚本在图表上绘制几何图形。通过box.new()和polyline.new()函数创建时,可包含参数实现图形填充:
使用box.new()的bgcolor参数填充方框内部 使用polyline.new()的fill_color参数填充折线区域 例如,该脚本在最后一根确认的历史K线上绘制八边形(折线)及内接矩形(方框)。通过radius变量控制图形大小(约为可见K线数的1/4)。在polyline.new()调用中设置fill_color = color.new(color.blue, 60)使八边形填充半透明蓝色,而box.new()调用中的bgcolor = color.purple将矩形填充为纯紫色:

Mine Script®
已复制
更多关于这些类型的详细用法,请参阅本手册的线段与方框章节。