Vários indicadores técnicos seguindo tendências e estratégia de negociação de filtragem de RSI de momentum

EMA RSI ATR SMA MACD
Data de criação: 2024-12-20 14:10:43 última modificação: 2024-12-20 14:10:43
cópia: 0 Cliques: 410
1
focar em
1617
Seguidores

Vários indicadores técnicos seguindo tendências e estratégia de negociação de filtragem de RSI de momentum

Visão geral

Esta é uma estratégia de acompanhamento de tendências que combina vários indicadores técnicos, usando principalmente o cruzamento de EMAs, indicadores de tendências de Supertrend e indicadores de força relativa (RSI) para identificar oportunidades de negociação. A estratégia aumenta a filtragem de momentum com base no acompanhamento de tendências através da combinação orgânica de indicadores, enquanto que o ATR é usado para ajustar dinamicamente a posição de parada de perdas para um sistema de negociação completo.

Princípio da estratégia

A estratégia usa um mecanismo de triplo filtragem para identificar os sinais de negociação:

  1. O sistema de cruzamento de EMA é usado para capturar mudanças de tendência de curto prazo, gerando um sinal de multiplicação quando o EMA rápido atravessa o EMA lento e um sinal de divisão quando o EMA rápido atravessa o EMA lento.
  2. O indicador Supertrend é baseado no cálculo da ATR de linhas de suporte/resistência dinâmicas, para confirmar a direção da tendência geral. O overtrend é permitido apenas quando o preço está acima da linha Supertrend e o shorting é permitido quando está abaixo da linha.
  3. O indicador RSI é usado para filtrar o estado de mercado em que há excesso de compra ou venda. O RSI só é permitido fazer mais quando não atinge a área de sobrecompra e o RSI só é permitido fazer menos quando não atinge a área de sobrevenda.

A estratégia também inclui um sistema de parada de perda dinâmico baseado no ATR, que pode ajustar automaticamente os parâmetros de gerenciamento de risco de acordo com a volatilidade do mercado. Ao mesmo tempo, o filtro de tempo limita o período de negociação para evitar negociações durante períodos de baixa liquidez.

Vantagens estratégicas

  1. A combinação de vários indicadores técnicos fornece um sinal de negociação mais confiável, evitando os falsos sinais que um único indicador pode trazer.
  2. A configuração de stop loss dinâmica é capaz de se adaptar a diferentes condições de volatilidade do mercado, dando maior espaço para a negociação em situações de maior volatilidade.
  3. O mecanismo de filtragem do RSI é eficaz na redução do risco de entrada em situações extremas do mercado.
  4. A função de filtragem de tempo permite que o comerciante se concentre em períodos específicos de negociação, evitando negociações em períodos de baixa eficiência.

Risco estratégico

  1. As condições de filtragem múltipla podem fazer com que se percam algumas oportunidades de negócio em potencial.
  2. Em mercados de alta volatilidade, o stop loss pode ser facilmente atingido.
  3. A otimização excessiva dos parâmetros pode causar problemas de sobre-conformidade.
  4. A alta frequência de transações pode levar a custos mais elevados.

Direção de otimização da estratégia

  1. Pode-se considerar o aumento do índice de volume de transações como confirmação auxiliar.
  2. A introdução de mecanismos de ajuste de parâmetros adaptativos permite que a estratégia se adapte melhor a diferentes contextos de mercado.
  3. Adicionar um filtro de força de tendência para evitar o excesso de negociação em mercados de tendência fraca.
  4. Desenvolver um sistema de gestão de posições mais inteligente, ajustando a proporção de posições de acordo com a dinâmica da situação do mercado.

Resumir

A estratégia, através da combinação de vários indicadores técnicos e condições de filtragem, constrói um sistema de negociação relativamente completo. Sua vantagem central reside no mecanismo de confirmação múltipla e na gestão dinâmica do risco, mas também precisa prestar atenção a questões como otimização de parâmetros e custos de negociação.

