Pine-Script如何获取Stochastic RSI指标K、D线交叉点的y坐标值
你可以通过Pine Script的交叉检测函数结合条件赋值,直接获取Stoch RSI的K、D线交叉时的y轴数值,具体实现如下:
完整修改后代码
//@version=4 study(title="Stochastic RSI", shorttitle="Stoch RSI", format=format.price, precision=2, resolution="") smoothK = input(3, "K", minval=1) smoothD = input(3, "D", minval=1) lengthRSI = input(14, "RSI Length", minval=1) lengthStoch = input(14, "Stochastic Length", minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) // 新增交叉检测逻辑 golden_cross = crossover(k, d) // K线上穿D线(金叉) death_cross = crossunder(k, d) // K线下穿D线(死叉) // 获取交叉时的y轴数值 cross_k = na cross_d = na // 保留最近一次交叉的K值,不需要保留可以把cross_k[1]改为na cross_k := golden_cross or death_cross ? k : cross_k[1] // 保留最近一次交叉的D值,不需要保留可以把cross_d[1]改为na cross_d := golden_cross or death_cross ? d : cross_d[1] // 可选:在交叉点标注数值验证 plotshape(golden_cross, title="金叉", location=location.belowbar, color=color.green, style=shape.labelup, text="金叉 K:" + tostring(k) + " D:" + tostring(d)) plotshape(death_cross, title="死叉", location=location.abovebar, color=color.red, style=shape.labeldown, text="死叉 K:" + tostring(k) + " D:" + tostring(d)) plot(k, "K", color=#2962FF) plot(d, "D", color=#FF6D00) hline(20) hline(80)
逻辑说明
crossover和crossunder是Pine Script内置的交叉判断函数,返回布尔值标识对应交叉是否在当前周期发生- 交叉发生时的
k和d值就是你需要的指标窗口y坐标数值,Stoch RSI的数值范围为0-100,和指标窗口y轴刻度完全对应 - 如果你只需要交叉发生瞬间的数值,不需要历史保留,可以把赋值逻辑里的
cross_k[1]/cross_d[1]改为na,这样变量仅在交叉发生的周期有值,其余周期为空
内容的提问来源于stack exchange,提问作者bbnm
相关产品推荐
相关产品推荐

