
Trata-se de uma estratégia de acompanhamento de tendências que combina a trajetória de equilíbrio e um indicador relativamente fraco (RSI). Esta estratégia determina a direção da tendência do mercado através da trajetória de curto e longo prazo, enquanto usa o RSI como um filtro de momentum para confirmar a força da tendência, aumentando assim a confiabilidade do sinal de negociação. A estratégia também inclui percentual de stop loss e stop loss para gerenciar o risco.
A estratégia usa uma média móvel simples de 9 e 21 períodos (SMA) como principal indicador de tendência. Quando a média curta atravessa a média longa e o RSI é maior que 50, o sistema gera um sinal de multiplicação; Quando a média curta atravessa a média longa e o RSI é menor que 50, o sistema gera um sinal de parada. Este design garante que a direção da negociação esteja em consonância com a tendência e a dinâmica do mercado.
Esta é uma estratégia de acompanhamento de tendências com estrutura e lógica clara. A orientação básica da tendência é fornecida pelo cruzamento equilátero, a confirmação do RSI é fornecida pela dinâmica e, em conjunto com o mecanismo de gerenciamento de risco, forma um sistema de negociação completo. Embora haja algumas limitações inerentes, a estratégia tem a possibilidade de manter um desempenho estável em diferentes ambientes de mercado, através de otimização e ajuste contínuos.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-10 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy")
// --- Input Parameters ---
shortMA = input.int(9, title="Short MA Period", minval=1)
longMA = input.int(21, title="Long MA Period", minval=1)
rsiLength = input.int(14, title="RSI Length", minval=1)
rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100)
rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50)
stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100
takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100
// --- Calculate Moving Averages ---
shortMA_value = ta.sma(close, shortMA)
longMA_value = ta.sma(close, longMA)
// --- Calculate RSI ---
rsi_value = ta.rsi(close, rsiLength)
// --- Buy and Sell Conditions ---
longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50
shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50
// --- Plot Moving Averages ---
plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA")
plot(longMA_value, color=color.red, linewidth=2, title="Long MA")
// --- Plot RSI (Optional) ---
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsi_value, color=color.purple, title="RSI")
// --- Strategy Execution ---
if (longCondition)
strategy.entry("Long", strategy.long)
if (shortCondition)
strategy.entry("Short", strategy.short)
// --- Risk Management (Stop Loss and Take Profit) ---
longStopLoss = close * (1 - stopLossPercent)
longTakeProfit = close * (1 + takeProfitPercent)
shortStopLoss = close * (1 + stopLossPercent)
shortTakeProfit = close * (1 - takeProfitPercent)
// Set the stop loss and take profit for long and short positions
strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit)
strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)