Código-fonte da estratégia
/*backtest
start: 2024-11-19 00:00:00
end: 2024-12-18 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy(title="Supertrend + EMA Crossover with RSI Filter", shorttitle="ST_EMA_RSI", overlay=true)

// Input parameters for EMA
fastEMA          = input.int(3,  title="Fast EMA Period", minval=1)
slowEMA          = input.int(6,  title="Slow EMA Period", minval=1)
atrLength        = input.int(3,  title="ATR Length", minval=1)

// Using a fixed multiplier for Supertrend calculation
stMultiplier = 1

// Stop loss and take profit multipliers
stopLossATR      = input.float(2.5, title="Stop Loss ATR Multiplier", minval=0.1, step=0.1)
takeProfitATR    = input.float(4,   title="Take Profit ATR Multiplier", minval=0.1, step=0.1)

// RSI inputs
rsiLength      = input.int(10, title="RSI Length", minval=1)
rsiOverbought  = input.float(65, title="RSI Overbought Level", minval=50.0, maxval=100.0)
rsiOversold    = input.float(30.0, title="RSI Oversold Level",   minval=0.0, maxval=50.0)

// Declare the RSI plot toggle input as a global variable
bool rsiPlotEnabled = input.bool(true, title="Show RSI in separate panel")

// Time filter inputs
i_startTime = input(title="Start Filter", defval=timestamp("01 Jan 2023 13:30 +0000"), group="Time Filter", tooltip="Start date & time to begin searching for setups")
i_endTime   = input(title="End Filter",   defval=timestamp("28 Apr 2099 19:30 +0000"), group="Time Filter", tooltip="End date & time to stop searching for setups")

// Date/time filtering logic
inDateRange = true

// Calculate EMAs
fastEMALine = ta.ema(close, fastEMA)
slowEMALine = ta.ema(close, slowEMA)

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate Supertrend using fixed multiplier
up = high - (stMultiplier * atr)
dn = low +  (stMultiplier * atr)

var float trendUp = na
var float trendDown = na
var int trend = na

trendUp   := na(trendUp[1])   ? up : (close[1] > trendUp[1]   ? math.min(up, trendUp[1])   : up)
trendDown := na(trendDown[1]) ? dn : (close[1] < trendDown[1] ? math.max(dn, trendDown[1]) : dn)

trend := close > nz(trendUp[1]) ? 1 : close < nz(trendDown[1]) ? -1 : nz(trend[1], 1)
supertrend = trend == 1 ? trendUp : trendDown

// Calculate RSI
myRSI = ta.rsi(close, rsiLength)

// Entry conditions with RSI filter
longEntryCondition  = ta.crossover(fastEMALine, slowEMALine) and (trend == 1) and (myRSI < rsiOverbought)
shortEntryCondition = ta.crossunder(fastEMALine, slowEMALine) and (trend == -1) and (myRSI > rsiOversold)

// Strategy entries
if inDateRange and longEntryCondition and strategy.position_size <= 0
    strategy.entry("Long", strategy.long)

if inDateRange and shortEntryCondition and strategy.position_size >= 0
    strategy.entry("Short", strategy.short)

// Stops and targets
if strategy.position_size > 0
    longStopLoss   = strategy.position_avg_price - stopLossATR * atr
    longTakeProfit = strategy.position_avg_price + takeProfitATR * atr
    strategy.exit("Long SL/TP", "Long", stop=longStopLoss, limit=longTakeProfit)

if strategy.position_size < 0
    shortStopLoss   = strategy.position_avg_price + stopLossATR * atr
    shortTakeProfit = strategy.position_avg_price - takeProfitATR * atr
    strategy.exit("Short SL/TP", "Short", stop=shortStopLoss, limit=shortTakeProfit)

// Plot EMAs and Supertrend
plot(fastEMALine, title="Fast EMA", color=color.new(color.blue, 0))
plot(slowEMALine, title="Slow EMA", color=color.new(color.red, 0))
plot(trend == 1 ? supertrend : na, title="Supertrend Up", color=color.green, style=plot.style_linebr)
plot(trend == -1 ? supertrend : na, title="Supertrend Down", color=color.red, style=plot.style_linebr)

// Plot RSI and hlines
plot(rsiPlotEnabled ? myRSI : na, title="RSI", color=color.new(color.purple, 0))
hline(rsiOverbought, "Overbought", color=color.red, linestyle=hline.style_dotted)
hline(rsiOversold,   "Oversold",   color=color.green, linestyle=hline.style_dotted)

// Plot entry signals
plotshape(longEntryCondition, title="Long Entry Signal", style=shape.triangleup, location=location.belowbar, size=size.tiny, color=color.new(color.green, 0))
plotshape(shortEntryCondition, title="Short Entry Signal", style=shape.triangledown, location=location.abovebar, size=size.tiny, color=color.new(color.red, 0))