Estrategia inversa de inversión media basada en la media móvil

El autor:¿ Qué pasa?, Fecha: 2023-12-21 15:45:23
Las etiquetas:

img

La estrategia se llama Mean Reversion Reverse Strategy Based on Moving Average. La idea principal es comprar cuando el precio rompe los promedios móviles clave y obtener ganancias al alcanzar los objetivos preestablecidos.

El principio principal de esta estrategia es capturar oportunidades de rebote en mercados de rango utilizando la reversión de promedios móviles a corto plazo. Específicamente, cuando los precios rompen promedios móviles de ciclo más largo (como MA de 20 días y 50 días) y muestran signos de fuerte sobreventa, los precios tienden a rebotar en cierta medida debido a la característica de reversión media de las fluctuaciones del mercado. En este momento, si los promedios móviles de ciclo más corto (como MA de 10 días) muestran una señal de reversión al alza, sería un buen momento para comprar. En esta estrategia, comprará cuando el precio cerrar está por debajo de MA de 20 días mientras está por encima de MA de 50 días, para capturar su rebote con reversión de MA a corto plazo.

La lógica de entrada específica es: Compre 1 lote cuando el precio rompe el MA de 20 días, agregue 1 lote cuando rompe el MA de 50 días, continúe agregando 1 lote cuando rompa el MA de 100 días y agregue hasta 1 lote cuando rompa el MA de 200 días, para un máximo de 4 lotes. Tome ganancias después de alcanzar los objetivos preestablecidos. También establece el tiempo y las condiciones de stop loss.

Análisis de ventajas

  1. Identificar eficazmente las oportunidades de recuperación a corto plazo utilizando las características de reversión de las medias móviles
  2. Reducir los riesgos de un solo punto mediante órdenes piramidal
  3. Bloquear las ganancias mediante el establecimiento de objetivos de ganancia
  4. Evitar falsas rupturas mediante el uso de filtros de precio abierto y de precios bajos anteriores

Análisis de riesgos

  1. Las pérdidas aumentarán si el mercado continúa cayendo.
  2. Las señales MA pueden dar señales falsas, lo que conduce a pérdidas.
  3. Puede no obtener beneficios totales o parciales si no se alcanza el objetivo de beneficios

Direcciones de optimización

  1. Prueba de rentabilidad y estabilidad en diferentes parámetros
  2. Considere combinar otros indicadores como MACD, KD para decidir entradas
  3. Elegir los períodos de autorización adecuados en función de las características de los diferentes productos
  4. Introducir algoritmos de aprendizaje automático para optimizar dinámicamente los parámetros

Resumen de las actividades

En general, esta es una estrategia de negociación de MA clásica y universal. Utiliza correctamente la característica de suavizado de los MA, combinada con múltiples MA para identificar oportunidades de compra a corto plazo. Controla los riesgos mediante la pirámide de órdenes y la toma de ganancias oportunas. Pero su respuesta a eventos del mercado como noticias políticas significativas puede ser más pasiva. Esto es algo que se puede optimizar aún más. En general, con mejoras apropiadas en la optimización de parámetros y el control de riesgos, esta estrategia puede obtener retornos excedentes constantes.


/*backtest
start: 2023-12-13 00:00:00
end: 2023-12-20 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA_zorba1", shorttitle="zorba_ema", overlay=true)

// Input parameters
qt1 = input.int(5, title="Quantity 1", minval=1)
qt2 = input.int(10, title="Quantity 2", minval=1)
qt3 = input.int(15, title="Quantity 3", minval=1)
qt4 = input.int(20, title="Quantity 4", minval=1)
ema10 = ta.ema(close, 10)
ema20 = ta.ema(close, 20)
ema50 = ta.ema(close, 50)
ema100 = ta.ema(close, 100)
ema200 = ta.ema(close, 200)

// Date range filter
start_date = timestamp(year=2021, month=1, day=1)
end_date = timestamp(year=2024, month=10, day=27)
in_date_range = true

// Profit condition
profit_percentage = input(1, title="Profit Percentage")  // Adjust this value as needed

// Pyramiding setting
pyramiding = input.int(2, title="Pyramiding", minval=1, maxval=10)

// Buy conditions
buy_condition_1 = in_date_range and close < ema20 and close > ema50 and close < open and close < low[1]
buy_condition_2 = in_date_range and close < ema50 and close > ema100 and close < open and close < low[1]
buy_condition_3 = in_date_range and close < ema100 and close > ema200 and close < open and close < low[1]
buy_condition_4 = in_date_range and close < ema200 and close < open and close < low[1]

// Exit conditions
profit_condition = strategy.position_avg_price * (1 + profit_percentage / 100) <= close
exit_condition_1 = in_date_range and (close > ema10 and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]
exit_condition_2 = in_date_range and (close < ema10 and close[1] > ema10 and close < close[1] and ema10 > ema20 and ema10 > ema50 and ema10 > ema100 and ema10 > ema200 and close < open) and profit_condition and close < low[1] and close < low[2]

// Exit condition for when today's close is less than the previous day's low
//exit_condition_3 = close < low[1]

// Strategy logic
strategy.entry("Buy1", strategy.long, qty=qt1 * pyramiding, when=buy_condition_1)
strategy.entry("Buy2", strategy.long, qty=qt2 * pyramiding, when=buy_condition_2)
strategy.entry("Buy3", strategy.long, qty=qt3 * pyramiding, when=buy_condition_3)
strategy.entry("Buy4", strategy.long, qty=qt4 * pyramiding, when=buy_condition_4)

strategy.close("Buy1", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy2", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy3", when=exit_condition_1 or exit_condition_2)
strategy.close("Buy4", when=exit_condition_1 or exit_condition_2)

Más.