
A estratégia combina ferramentas de análise técnica, como a média móvel (MA), o índice de força relativa (RSI) e a média real (ATR), com o objetivo de capturar oportunidades de tendência no mercado. A estratégia determina a direção da tendência através do cruzamento de duas linhas de equilíbrio e usa o indicador RSI para filtrar a dinâmica dos sinais de negociação, enquanto usa o ATR como base de parada para controlar o risco.
O núcleo da estratégia é usar o cruzamento de duas médias móveis de diferentes períodos (linha rápida e linha lenta) para determinar a tendência do mercado. Quando a linha rápida atravessa a linha lenta, indicando uma tendência ascendente, a estratégia produzirá um sinal de cotação; ao contrário, quando a linha rápida atravessa a linha lenta, indicando uma tendência descendente, a estratégia produzirá um sinal de cotação.
Para aumentar a confiabilidade dos sinais de negociação, a estratégia introduziu o indicador RSI como um filtro de momentum. Quando o RSI é superior a um determinado limiar (como 50), apenas é permitido abrir mais posições; Quando o RSI é inferior a esse limiar, apenas é permitido abrir posições vazias. Isso evita a negociação em mercados horizontais ou quando o momentum é insuficiente, aumentando a qualidade do sinal.
Além disso, a estratégia usa o ATR como base de parada, ajustando dinamicamente o ponto de parada de acordo com a amplitude de flutuação dos preços no período mais recente para se adaptar a diferentes condições de mercado. Esta forma de parada adaptável pode parar rapidamente quando a tendência não é clara e controlar a retirada.
A estratégia, através da combinação orgânica de acompanhamento de tendências e filtragem de dinâmica, controla melhor o risco ao mesmo tempo em que capta oportunidades de tendências do mercado. A lógica da estratégia é clara, fácil de implementar e otimizar.
/*backtest
start: 2023-05-28 00:00:00
end: 2024-06-02 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true)
// Input variables
fastLength = input(12, title="Fast MA Length")
slowLength = input(26, title="Slow MA Length")
signalLength = input(9, title="Signal Line Length")
stopLossPct = input(1.0, title="Stop Loss %") / 100
rsiLength = input(14, title="RSI Length")
rsiThreshold = input(50, title="RSI Threshold")
// Moving averages
fastMA = ta.sma(close, fastLength)
slowMA = ta.sma(close, slowLength)
// MACD
[macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength)
// RSI
rsi = ta.rsi(close, rsiLength)
// Entry conditions with RSI filter
bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold
bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold
// Calculate stop loss levels
longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct)
shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct)
// Execute trades
strategy.entry("Long", strategy.long, when=bullishSignal)
strategy.entry("Short", strategy.short, when=bearishSignal)
strategy.exit("Exit Long", "Long", stop=longStopLoss)
strategy.exit("Exit Short", "Short", stop=shortStopLoss)
// Plotting signals
plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal")
plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal")
// Plot MACD
plot(macdLine, color=color.blue, title="MACD Line")
plot(signalLine, color=color.orange, title="Signal Line")
// Plot RSI
hline(rsiThreshold, "RSI Threshold", color=color.gray)
plot(rsi, color=color.purple, title="RSI")