A estratégia de swing trading combina posições longas e curtas dinâmicas com um sistema de sinal de cruzamento de média móvel

EMA SMA RSI ATR TP SL
Data de criação: 2024-12-12 11:11:15 última modificação: 2024-12-12 11:11:15
cópia: 1 Cliques: 360
1
focar em
1617
Seguidores

A estratégia de swing trading combina posições longas e curtas dinâmicas com um sistema de sinal de cruzamento de média móvel

Visão geral

Esta estratégia é uma estratégia de negociação de volatilidade baseada em indicadores técnicos, combinando múltiplos sinais, como cruzamento de equilíbrio, RSI overbought e oversold e ATR stop loss. O núcleo da estratégia é capturar a tendência do mercado por meio de cruzamentos de EMAs de curto prazo e SMAs de longo prazo, ao mesmo tempo em que usa o indicador RSI para confirmar sinais e definir posições de stop loss e stop loss através do ATR.

Princípio da estratégia

A estratégia utiliza uma combinação de indicadores técnicos em vários níveis para construir o sistema de negociação:

  1. A camada de julgamento de tendências usa um cruzamento de EMA de 20 e SMA de 50 para determinar a direção da tendência. O SMA superior é considerado um sinal de multiplo e o inferior um sinal de vazio.
  2. Nível de confirmação de dinâmica: O indicador RSI é usado para julgar sobrecompra e sobrevenda, sendo permitido fazer mais quando o RSI está abaixo de 70 e fazer menos quando está acima de 30.
  3. A camada de cálculo de volatilidade: o ATR de 14 ciclos é usado para calcular a posição de parada de perda, com a parada de perda definida como 1,5 vezes o ATR e a parada de parada definida como 3 vezes o ATR.
  4. Gestão de posições: o número de posições abertas é calculado dinamicamente com base no capital inicial e na proporção de risco por transação (default 1%)

Vantagens estratégicas

  1. Confirmação de múltiplos sinais: reduz efetivamente a interferência de falsos sinais por meio do cruzamento de equilíbrio e da combinação de três indicadores RSI e ATR.
  2. Stop loss dinâmico: baseado no ATR dinâmico ajustar a posição de stop loss para melhor se adaptar às mudanças na volatilidade do mercado.
  3. Flexível direção de negociação: pode ser ativada uma negociação multi-head ou um negócio no-head separadamente, de acordo com a situação do mercado.
  4. Controle de risco rigoroso: controle efetivo do risco de cada transação por meio de controle de risco percentual e gerenciamento dinâmico de posições.
  5. Suporte de visualização: A estratégia oferece suporte completo de visualização de gráficos, incluindo marcação de sinais e exibição de indicadores.

Risco estratégico

  1. Risco de mercado de choque: em mercados de choque horizontal, a interseção de equilíbrio pode gerar muitos falsos sinais.
  2. Risco de deslizamento: em períodos de alta volatilidade, o preço de transação real pode estar em grande desvio do preço do sinal.
  3. Risco de gestão de fundos: se a proporção de risco for muito alta, pode resultar em perdas individuais excessivas.
  4. Sensibilidade de parâmetros: os efeitos da estratégia são sensíveis à configuração de parâmetros e precisam de ajustes cuidadosos.

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

  1. Aumentar o filtro de força de tendência: pode ser adicionado um indicador ADX para filtrar os sinais de negociação em um ambiente de tendência fraca.
  2. Ciclo de linha média optimizado: pode ser ajustado dinamicamente o parâmetro de linha média de acordo com diferentes características do ciclo do mercado.
  3. Melhorar o mecanismo de parada de perdas: pode ser adicionado um mecanismo de parada de perdas de rastreamento para melhor proteger os lucros.
  4. Aumentar a confirmação de volume de transação: Adicionar o indicador de volume de transação como confirmação auxiliar, aumentando a confiabilidade do sinal.
  5. Classificação do cenário de mercado: adição de módulos de identificação do cenário de mercado, usando diferentes combinações de parâmetros em diferentes cenários de mercado.

Resumir

A estratégia utiliza uma combinação de múltiplos indicadores técnicos para construir um sistema de negociação relativamente completo. A vantagem da estratégia reside na confiabilidade da confirmação de sinais e na integridade do gerenciamento de riscos, mas também é necessário prestar atenção ao impacto do ambiente de mercado no desempenho da estratégia.

Código-fonte da estratégia
/*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"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © CryptoRonin84

//@version=5
strategy("Swing Trading Strategy with On/Off Long and Short", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100)

// Input for turning Long and Short trades ON/OFF
enable_long = input.bool(true, title="Enable Long Trades")
enable_short = input.bool(true, title="Enable Short Trades")

// Input parameters for strategy
sma_short_length = input.int(20, title="Short EMA Length", minval=1)
sma_long_length = input.int(50, title="Long SMA Length", minval=1)
sl_percentage = input.float(1.5, title="Stop Loss (%)", step=0.1, minval=0.1)
tp_percentage = input.float(3, title="Take Profit (%)", step=0.1, minval=0.1)
risk_per_trade = input.float(1, title="Risk Per Trade (%)", step=0.1, minval=0.1)
capital = input.float(10000, title="Initial Capital", step=100)

// Input for date range for backtesting
start_date = input(timestamp("2020-01-01 00:00"), title="Backtest Start Date")
end_date = input(timestamp("2024-12-31 23:59"), title="Backtest End Date")
inDateRange = true

// Moving averages
sma_short = ta.ema(close, sma_short_length)
sma_long = ta.sma(close, sma_long_length)

// RSI setup
rsi = ta.rsi(close, 14)
rsi_overbought = 70
rsi_oversold = 30

// ATR for volatility-based stop-loss calculation
atr = ta.atr(14)
stop_loss_level_long = strategy.position_avg_price - (1.5 * atr)
stop_loss_level_short = strategy.position_avg_price + (1.5 * atr)
take_profit_level_long = strategy.position_avg_price + (3 * atr)
take_profit_level_short = strategy.position_avg_price - (3 * atr)

// Position sizing based on risk per trade
risk_amount = capital * (risk_per_trade / 100)
position_size = risk_amount / (close * sl_percentage / 100)

// Long and Short conditions
long_condition = ta.crossover(sma_short, sma_long) and rsi < rsi_overbought
short_condition = ta.crossunder(sma_short, sma_long) and rsi > rsi_oversold

// Execute long trades
if (long_condition and inDateRange and enable_long)
    strategy.entry("Long", strategy.long, qty=position_size)
    strategy.exit("Take Profit/Stop Loss", "Long", stop=stop_loss_level_long, limit=take_profit_level_long)

// Execute short trades
if (short_condition and inDateRange and enable_short)
    strategy.entry("Short", strategy.short, qty=position_size)
    strategy.exit("Take Profit/Stop Loss", "Short", stop=stop_loss_level_short, limit=take_profit_level_short)

// Plot moving averages
plot(sma_short, title="Short EMA", color=color.blue)
plot(sma_long, title="Long SMA", color=color.red)

// Plot RSI on separate chart
hline(rsi_overbought, "Overbought", color=color.red)
hline(rsi_oversold, "Oversold", color=color.green)
plot(rsi, title="RSI", color=color.purple)

// Plot signals on chart
plotshape(series=long_condition and enable_long, title="Long Signal", location=location.belowbar, color=color.green, style=shape.labelup, text="BUY")
plotshape(series=short_condition and enable_short, title="Short Signal", location=location.abovebar, color=color.red, style=shape.labeldown, text="SELL")

// Background color for backtest range
bgcolor(inDateRange ? na : color.red, transp=90)