Estratégia de rastreamento de tendência RSI multiperíodo com stop loss dinâmico

RSI EMA ATR
Data de criação: 2024-12-05 16:25:17 última modificação: 2024-12-05 16:25:17
cópia: 0 Cliques: 432
1
focar em
1617
Seguidores

Estratégia de rastreamento de tendência RSI multiperíodo com stop loss dinâmico

Visão geral

Trata-se de uma estratégia de acompanhamento de tendências baseada em um conjunto de indicadores de análise técnica, que se baseia principalmente em RSI overbought, EMA crossover e stop loss dinâmico. A estratégia usa um controle de risco de 1,5% e combina com a alavancagem para aumentar os ganhos. O núcleo da estratégia é a confirmação de tendências por meio de uma combinação de vários indicadores técnicos, enquanto a utilização de stop loss dinâmicos protege os fundos.

Princípio da estratégia

A estratégia usa três principais indicadores técnicos: RSI (indicador de força relativa), EMA (média móvel do índice) e ATR (máxima amplitude real média). O sinal de entrada é confirmado por um cruzamento de EMA curto (em 9 ciclos) e EMA longo (em 21 ciclos) e exige que o RSI esteja dentro de um intervalo razoável (em RSI múltiplo <70, RSI em branco >30). A estratégia usa um stop loss dinâmico baseado no ATR, com uma posição de parada de 4 vezes o stop loss, uma configuração que permite controlar o risco ao mesmo tempo em que garante lucro.

Vantagens estratégicas

  1. Controle de risco rigoroso: uso de gestão de risco de proporção fixa, com um limite de risco de 1,5% por transação
  2. Design de stop dinâmico: Stop dinâmico baseado em ATR pode se adaptar melhor às flutuações do mercado
  3. Confirmação de múltiplos sinais: EMA cruzada com filtragem RSI para aumentar a confiabilidade do sinal
  4. Otimização do risco-benefício: o stop loss é quatro vezes maior que o stop loss, o que favorece a obtenção de melhores retornos esperados
  5. Apropriado para pequenos fundos: aproveite o potencial de ganhos com uma modesta alavancagem, levando em conta as características das contas de pequenos fundos
  6. Alto grau de automação: todos os parâmetros são ajustáveis para otimização de acordo com as condições do mercado

Risco estratégico

  1. Risco de volatilidade do mercado: pode desencadear frequentes paradas em mercados com forte volatilidade
  2. Risco de alavancagem: usar duas vezes mais alavancagem aumenta os prejuízos
  3. Risco de falha: Falha de sinal em cruzamento da EMA
  4. Risco de deslizamento: Mercados rápidos podem enfrentar deslizamentos maiores
  5. Riscos de gestão de fundos: necessidade de um controlo racional do portefólio

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

  1. Adição de filtros de tendência: adição de julgamentos de tendência com períodos mais longos
  2. Otimizar o tempo de entrada: pode ser combinado com o índice de tráfego para melhorar o ponto de entrada
  3. Parâmetros de ajuste dinâmico: ajuste automático do ATR de acordo com a taxa de flutuação
  4. Introdução de indicadores de emoção de mercado: adicionar indicadores de emoção para filtrar o ambiente de mercado de alto risco
  5. Melhorar a gestão de fundos: aumentar o mecanismo de gestão de posições dinâmicas

Resumir

Esta é uma estratégia de rastreamento de tendências razoavelmente projetada para aumentar a taxa de sucesso das transações por meio da combinação de vários indicadores técnicos. O mecanismo de controle de risco da estratégia é perfeito e adequado para uso em contas de pequeno capital.

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

//@version=5
strategy("Aggressive Scalper Strategy", overlay=true)

// Parameters
account_balance = input.float(28.37, title="Account Balance", tooltip="Update this with your balance")
risk_per_trade = input.float(0.015, title="Risk per Trade", tooltip="1.5% risk")
leverage = input.int(2, title="Leverage", minval=1)
stop_loss_percentage = input.float(0.015, title="Stop Loss Percentage", tooltip="1.5% stop loss")
take_profit_multiplier = input.float(4, title="Take Profit Multiplier", tooltip="Take Profit is 4x Stop Loss")
stop_loss_multiplier = input.float(2, title="Stop Loss Multiplier", tooltip="Dynamic Stop Loss Multiplier")

// Trade Size Calculation
position_size = account_balance * risk_per_trade / (stop_loss_percentage / leverage)
trade_qty = position_size / close // This gives you the qty in terms of contracts

// Indicators
rsiLength = input.int(14, title="RSI Length")
emaShort = input.int(9, title="Short-term EMA Length")
emaLong = input.int(21, title="Long-term EMA Length")
rsi = ta.rsi(close, rsiLength)
emaShortLine = ta.ema(close, emaShort)
emaLongLine = ta.ema(close, emaLong)

// Entry Conditions
longCondition = ta.crossover(emaShortLine, emaLongLine) and rsi < 70
shortCondition = ta.crossunder(emaShortLine, emaLongLine) and rsi > 30

// ATR for dynamic stop loss and take profit levels
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atr = ta.atr(atrLength)

// Dynamic Take Profit and Stop Loss Levels
longTakeProfitLevel = close + (atr * take_profit_multiplier)
longStopLossLevel = close - (atr * stop_loss_multiplier)
shortTakeProfitLevel = close - (atr * take_profit_multiplier)
shortStopLossLevel = close + (atr * stop_loss_multiplier)

// Strategy Execution
if (longCondition)
    strategy.entry("Long", strategy.long, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Long", limit=longTakeProfitLevel, stop=longStopLossLevel)

if (shortCondition)
    strategy.entry("Short", strategy.short, qty=trade_qty)
    strategy.exit("Take Profit/Stop Loss", from_entry="Short", limit=shortTakeProfitLevel, stop=shortStopLossLevel)

// Alert Conditions
alertcondition(longCondition, title="Buy Signal", message="Long position entry signal detected.")
alertcondition(shortCondition, title="Sell Signal", message="Short position entry signal detected.")

// Display Information on Chart
var table_info = table.new(position.top_right, 2, 2, frame_color=color.blue, frame_width=1)
if (bar_index == na)
    table.cell(table_info, 0, 0, text="Aggressive Scalper", bgcolor=color.blue)
    table.cell(table_info, 1, 0, text="Account Balance: $" + str.tostring(account_balance), text_color=color.white)
    table.cell(table_info, 1, 1, text="Risk per Trade: " + str.tostring(risk_per_trade * 100) + "%", text_color=color.white)
    table.cell(table_info, 0, 1, text="Leverage: " + str.tostring(leverage) + "x", text_color=color.white)