Esta es una estrategia simple y clásica de cruce de promedios móviles creada por el famoso operador Larry Williams. La estrategia utiliza promedios móviles simples de 9 días como línea rápida y promedios móviles exponenciales de 21 días como línea lenta.
La estrategia se basa en el cruce dorado y cruce de muerte de los promedios móviles para determinar oportunidades largas y cortas. Cuando la línea rápida se rompe por encima de la línea lenta desde abajo, es un cruce dorado, lo que indica un cambio a una tendencia alcista. Tal ruptura se utiliza para ir largo. Cuando la línea rápida se rompe por debajo de la línea lenta desde arriba, es un cruce de muerte, lo que indica un cambio a una tendencia bajista.
Para evitar falsas rupturas que conducen a pérdidas virtuales, la línea de 21 días también se utiliza para determinar la tendencia principal. Solo cuando la línea rápida se rompe y el precio también rompe la línea de 21 días, se tomarán acciones comerciales. Esto puede filtrar efectivamente muchas rupturas falsas.
Específicamente, la señal larga se activa cuando: la línea rápida se rompe por encima del máximo de ayer y se rompe por encima de la línea de 21 días. La señal corta se activa cuando: la línea rápida se rompe por debajo del mínimo de ayer y se rompe por debajo de la línea de 21 días.
Las principales ventajas de esta estrategia son las siguientes:
Los principales riesgos de esta estrategia son:
Para hacer frente a estos riesgos, se pueden realizar optimizaciones en los siguientes aspectos:
Las principales direcciones de optimización para esta estrategia incluyen:
Optimización de parámetros: se pueden utilizar métodos más sistemáticos para probar diferentes combinaciones de períodos de MA para encontrar mejores parámetros.
Agregue stop loss. Establezca el stop loss móvil adecuado, el stop loss porcentual, etc. para controlar eficazmente la pérdida de una sola operación.
Combinar otros indicadores, introducir señales del MACD, ATR, KD, etc. para obtener más dimensiones de confirmación y mejorar la estabilidad de la estrategia.
Investigar diferentes tipos de métodos de salida como salidas de señal de reversión, salidas de movimiento para obtener beneficios, etc.
En resumen, esta estrategia de cruce de promedios móviles es una estrategia de seguimiento de tendencias muy típica y práctica. Tiene la ventaja de ser fácil de entender e implementar, y también tiene margen de mejora. A través de métodos como optimización de parámetros, optimización de pérdidas de parada, combinación de múltiples indicadores, etc., se pueden hacer mejoras continuas para convertirlo en un sistema de trading más estable y práctico.
// @_benac //@version=5 strategy('Larry', overlay=true , initial_capital=1000 ) //////////////////////////////////////////////////////// // // // // // Codigo Operacional // // // // // //////////////////////////////////////////////////////// // Usage for Stocks , or Criptos with value bigger then 1, cuz of 0.01 ´pip. // Daily timeframe //Observation Point start = timestamp(2020, 00, 00, 00, 00) // backtest start window finish = timestamp(2022, 01, 07, 23, 59) // backtest finish window window() => true // create function "within window of time" if time < start strategy.close_all("Closing All") // Take infos from inputs. inp_mmshort = input.int(defval = 9, title = "Media Curta" ) inp_mminter = input.int(defval = 21, title = "Media Curta" ) // Risk Manager, here define max and min inp_max = input.int(defval = 15, title = "Percentual Ganho" ) inp_min = input.int(defval = 5, title = "Percental Perda" ) // Converting the input to % pmax = (inp_max / 100 ) pmin = (inp_min / 100) // Infos From Moving Average mm_short = ta.sma(close , inp_mmshort) mm_inter = ta.ema(close , inp_mminter) // Trend Logic //Long Condition //Setup do Larry Willians Bem Simples , media virou para cima e rompeu a maxima de referencia, compra. tendencia_alta = mm_short[2] > mm_short[1] and mm_short > mm_short[1] and close > high[1] and close > mm_short and mm_short > mm_inter tendencia_baixa = mm_short[2] < mm_short[1] and mm_short < mm_short[1] and close > low[1] and close < mm_short and mm_short < mm_inter // Creating the entry if tendencia_alta strategy.entry("Compra" , strategy.long , stop = low - 0.01 ) stop_inst = low - 0.01 if tendencia_baixa strategy.entry("Venda" , strategy.short , stop= high + 0.01 ) stop_inst = high + 0.01 // TrailingStop Creation // Sell Position if strategy.position_size < 0 gain_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmax) stop_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmin) // Managing the position if close < gain_p strategy.close_all(comment = " 1 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p) ) if close > stop_p strategy.close_all(comment = " 2 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p) ) if high > mm_short[1] strategy.close_all(comment = " 3 - Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p) ) // Buy Position if strategy.position_size > 0 gain_p = strategy.opentrades.entry_price(0) + (strategy.opentrades.entry_price(0) * pmax) stop_p = strategy.opentrades.entry_price(0) - (strategy.opentrades.entry_price(0) * pmin) // Managing the position if close > gain_p strategy.close_all(comment = " 1- Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p) ) if close < stop_p strategy.close_all(comment = " 2 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p) ) if low < mm_short[1] strategy.close_all(comment = " 3 -Ganho : " + str.tostring( gain_p) + " Perda : " + str.tostring( stop_p) )