PineScript叠加失效:买卖信号未显示在主图问题求助
Pine Script v5 买卖信号显示在指标窗口而非主图的解决方法
问题描述
我用Pine Script v5编写了一款带绘图区域的指标,已经设置overlay=true,但买卖信号始终显示在指标窗口内,切换overlay=true参数也没有效果。
原代码
//@version=5 indicator(title = "LSMA slope", shorttitle="LSMAS", overlay=true) length = input(title="Length", defval=24) lsma = ta.linreg(close, length, 0) one_back_lsma = ta.linreg(close[1], length, 0) two_back_lsma = ta.linreg(close[2], length, 0) signal = lsma - one_back_lsma previous_signal = one_back_lsma - two_back_lsma p1 = plot(signal, color=signal>=0?color.green:color.red, style=plot.style_area) longentry = previous_signal < 0 and signal >= 0 or previous_signal <= 0 and signal > 0 shortentry = previous_signal > 0 and signal <= 0 or previous_signal >= 0 and signal < 0 plotshape(longentry, style=shape.triangleup, color=#00FF00,text='BUY', textcolor=#FFFFFF, editable=false, location=location.belowbar, size=size.small) plotshape(shortentry, style=shape.triangledown, color=#FF0000, text='SELL', textcolor=#FFFFFF, editable=false, location=location.abovebar, size=size.small)
问题原因
你先绘制的signal是LSMA的斜率值,数值范围和主图价格完全不在一个量级。即便设置了overlay=true,TradingView会自动将这个非价格序列绘制到副图指标窗口,而后续的plotshape默认会关联最后一次plot的显示窗口,导致买卖信号也跟着跑到了指标窗口。
解决方法
给plotshape添加display=display.price_window参数,强制让信号显示在主图价格窗口;同时给plot(signal)添加display=display.data_window,明确让斜率区域图留在副图,两者互不干扰。
修改后的代码
//@version=5 indicator(title = "LSMA slope", shorttitle="LSMAS", overlay=true) length = input(title="Length", defval=24) lsma = ta.linreg(close, length, 0) one_back_lsma = ta.linreg(close[1], length, 0) two_back_lsma = ta.linreg(close[2], length, 0) signal = lsma - one_back_lsma previous_signal = one_back_lsma - two_back_lsma // 指定斜率区域图显示在副图指标窗口 p1 = plot(signal, color=signal>=0?color.green:color.red, style=plot.style_area, display=display.data_window) longentry = previous_signal < 0 and signal >= 0 or previous_signal <= 0 and signal > 0 shortentry = previous_signal > 0 and signal <= 0 or previous_signal >= 0 and signal < 0 // 强制买卖信号显示在主图价格窗口 plotshape(longentry, style=shape.triangleup, color=#00FF00, text='BUY', textcolor=#FFFFFF, editable=false, location=location.belowbar, size=size.small, display=display.price_window) plotshape(shortentry, style=shape.triangledown, color=#FF0000, text='SELL', textcolor=#FFFFFF, editable=false, location=location.abovebar, size=size.small, display=display.price_window)
内容的提问来源于stack exchange,提问作者Luis Kameter
相关产品推荐
相关产品推荐

