如何在满足多条件时为K线柱着色?含SH、SL与RSI条件
解决方案
以下是实现你需求的Pine Script代码,包含详细注释:
//@version=5 indicator("摆动高低点RSI蜡烛着色", overlay=true) // 按你提供的定义计算摆动高点(SH)和摆动低点(SL) SH = open[5] < close[5] and open[4] < close[4] and open[3] < close[3] and open[2] > close[2] and open[1] > close[1] and open[0] > close[0] SL = open[5] > close[5] and open[4] > close[4] and open[3] > close[3] and open[2] < close[2] and open[1] < close[1] and open[0] < close[0] // 计算RSI指标(可调整周期长度) rsi周期 = 14 rsi数值 = ta.rsi(close, rsi周期) // 定义超买超卖阈值(可根据需求调整) 超卖阈值 = 30 超买阈值 = 70 // 条件1:10-12根K线前出现SH,且当前RSI处于超卖 条件_SH = (SH[10] or SH[11] or SH[12]) and rsi数值 < 超卖阈值 // 条件2:10-12根K线前出现SL,且当前RSI处于超买 条件_SL = (SL[10] or SL[11] or SL[12]) and rsi数值 > 超买阈值 // 合并两个条件 着色条件 = 条件_SH or 条件_SL // 根据条件为当前K线着色(这里用蓝色,可自行修改颜色) barcolor(着色条件 ? color.new(color.blue, 0) : na)
代码说明
- 摆动高低点定义:直接使用你提供的SH和SL逻辑,判断当前K线是否符合"三连阳后三连阴"(SH)或"三连阴后三连阳"(SL)的形态。
- RSI计算:采用标准14周期RSI,你可以通过修改
rsi周期参数调整。 - 超买超卖判断:默认使用30(超卖)和70(超买)的通用阈值,可根据交易品种调整。
- 时间范围检查:通过
SH[10]、SH[11]、SH[12]判断10-12根K线前是否出现过SH形态(同理SL)。这里的"出现SH"指的是该形态的最后一根K线(三连阴的最后一根)位于10-12周期前。 - 蜡烛着色:当任一条件满足时,将当前K线染成蓝色(可替换为你喜欢的颜色,比如
color.red、color.green等)。
注意事项
如果你的需求是摆动高低点的峰值位于10-12周期前(而非形态结束的K线),需要调整时间偏移:
- 你的SH形态中,峰值是三连阳的最后一根K线(即SH定义中的
open[3] < close[3]对应的K线),距离形态结束的K线有3个周期差。 - 因此需要将条件中的偏移量减3,比如将
SH[10]改为SH[7](10-3=7),对应的条件变为:条件_SH = (SH[7] or SH[8] or SH[9]) and rsi数值 < 超卖阈值 条件_SL = (SL[7] or SL[8] or SL[9]) and rsi数值 > 超买阈值
内容的提问来源于stack exchange,提问作者The Ronin
相关产品推荐
相关产品推荐

