La estrategia genera señales de negociación mediante el cálculo de dos promedios móviles de períodos diferentes y la traza de sus puntos de cruce.
La estrategia se basa en la ventaja de las medias móviles, que eliminan la aleatoriedad en las secuencias de precios y extraen la tendencia principal.
Cuando el promedio móvil a corto plazo cruza por encima del promedio móvil a largo plazo, indica que los precios están entrando en una tendencia alcista. Cuando cruza por debajo, indica que los precios están entrando en una tendencia bajista. Según esta lógica, vamos largo o corto respectivamente.
Específicamente, la estrategia calcula el promedio móvil simple de 7 días (SMA) y el promedio móvil simple de 20 días. Cuando los dos promedios se cruzan, juzga una inversión de tendencia y activa una señal comercial. Para diferenciar entre los tipos de cruce, definimos la línea a corto plazo que está por encima de la línea a largo plazo como una tendencia al alza de precios, y viceversa para una tendencia a la baja. Cuando la línea a corto plazo cruza por encima de la línea a largo plazo, es decir, el inicio de una tendencia al alza, se ingresa una posición larga. Cuando la línea a corto plazo cruza por debajo, es decir, el inicio de una tendencia a la baja, se ingresa una posición corta.
(1) La lógica de la estrategia es simple y fácil de entender e implementar.
(2) Las medias móviles como indicadores de seguimiento de tendencias pueden filtrar efectivamente algo de ruido en los precios.
(3) Configuraciones de parámetros flexibles para satisfacer las diferentes condiciones del mercado y los requisitos comerciales.
(4) El uso de dos períodos de media móvil de uso común facilita la determinación de señales comerciales claras.
(5) Potente visualización para una tendencia intuitiva, identificación de los niveles clave, etc.
(6) Los parámetros se pueden optimizar mediante backtesting para mejorar el rendimiento de la estrategia.
(1) La estrategia es muy sensible a las fluctuaciones del mercado.
(2) Es posible que los cruces no indiquen con precisión los niveles de inversión de tendencia y puedan desencadenar señales erróneas.
(3) Las normas rígidas no pueden adaptarse a los acontecimientos drásticos que afectan a los mercados, lo que puede causar enormes pérdidas.
(4) Los parámetros inadecuados también podrían conducir a señales inexactas y a operaciones perdidas.
Para mitigar estos riesgos, los parámetros podrían ajustarse en consecuencia. Otros indicadores pueden añadirse para su confirmación. Las estrategias de stop loss podrían controlar las pérdidas. Los parámetros o estrategias podrían ajustarse según los regímenes del mercado.
(1) La incorporación de otros indicadores técnicos para formar una estrategia combinada podría aumentar la precisión de la señal.
(2) Añadir estrategias de stop loss para controlar eficazmente las pérdidas de una sola operación.
(3) Prueba y optimización de los períodos de promedio móvil. Prueba diferentes combinaciones rápidas y lentas para encontrar los mejores parámetros. También se pueden probar otros promedios móviles como EMA, WMA.
(4) Ajuste de parámetros basado en diferentes productos y condiciones de mercado.
La estrategia de cruce de promedios móviles es una estrategia muy típica y básica de seguimiento de tendencias. Al calcular dos promedios móviles de períodos diferentes y observar sus cruces, juzga los cambios en la tendencia del precio. Las señales de negociación se generan cuando el período más corto cruza el promedio móvil por encima o por debajo del más largo. Esta lógica simple es fácil de implementar y flexible de ajustar, por lo que es una estrategia cuantitativa introductoria.
/*backtest start: 2022-12-01 00:00:00 end: 2023-12-07 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("Ma stratégie", overlay=true) // Multi-timeframe and price input pricetype = input(close, title="Price Source For The Moving Averages") useCurrentRes = input(true, title="Use Current Timeframe As Resolution?") resCustom = input(title="Use Different Timeframe? Then Uncheck The Box Above", defval="W") res = useCurrentRes ? timeframe.period : resCustom price = request.security(syminfo.tickerid, res, pricetype) // MA period input shortperiod = input(7, title="Short Period Moving Average") longperiod = input(20, title="Long Period Moving Average") short = ema(price, shortperiod) long = ema(price, longperiod) // MA trend direction color shortcolor = short > short[1] ? lime : short < short[1] ? red : blue longcolor = long > long[1] ? lime : long < long[1] ? red : blue // MA output MA1 = plot(short, title="Short Period Moving Average", style=linebr, linewidth=2, color=shortcolor) MA2 = plot(long, title="Long Period Moving Average", style=linebr, linewidth=4, color=longcolor) fill(MA1, MA2, color=silver, transp=50) // MA trend bar color TrendingUp() => short > long TrendingDown() => short < long barcolor(TrendingUp() ? green : TrendingDown() ? red : blue) // MA cross alert MAcrossing = cross(short, long) ? short : na plot(MAcrossing, style = cross, linewidth = 4,color=black) // MA cross background color alert Uptrend() => TrendingUp() and TrendingDown()[1] Downtrend() => TrendingDown() and TrendingUp()[1] bgcolor(Uptrend() ? green : Downtrend() ? red : na,transp=50) // Buy and sell alert Buy = Uptrend() and close > close[1] Sell = Downtrend() and close < close[1] plotshape(Buy, color=black, style=shape.arrowup, text="Buy", location=location.bottom) plotshape(Sell, color=black, style=shape.arrowdown, text="Sell", location=location.top) if (Buy) strategy.entry("My Long Entry Id", strategy.long) if (Sell) strategy.entry("My Short Entry Id", strategy.short)