Esta estrategia optimiza la estrategia de cruce de media móvil convencional estableciendo tres medias móviles con períodos diferentes, construyendo un patrón de cruz dorada con medias móviles de 9 períodos, 50 períodos y 100 períodos.
La estrategia utiliza tres promedios móviles con períodos de 9, 50 y 100. El MA de 9 períodos es el MA a corto plazo, el MA de 50 períodos es el MA a mediano plazo y el MA de 100 períodos es el MA a largo plazo. Las señales de negociación se generan por el cruce entre el MA a corto plazo y el MA a mediano plazo.
En comparación con la estrategia de cruce de media móvil doble convencional, esta estrategia agrega la condición de juzgar las tendencias a medio y largo plazo antes de generar señales comerciales, lo que puede filtrar efectivamente algunas señales inválidas. Cuando las tendencias a largo plazo no son claras, la estrategia no generará señales, evitando quedar atrapada en la consolidación. Al mismo tiempo, esta estrategia es adecuada para capturar los movimientos de tendencia a corto y mediano plazo, reduciendo la posibilidad de entrada agresiva.
Cuando se establecen parámetros para esta estrategia, la combinación de períodos de promedio móvil debe ajustarse. Las diferentes combinaciones de períodos tendrán un impacto en la efectividad de la estrategia. Si los parámetros del período no se establecen correctamente, existe el riesgo de generar demasiadas señales falsas. Además, los operadores deben ser conscientes de los riesgos sistémicos potenciales y detener las pérdidas a tiempo para mitigar los riesgos.
Considerar la incorporación de otros indicadores para ayudar a juzgar las tendencias del mercado, como el MACD, el BOLL, etc., y establecer condiciones de entrada más estrictas, o incorporar indicadores de volatilidad para construir medias móviles adaptativas para que los parámetros puedan ajustarse automáticamente en función de las condiciones del mercado para optimizar aún más la estrategia.
Basada en el cruce de media móvil doble convencional, esta estrategia agrega el juicio y las condiciones de filtro de MA a largo plazo, que pueden filtrar eficazmente las señales falsas y es adecuada para capturar los movimientos de tendencia a corto y mediano plazo. Es una estrategia simple y práctica de seguimiento de tendencias. Sin embargo, los operadores aún necesitan prestar atención a la optimización de parámetros y riesgos sistémicos, y formular estrategias científicas de gestión de riesgos.
/*backtest start: 2022-12-12 00:00:00 end: 2023-12-18 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Golden Cross, SMA 100, Moving Average Strategy (by Coinrule)", shorttitle="Golden_Cross_Strat_MA100_optimized", overlay=true, initial_capital = 1000,process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) // Input switch1=input(true, title="Enable Bar Color?") switch2=input(false, title="Show Fast Moving Average") switch3=input(true, title="Show Slow Moving Average") //Calculate Moving Averages movingaverage_fast = sma(close, input(9)) movingaverage_slow = sma(close, input(100)) movingaverage_normal= sma(close, input(50)) //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" // Calculation bullish_cross = crossover(movingaverage_fast, movingaverage_normal) bearish_cross = crossunder(movingaverage_fast, movingaverage_normal) //Entry and Exit if bullish_cross and window() and movingaverage_slow > movingaverage_normal strategy.entry("long", strategy.long) strategy.close("long", when = bearish_cross and window()) // Colors bartrendcolor = close > movingaverage_fast and close > movingaverage_slow and change(movingaverage_slow) > 0 ? color.green : close < movingaverage_fast and close < movingaverage_slow and change(movingaverage_slow) < 0 ? color.red : color.blue barcolor(switch1?bartrendcolor:na) // Output plot(movingaverage_fast, color=color.orange, linewidth=2) plot(movingaverage_slow, color=color.purple, linewidth=3) plot(movingaverage_normal, color=color.blue, linewidth=2) bgcolor(color = showDate and window() ? color.gray : na, transp = 90)