En la carga de los recursos... Cargando...

Estrategia cuantitativa de tendencia a largo plazo para el intercambio de SMA

El autor:¿ Qué pasa?, fecha: 2025-01-06 17:01:08
Las etiquetas:La SMAEl EMA

img

Resumen general

Esta estrategia es un sistema de negociación cuantitativo basado en señales de cruce de promedio móvil simple (SMA) de varios períodos. Identifica principalmente oportunidades de retroceso dentro de tendencias alcistas a largo plazo.

Principios de estrategia

La lógica central incluye varios componentes clave:

  1. Identificación de la tendencia a largo plazo a través de la posición relativa de SMA20 y SMA60, confirmando una tendencia alcista cuando SMA20 está por encima de SMA60.
  2. Las señales de compra se activan cuando el SMA5 a corto plazo cruza por encima del SMA20 después de un retroceso, lo que indica un repunte dentro de la tendencia alcista.
  3. Las señales de salida ocurren cuando SMA20 cruza por encima de SMA5, lo que sugiere un debilitamiento del impulso a corto plazo.
  4. La estrategia incluye una funcionalidad de filtro de tiempo para limitar los períodos de backtesting, mejorando la flexibilidad.

Ventajas estratégicas

  1. Lógica clara y sencilla que sea fácil de entender y aplicar, evitando cálculos complejos.
  2. Filtración eficaz del ruido mediante el uso de medias móviles de varios períodos, mejorando la fiabilidad de la señal.
  3. Centrarse en las oportunidades de retroceso dentro de los mercados de tendencia, alineándose con los principios básicos de seguimiento de tendencias.
  4. El uso de SMA en lugar de EMA reduce la sensibilidad de los precios y las señales falsas.
  5. Una lógica clara de entrada y salida facilita la ejecución y la gestión del riesgo.

Riesgos estratégicos

  1. El retraso inherente en los sistemas de medias móviles puede llevar a un tiempo de entrada y salida subóptimo.
  2. Los cruces frecuentes en mercados variados pueden generar señales falsas excesivas.
  3. La ausencia de un mecanismo de filtrado de volatilidad expone la estrategia a un riesgo significativo de extracción en períodos de alta volatilidad.
  4. La fiabilidad de las señales puede verse comprometida sin confirmación de volumen.
  5. Es posible que los parámetros fijos de la media móvil no se adapten a todas las condiciones del mercado.

Direcciones de optimización

  1. Implementar el indicador ATR para filtrar la volatilidad para evitar la negociación en períodos de alta volatilidad.
  2. Incorporar un mecanismo de confirmación de volumen para mejorar la fiabilidad de la señal.
  3. Desarrollar períodos de media móvil adaptativos para adaptarse mejor a los diferentes entornos de mercado.
  4. Añadir filtros de fuerza de tendencia, como el indicador ADX, para garantizar que solo se negocie con tendencias fuertes.
  5. Mejorar los mecanismos de stop-loss, incluidos los trailing stops, para un mejor control del riesgo.

Resumen de las actividades

La estrategia construye un sistema de negociación enfocado en capturar oportunidades de retroceso dentro de tendencias alcistas a largo plazo a través del uso coordinado de SMAs de varios períodos. Su diseño es práctico y sencillo, ofreciendo buena comprensibilidad y ejecución. La robustez y confiabilidad de la estrategia se pueden mejorar aún más mediante la introducción de filtro de volatilidad, confirmación de volumen y otras medidas de optimización.


/*backtest
start: 2019-12-23 08:00:00
end: 2025-01-04 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=6
strategy("Long-Term Growing Stock Strategy", overlay=true)
// Date Range
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 2014"),title="Start Date", group="Backtest Time Period",tooltip="This start date is in the time zone of the exchange " + "where the chart's instrument trades. It doesn't use the time " +"zone of the chart or of your computer.")
backtestEndDate = input(timestamp("31 Dec 2024"), title="End Date", group="Backtest Time Period")
// STEP 2. See if current bar falls inside the date range
inTradeWindow = true


// Calculate EMAs
// ema20 = ta.ema(close, ema20_length)
// ema60 = ta.ema(close, ema60_length)
// ema120 = ta.ema(close, ema120_length)
sma5 = ta.sma(close, 5)
sma10 = ta.sma(close, 10)
sma20 = ta.sma(close, 20)
sma60 = ta.sma(close, 60)
sma120 = ta.sma(close, 120)

// Long-term growth condition: EMA 20 > EMA 60 > EMA 120
longTermGrowth = sma20 > sma60
//  and ema60 > ema120

// Entry condition: Stock closes below EMA 20 and then rises back above EMA 10

// entryCondition = ta.crossover(close, ema20) or (close[1] < ema20[1] and close > ema20)
entryCondition =  sma5[1] <= sma20[1] and sma5 > sma20
// ta.crossover(sma5, sma20)

// Exit condition: EMA 20 drops below EMA 60
// exitCondition = ema5 < ema60 or (year == 2024 and month == 12 and dayofmonth == 30)
exitCondition = ta.crossover(sma20, sma5)

// Execute trades
if entryCondition and inTradeWindow
    strategy.entry("Long Entry", strategy.long)

if exitCondition and inTradeWindow
    strategy.close("Long Entry")
// plotchar(true, char="sma5: " + str.tostring(sma5))
// plotchar(true, char="sma5: " + sma20)
// label.new(x=bar_index, y=high + 10, text="SMA 5: " + str.tostring(sma5), color=color.blue, style=label.style_label_down, textcolor=color.white, size=size.small)
// label.new(x=bar_index, y=low, text="SMA 20: " + str.tostring(sma20), color=color.red, style=label.style_label_down, textcolor=color.white, size=size.small)


// x = time + (time - time[1]) * offset_x

//     var label lab = na
//     label.delete(lab)
//     lab := label.new(x=x, y=0, text=txt, xloc=xloc.bar_time, yloc=yloc.belowbar, color=color.red, textcolor=color.black, size=size.normal, style=label.style_label_up)
//     label.set_x(lab, x)



// Plot EMAs for visualization
// plot(ema20, color=color.red, title="EMA 20")
// plot(ema60, color=color.green, title="EMA 60")
// plot(ema120, color=color.blue, title="EMA 120")

Relacionados

Más.