
A estratégia combina dois indicadores técnicos, o índice de força relativa (RSI) e o canal de regressão linear (LRC), com o objetivo de capturar oportunidades de sobrecompra e sobrevenda no mercado. A estratégia emite um sinal de compra quando o preço toca a trajetória inferior do canal de regressão linear e o RSI é inferior a 30; a estratégia emite um sinal de venda quando o preço toca a trajetória superior do canal de regressão linear e o RSI é superior a 70.
O núcleo da estratégia é o indicador RSI e o canal de regressão linear. O RSI é um indicador de dinâmica usado para medir a amplitude e a direção das mudanças recentes nos preços. Quando o RSI está abaixo de 30, o mercado é considerado um estado de sobrevenda; Quando o RSI está acima de 70, o mercado é considerado um estado de sobrevenda.
A estratégia de negociação de RSI com o canal de regressão linear tenta capturar oportunidades de sobrevenda e sobrevenda no mercado através da combinação de indicadores de momentum e indicadores de acompanhamento de tendência. A vantagem da estratégia é que ela é clara em termos de lógica, fácil de implementar e pode ser aplicada em diferentes prazos. No entanto, a estratégia também apresenta alguns riscos, como falsos sinais, sensibilidade a parâmetros e falta de gerenciamento de risco, etc.
/*backtest
start: 2024-05-01 00:00:00
end: 2024-05-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("RSI and Linear Regression Channel Strategy", overlay=true)
// Define input parameters
rsiLength = input(14, title="RSI Length")
channelLength = input(100, title="Linear Regression Channel Length")
rsiBuyThreshold = 30
rsiSellThreshold = 70
// Calculate RSI
rsi = ta.rsi(close, rsiLength)
// Calculate Linear Regression Channel
basis = ta.linreg(close, channelLength, 0)
dev = ta.stdev(close, channelLength)
upperChannel = basis + dev
lowerChannel = basis - dev
// Plot Linear Regression Channel
plot(basis, color=color.blue, title="Basis")
plot(upperChannel, color=color.red, title="Upper Channel")
plot(lowerChannel, color=color.green, title="Lower Channel")
// Entry condition: Price touches lower channel and RSI crosses below buy threshold
longCondition = (close <= lowerChannel) and (rsi < rsiBuyThreshold)
// Exit condition: Price touches upper channel and RSI crosses above sell threshold
shortCondition = (close >= upperChannel) and (rsi > rsiSellThreshold)
// Strategy execution
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.close("Long")
// Plot buy/sell signals on the chart
plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")