Estrategia de negociación cruzada de promedio móvil

El autor:¿ Qué pasa?, Fecha: 2023-11-06 16:38:22
Las etiquetas:

img

Resumen general

Esta estrategia se basa en el principio de cruce de los promedios móviles para el comercio. Utiliza dos promedios móviles, generando señales de compra cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo desde abajo. Las señales de venta se generan cuando el precio se rompe por debajo de otro promedio móvil. Esta estrategia es adecuada para los mercados de tendencia, capaz de filtrar efectivamente algunas operaciones de ruido y capturar la tendencia principal.

Estrategia lógica

Esta estrategia utiliza períodos de promedio móvil a corto y largo plazo personalizables por el usuario, período de media móvil de salida y métodos de cálculo de promedio móvil.

Cuando la media móvil a corto plazo cruza por encima de la media móvil a largo plazo desde abajo, se genera una señal de compra. Esto indica que la tendencia a corto plazo ha cambiado a una tendencia alcista, y podemos comprar.

Cuando el precio de cierre se rompe por debajo de la media móvil de salida, se genera una señal de venta. Esto indica una inversión de tendencia, por lo que debemos salir de la posición.

Por lo tanto, las señales de negociación de la estrategia provienen del cruce de las medias móviles a corto y largo plazo y la relación entre el precio de cierre y la media móvil de salida.

Análisis de ventajas

Las ventajas de esta estrategia son:

  1. Simple y fácil de implementar.

  2. Los parámetros personalizables se adaptan a las diferentes condiciones del mercado.

  3. Las medias móviles filtran el ruido y capturan la tendencia principal.

  4. Puede incorporar otros indicadores técnicos como tendencia, soporte / resistencia para optimizar aún más.

  5. Relación riesgo-recompensa controlada, tiene un mecanismo de stop loss.

Análisis de riesgos

Los riesgos son:

  1. Es propenso a señales falsas en mercados de consolidación que no están en tendencia.

  2. La configuración incorrecta de los parámetros puede causar tendencias faltantes o demasiadas operaciones no válidas.

  3. La colocación incorrecta de un stop loss podría aumentar las pérdidas.

  4. Las fugas fallidas pueden causar pérdidas.

  5. Los parámetros deben ajustarse oportunamente para adaptarse a los cambios del mercado.

Las soluciones incluyen la optimización de parámetros, la incorporación de otros filtros, el ajuste de paradas, la espera de la confirmación de la tendencia antes de negociar, etc.

Direcciones de optimización

Esta estrategia puede mejorarse mediante:

  1. Desarrollo de mecanismos de determinación de tendencias y negociación únicamente después de la confirmación de tendencias.

  2. Añadir filtros como volumen o volatilidad a las señales de filtro.

  3. Optimización dinámica de los períodos de media móvil.

  4. Optimizando el mecanismo de stop loss para utilizar un trailing stop.

  5. Incorporación de soporte/resistencia y otros indicadores para confirmar aún más las señales.

  6. Ajuste de parámetros basados en diferentes productos y plazos.

Conclusión

En general, esta estrategia de cruce de promedios móviles es un sistema de seguimiento de tendencias simple y práctico. Se puede ajustar a las condiciones del mercado ajustando los parámetros y capturando la dirección de la tendencia principal en los mercados de tendencia. Pero se deben tener en cuenta riesgos como la identificación errónea de la tendencia y se necesita una optimización constante para adaptarse a los mercados cambiantes. En general, esta estrategia tiene una buena viabilidad.


/*backtest
start: 2022-10-30 00:00:00
end: 2023-11-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © TwoChiefs

//@version=4
strategy("John EMA Crossover Strategy", overlay=true)
////////////////////////////////////////////////////////////////////////////////
// BACKTESTING RANGE
 
// From Date Inputs
fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2020, title = "From Year", minval = 1970)
 
// To Date Inputs
toDay = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)
 
// Calculate start/end date and time condition
startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true
 
////////////////////////////////////////////////////////////////////////////////

//CREATE USER-INPUT VARIABLES

periodShort = input(13, minval=1, title="Enter Period for Short Moving Average")
smoothingShort = input(title="Choose Smoothing Type for Short Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodLong = input(48, minval=1, title="Enter Period for Long Moving Average")
smoothingLong = input(title="Choose Smoothing Type for Long Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])

periodExit = input(30, minval=1, title="Enter Period for Exit Moving Average")
smoothingExit = input(title="Choose Smoothing Type for Exit Moving Average", defval="EMA", options=["RMA", "SMA", "EMA", "WMA", "VWMA", "SMMA", "DEMA", "TEMA", "HullMA", "LSMA"])


src1 = close
pivot = (high + low + close) / 3

//MA CALCULATION FUNCTION
ma(smoothing, src, length) => 
    if smoothing == "RMA"
        rma(src, length)
    else
        if smoothing == "SMA"
            sma(src, length)
        else 
            if smoothing == "EMA"
                ema(src, length)
            else 
                if smoothing == "WMA"
                    wma(src, length)
				else
					if smoothing == "VWMA"
						vwma(src, length)
					else
						if smoothing == "SMMA"
							na(src[1]) ? sma(src, length) : (src[1] * (length - 1) + src) / length
						
						else
							if smoothing == "HullMA"
								wma(2 * wma(src, length / 2) - wma(src, length), round(sqrt(length)))




//ASSIGN A MOVING AVERAGE RESULT TO A VARIABLE
shortMA=ma(smoothingShort, pivot, periodShort)
longMA=ma(smoothingLong, pivot, periodLong)
exitMA=ma(smoothingExit, pivot, periodExit)

//PLOT THOSE VARIABLES
plot(shortMA, linewidth=4, color=color.yellow,title="The Short Moving Average")
plot(longMA, linewidth=4, color=color.blue,title="The Long Moving Average")
plot(exitMA, linewidth=1, color=color.red,title="The Exit CrossUnder Moving Average")



//BUY STRATEGY
buy = crossover(shortMA,longMA) ? true : na
exit = crossunder(close,exitMA) ? true : na


strategy.entry("long",true,when=buy and time_cond)
strategy.close("long",when=exit and time_cond)


if (not time_cond)
    strategy.close_all()


Más.