Pine Script v5编程求助:RSI多空条件及线位置判断
Pine Script v5 实现RSI均线交叉策略及线位置判断
一、RSI上穿/下穿均线的交易信号代码
以下是符合需求的代码,包含可配置的RSI长度、均线长度参数,以及明确的做多/做空信号标记:
//@version=5 indicator("RSI 均线交叉策略", overlay=false) // 输入参数 rsiLength = input.int(14, title="RSI Length") maLength = input.int(9, title="MA Length") // 计算RSI及其均线 rsiValue = ta.rsi(close, rsiLength) rsiMa = ta.sma(rsiValue, maLength) // 判断交叉条件 longCondition = ta.crossover(rsiValue, rsiMa) shortCondition = ta.crossunder(rsiValue, rsiMa) // 绘制交易信号 plotshape(longCondition, title="做多信号", location=location.belowbar, color=color.green, style=shape.labelup, text="做多") plotshape(shortCondition, title="做空信号", location=location.abovebar, color=color.red, style=shape.labeldown, text="做空") // 绘制RSI和均线 plot(rsiValue, color=color.blue, title="RSI") plot(rsiMa, color=color.orange, title="RSI 均线") hline(70, "超买") hline(30, "超卖")
代码说明:
- 用
input.int定义可调整的参数,方便你根据需求修改 - 通过
ta.rsi计算RSI值,ta.sma计算RSI的简单均线(可替换为ta.ema等其他均线类型) ta.crossover检测RSI上穿均线的做多触发点,ta.crossunder检测RSI下穿均线的做空触发点- 用
plotshape在K线上直观标记信号,同时绘制RSI和均线便于观察走势
二、判断Line A是否在Line B上方的方法
判断两条线的位置关系分两种常见场景,对应不同实现方式:
1. 判断当前K线中Line A是否在Line B上方
直接通过数值比较即可,假设lineA和lineB是你计算出的两条线当前值:
// 示例:判断当前bar中lineA是否在lineB上方 lineA = ta.sma(close, 20) lineB = ta.sma(close, 50) isLineAAbove = lineA > lineB // 可选:标记当前状态 plotchar(isLineAAbove, title="A在B上方", location=location.top, char="↑", color=color.green)
2. 判断Line A是否持续在Line B上方(如连续N根K线)
如果需要判断Line A是否一段时间内始终在Line B上方,可结合ta.all实现:
// 示例:判断Line A是否连续5根K线在Line B上方 lineA = ta.sma(close, 20) lineB = ta.sma(close, 50) isLineA持续Above = ta.all(lineA > lineB, 5) // 标记持续状态 plotshape(isLineA持续Above, title="A持续在B上方", location=location.belowbar, color=color.blue, style=shape.labelup, text="A>B")
核心逻辑是通过lineA > lineB获取单根K线的位置关系,再根据需求扩展为持续状态的判断。
内容的提问来源于stack exchange,提问作者Long token
相关产品推荐
相关产品推荐

