La estrategia es una sencilla estrategia de negociación basada en el cruce entre una media móvil rápida y una media móvil lenta. Utiliza el cuerno de oro de la media móvil para emitir señales de compra y venta. Hacer más cuando se cruza la media móvil lenta sobre la media móvil rápida; hacer vacío cuando se cruza la media móvil lenta por debajo de la media móvil rápida.
La estrategia se basa principalmente en el cruce de la Rapid Exponential Moving Average (REMA) y la Lenta Simple Moving Average (SMA) como señales de negociación. Primero se calculan la REMA rápida y la Lenta SMA, con un ciclo de REMA rápida establecido en 13, y el ciclo de SMA lenta establecido en 30. Luego, se emite una señal múltiple cuando la REMA rápida atraviesa la Lenta SMA; se emite una señal de vacío cuando la REMA rápida atraviesa la Lenta SMA.
Concretamente, la estrategia calcula el EMA rápido y el SMA lento a través de las variables maFast y maSlow. Luego, define las variables enterLong y exitLong para determinar el momento de compra y venta. Cuando maFast>maSlow, es decir, el EMA rápido sobre el SMA lento, configure enterLong=true y emita una señal múltiple. Cuando maSlow>maFast, es decir, el EMA rápido debajo del SMA lento, configure exitLong=true y emita una señal de posición plana.
De esta manera, cuando la tendencia de alza de los precios a corto plazo es más fuerte que la tendencia de largo plazo, el EMA rápido sube a través de la SMA lenta, generando una señal de compra; cuando la tendencia de caída a corto plazo es más fuerte que la tendencia de largo plazo, el EMA rápido baja a través de la SMA lenta, generando una señal de venta. Al capturar los giros de las diferentes tendencias de precios periódicas, se puede comprar en los mínimos relativos y vender en los máximos relativos.
La estrategia de cruce de la media móvil tiene las siguientes ventajas:
Simple, fácil de manejar, de entender y de implementar. Los promedios móviles son un indicador técnico común y eficaz, cuyos principios cruzados son sencillos e intuitivos. Esto hace que la estrategia sea fácil de entender y de aplicar para los operadores.
Alta flexibilidad y parámetros personalizables. La estrategia permite personalizar el número de ciclos de EMA rápido y SMA lento, y los parámetros se pueden ajustar según los diferentes mercados, mejorando la adaptabilidad de la estrategia.
Las medias móviles filtran eficazmente el ruido del mercado, y sus cruces producen señales de comercio más fiables. Las medias cruzadas rápidas y lentas pueden capturar el giro de las grandes tendencias.
La estrategia se puede utilizar en mercados de tendencia y mercados de liquidación, y se puede adaptar a diferentes situaciones mediante el ajuste de parámetros.
Fácil de usar con otras combinaciones de indicadores. La estrategia de cruce de la media móvil puede combinarse de manera flexible con otros indicadores técnicos como el RSI para formar una estrategia más potente.
La estrategia también tiene sus riesgos:
Cuando la tendencia del mercado no es clara, los promedios móviles pueden cruzarse varias veces, lo que provoca señales de compra y venta frecuentes, lo que aumenta los costos de negociación y la pérdida de puntos de deslizamiento.
Es fácil ser atrapado en mercados convulsivos. Cuando los mercados están en un estado de balanceo convulsivo, los promedios móviles pueden presentar más señales de cruce de incertidumbre, lo que puede provocar señales de negociación falsas.
Dificultad para elegir los parámetros. La elección de los parámetros de promedio móvil tiene un gran impacto en la eficacia de la estrategia. La elección de los parámetros óptimos requiere una gran cantidad de pruebas repetitivas.
Las señales generan un retraso. Debido a que las medias móviles tienen un retraso en sí mismas, sus señales cruzadas suelen ser tardías y pueden perder el mejor momento de entrada.
La estrategia de parada de pérdidas es imperfecta. La estrategia carece de lógica de parada de pérdidas, lo que puede generar más pérdidas.
La estrategia de cruce de medias móviles también puede ser optimizada en los siguientes aspectos:
La adición de otras señales de filtro de indicadores técnicos, como el RSI, puede reducir las señales falsas. No haga más cuando el RSI está alto, no haga espacio cuando el RSI está bajo, etc.
Aumentar el promedio móvil compuesto, se puede usar una señal de confirmación de promedio móvil de tres o más períodos diferentes. Por ejemplo, al agregar la línea de 50 días, el mercado de múltiples cabezas se lleva a corto plazo a medio plazo y a medio plazo a largo plazo.
La adición de estrategias de parada de pérdidas, como la SAR de la línea de paralelo, puede detener el riesgo a tiempo y controlarlo. También puede establecer una parada móvil que se adapte a la fluctuación del mercado.
Optimización de parámetros, utilizando métodos como el análisis avanzado y el aprendizaje automático para optimizar los parámetros y adaptarlos a diferentes entornos de mercado.
La operación del diagrama horario, la inclusión de la dirección de la entidad de la línea K y otros juicios de forma, puede mejorar la calidad de la señal y reducir la apertura de la posición inversa innecesaria.
La combinación de indicadores cuantitativos, como el volumen de transacciones, puede evitar falsas rupturas. La confirmación cuantitativa puede hacer que la señal sea más confiable.
La estrategia de cruce de medias móviles es una estrategia de comercio cuantitativa que es simple y práctica. Utiliza cruces de EMAs rápidas y SMAs lentas para generar señales de comercio. La estrategia es fácil de implementar y fácil de usar en combinación con otros indicadores técnicos.
/*backtest
start: 2023-08-26 00:00:00
end: 2023-09-12 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=3
strategy(title="Moving Average Cross EMA SMA", overlay=true, initial_capital=10000, currency='USD',default_qty_type=strategy.percent_of_equity,default_qty_value=100)
// Based on strategy by lsills @ https://www.tradingview.com/script/oI8loEZ8-Moving-Average-Cross-Strategy/
// Strategy has several logic alternatives - comment out the undesired logic sections below, only 1 logic section can be active
// === GENERAL INPUTS ===
// short Ema
maFastSource = input(defval = close, title = "Fast EMA Source")
maFastLength = input(defval = 13, title = "Fast EMA Period", minval = 1)
// long Sma
maSlowSource = input(defval = close, title = "Slow SMA Source")
maSlowLength = input(defval = 30, title = "Slow SMA Period", minval = 1)
// longer Sma
maSlowerSource = input(defval = close, title = "Slower SMA Source")
maSlowerLength = input(defval = 30, title = "Slower SMA Period", minval = 1)
// === SERIES SETUP ===
/// a couple of ma's..
maFast = ema(maFastSource, maFastLength)
maSlow = sma(maSlowSource, maSlowLength)
maSlower = vwma(maSlowerSource, maSlowerLength)
rsi = rsi(maSlowerSource, maSlowerLength)
// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = red, linewidth = 2, style = line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = green, linewidth = 2, style = line, transp = 30)
slower = plot(maSlower, title = "Slower MA", color = teal, linewidth = 2, style = line, transp = 30)
// === LOGIC === Basic - simply switches from long to short and vice-versa with each fast-slow MA cross
enterLong = maFast> maSlow
exitLong = maSlow> maFast
// === LOGIC === Complex 1 - switches from long to short and vice-versa with each fast-slow MA cross but additional conditions must be met
//enterLong = variance(maFast,maSlowLength) < 0.6 and close[0] > maFast and crossover(maFast, maSlow) and 1.1* maSlow > maSlower and rsi>rsi[2]
//exitLong = variance(maFast,maSlowLength) < 0.6 and close[0] < maSlow and crossover(maSlow, maFast) and maSlow/1.1 < maSlower and rsi<rsi[2]
// === LOGIC === Complex 2- switches from long to short and vice-versa with each fast-slow MA cross but additional conditions must be met
//enterLong = maFast> maSlow and 1.1* maSlow > maSlower and rsi>rsi[1] and close > close[3] //and close > close[2]
//exitLong = maSlow> maFast and maSlow/1.1 < maSlower and rsi<rsi[1] and close < close[3] // and close < close[2]
// Entry //
strategy.entry(id="Long Entry", long=true, when=enterLong)
strategy.entry(id="Short Entry", long=false, when=exitLong)
// === FILL ====
fill(fast, slow, color = maFast > maSlow ? green : red)