La estrategia de swing trading combina posiciones dinámicas largas y cortas con un sistema de señales de cruce de medias móviles

EMA SMA RSI ATR TP SL
Fecha de creación: 2024-12-12 11:11:15 Última modificación: 2024-12-12 11:11:15
Copiar: 1 Número de Visitas: 360
1
Seguir
1617
Seguidores

La estrategia de swing trading combina posiciones dinámicas largas y cortas con un sistema de señales de cruce de medias móviles

Descripción general

La estrategia es una estrategia de trading de volatilidad basada en indicadores técnicos, que combina múltiples señales como el cruce de la línea de paridad, el RSI sobre la compra y la venta y el ATR para detener el stop loss. El núcleo de la estrategia es capturar la tendencia del mercado a través de la cruce de la EMA a corto plazo y el SMA a largo plazo, mientras que el indicador RSI es utilizado para la confirmación de la señal y la configuración de las posiciones de stop loss y stop loss a través del ATR.

Principio de estrategia

La estrategia utiliza una combinación de indicadores técnicos en varios niveles para construir el sistema de negociación:

  1. La capa de juicio de tendencias: utiliza el cruce de 20 períodos de EMA y 50 períodos de SMA para juzgar la dirección de la tendencia, el EMA superior se considera como una señal de más y el inferior como una señal de menos.
  2. La capa de confirmación de la dinámica: se utiliza el indicador RSI para determinar el exceso de compra y venta, cuando el RSI es inferior a 70 se permite hacer más y cuando es superior a 30 se permite hacer menos.
  3. La capa de cálculo de volatilidad: se utiliza el ATR de 14 ciclos para calcular la posición de parada de pérdidas, con una configuración de parada de pérdidas de 1.5 veces el ATR y una configuración de parada de 3 veces el ATR.
  4. Gestión de posiciones: calcula el número de posiciones abiertas de forma dinámica en función del capital inicial y el riesgo por operación (el 1% por defecto).

Ventajas estratégicas

  1. Confirmación de múltiples señales: reduce eficazmente la interferencia de señales falsas mediante el cruce de la línea media y la combinación de los indicadores triples RSI y ATR.
  2. Paradas de pérdidas dinámicas: Basadas en el ATR, las posiciones de paradas de pérdidas se ajustan dinámicamente para adaptarse mejor a los cambios en la volatilidad del mercado.
  3. Dirección de negociación flexible: puede activar operaciones con varios titulares o sin titulares individualmente según el entorno del mercado.
  4. Estricto control de riesgos: Control eficaz de la brecha de riesgo de cada operación a través del control del porcentaje de riesgo y la gestión dinámica de las posiciones.
  5. Soporte de visualización: La estrategia ofrece soporte de visualización de gráficos completo, incluyendo la marca de señales y la visualización de indicadores.

Riesgo estratégico

  1. Riesgo de mercado en movimiento: en mercados en movimiento horizontal, el cruce de la línea media puede generar demasiadas señales falsas.
  2. Riesgo de deslizamiento: en períodos de gran volatilidad, el precio de transacción real puede estar muy alejado del precio de la señal.
  3. Riesgo de gestión de fondos: si se establece una proporción de riesgo demasiado alta, puede resultar en pérdidas individuales excesivas.
  4. Sensibilidad de parámetros: los efectos de la estrategia son sensibles a la configuración de parámetros y requieren un ajuste cuidadoso.

Dirección de optimización de la estrategia

  1. Aumentar el filtro de la intensidad de la tendencia: se puede agregar el indicador ADX para filtrar las señales de negociación en un entorno de tendencia débil.
  2. Optimización del ciclo de la línea media: los parámetros de la línea media se pueden ajustar dinámicamente en función de las diferentes características del ciclo del mercado.
  3. Mejora en los mecanismos de detención de pérdidas: se puede agregar la función de seguimiento de las pérdidas y proteger mejor los beneficios.
  4. Aumento de la confirmación de la transacción: la adición de un indicador de la transacción como confirmación auxiliar, mejora la fiabilidad de la señal.
  5. Clasificación de entornos de mercado: agregar módulos de identificación de entornos de mercado para usar diferentes combinaciones de parámetros en diferentes entornos de mercado.

Resumir

La estrategia utiliza una combinación de múltiples indicadores técnicos para construir un sistema de negociación relativamente completo. Las ventajas de la estrategia residen en la fiabilidad de la confirmación de señales y la integridad de la gestión de riesgos, pero también se debe tener en cuenta el impacto del entorno de mercado en el rendimiento de la estrategia.

Código Fuente de la Estrategia
/*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)