关于Linear Regression Candles指标特定蜡烛信号代码逻辑的技术咨询
Linear Regression Candles 指标信号逻辑识别与复用
关键变量拆解
要识别目标信号,先明确原代码里的核心变量:
bclose: 线性回归处理后的收盘价(若关闭LinReg选项则为原始收盘价)r: 蜡烛颜色判定标记,r = bopen < bclose,值为true时是绿色蜡烛,false时是红色蜡烛signal: 白色信号线,根据设置为bclose的SMA或EMA均线
目标信号的判断条件
1. 红色蜡烛收于白色信号线下方
红色蜡烛对应r为false,同时bclose低于signal,条件表达式:
redCandleBelowSignal = not r and bclose < signal
2. 绿色蜡烛收于白色信号线上方
绿色蜡烛对应r为true,同时bclose高于signal,条件表达式:
greenCandleAboveSignal = r and bclose > signal
复用示例
你可以将上述条件整合到自定义指标或策略中,以下是标记信号点的示例代码:
//@version=5 indicator("LinReg Candles 信号复用示例", overlay=true) // 复制原指标核心参数与计算逻辑 signal_length = input.int(title='Signal Smoothing', minval=1, maxval=200, defval=11) sma_signal = input(title='Simple MA (Signal Line)', defval=true) lin_reg = input(title='Lin Reg', defval=true) linreg_length = input.int(title='Linear Regression Length', minval=1, maxval=200, defval=11) bopen = lin_reg ? ta.linreg(open, linreg_length, 0) : open bclose = lin_reg ? ta.linreg(close, linreg_length, 0) : close r = bopen < bclose signal = sma_signal ? ta.sma(bclose, signal_length) : ta.ema(bclose, signal_length) // 定义目标信号 redCandleBelowSignal = not r and bclose < signal greenCandleAboveSignal = r and bclose > signal // 可视化标记信号 plotshape(redCandleBelowSignal, title="Red Below Signal", location=location.belowbar, color=color.red, style=shape.triangledown, size=size.small) plotshape(greenCandleAboveSignal, title="Green Above Signal", location=location.abovebar, color=color.green, style=shape.triangleup, size=size.small) // 还原原指标的蜡烛与信号线绘制 plotcandle(r ? bopen : na, r ? ta.linreg(high, linreg_length, 0) : na, r ? ta.linreg(low, linreg_length, 0) : na, r ? bclose : na, color=color.green, wickcolor=color.green, bordercolor=color.green) plotcandle(r ? na : bopen, r ? na : ta.linreg(high, linreg_length, 0) : na, r ? na : ta.linreg(low, linreg_length, 0) : na, r ? na : bclose, color=color.red, wickcolor=color.red, bordercolor=color.red) plot(signal, color=color.white)
原指标参考代码
//@version=5 indicator(title='Humble LinReg Candles', shorttitle='LinReg Candles', format=format.price, precision=4, overlay=true) signal_length = input.int(title='Signal Smoothing', minval=1, maxval=200, defval=11) sma_signal = input(title='Simple MA (Signal Line)', defval=true) lin_reg = input(title='Lin Reg', defval=true) linreg_length = input.int(title='Linear Regression Length', minval=1, maxval=200, defval=11) bopen = lin_reg ? ta.linreg(open, linreg_length, 0) : open bhigh = lin_reg ? ta.linreg(high, linreg_length, 0) : high blow = lin_reg ? ta.linreg(low, linreg_length, 0) : low bclose = lin_reg ? ta.linreg(close, linreg_length, 0) : close r = bopen < bclose signal = sma_signal ? ta.sma(bclose, signal_length) : ta.ema(bclose, signal_length) plotcandle(r ? bopen : na, r ? bhigh : na, r ? blow : na, r ? bclose : na, title='LinReg Candles', color=color.green, wickcolor=color.green, bordercolor=color.green, editable=true) plotcandle(r ? na : bopen, r ? na : bhigh, r ? na : blow, r ? na : bclose, title='LinReg Candles', color=color.red, wickcolor=color.red, bordercolor=color.red, editable=true) plot(signal, color=color.new(color.white, 0))

内容的提问来源于stack exchange,提问作者Null isTrue
相关产品推荐
相关产品推荐

