Esta estrategia utiliza cruces medios móviles entre diferentes marcos de tiempo para generar señales comerciales. Permite observar MAs de marcos de tiempo más largos en el gráfico actual para detectar tendencias más grandes.
La estrategia utiliza dos promedios móviles calculados en marcos de tiempo separados.
Por ejemplo, en el gráfico de 15 minutos utiliza 20MA y 50MA:
Cuando 15min 20MA cruza por encima de 50MA diarios, se hace largo.
Esto consigue el efecto de observar tendencias de margen de tiempo más largo en el período actual.
Los puntos de cruce pueden marcarse para señales comerciales claras.
Los riesgos pueden reducirse:
La estrategia puede mejorarse mediante:
Prueba de más combinaciones de períodos de MA para la optimización
Añadir confirmación secundaria cuando ocurre el cruce
Por ejemplo, comprobar el impulso del MACD
Optimización de las paradas para evitar una salida prematura
Considera la evidencia de Post123 para decidir las salidas
Diferentes filtros para TF corto y largo
Más estricto para TF corto, más relajado para TF largo
Considere diferentes conjuntos de parámetros para diferentes sesiones
Las condiciones del mercado varían según las sesiones
Esta estrategia observa los cruces entre los MAs de múltiples marcos de tiempo para determinar la dirección de la tendencia y descubrir tendencias más grandes. Esto filtra ruidos a corto plazo y se centra en movimientos de precios más grandes. Sin embargo, existen desafíos como la sintonización de marcos de tiempo y las señales rezagadas. Las mejoras se pueden hacer a través de rigurosas pruebas de retroceso y optimización para parámetros robustos, agregando filtros para confirmación, validación en vivo para mejoras continuas de acuerdo con la retroalimentación del mercado.
/*backtest start: 2022-09-14 00:00:00 end: 2023-09-20 00:00:00 period: 7d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 //Run script on a long interval gives better result for e.g. 1 Day //Plots The Majority of Moving Averages //Defaults to Current Chart Time Frame --- But Can Be Changed to Higher Or Lower Time Frames //2nd MA Capability with Show Crosses Feature //study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true) strategy("Stratergy CM_Ultimate_MA_MTF", shorttitle = "Stratergy CM_Ultimate_MA_MTF", overlay = true) //,default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) //inputs src = close useCurrentRes = input(true, title="Use Current Chart Resolution?") resCustom = input(title="Use Different Timeframe? Uncheck Box Above", defval="D") len = input(20, title="Moving Average Length - LookBack Period") atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA") cc = input(true,title="Change Color Based On Direction?") smoothe = input(2, minval=1, maxval=10, title="Color Smoothing - 1 = No Smoothing") doma2 = input(false, title="Optional 2nd Moving Average") len2 = input(50, title="Moving Average Length - Optional 2nd MA") atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA") cc2 = input(true,title="Change Color Based On Direction 2nd MA?") warn = input(false, title="***You Can Turn On The Show Dots Parameter Below Without Plotting 2nd MA to See Crosses***") warn2 = input(false, title="***If Using Cross Feature W/O Plotting 2ndMA - Make Sure 2ndMA Parameters are Set Correctly***") sd = input(false, title="Show Dots on Cross of Both MA's") res = useCurrentRes ? timeframe.period : resCustom //hull ma definition hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len))) //TEMA definition ema1 = ema(src, len) ema2 = ema(ema1, len) ema3 = ema(ema2, len) tema = 3 * (ema1 - ema2) + ema3 avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema //2nd Ma - hull ma definition hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2))) //2nd MA TEMA definition sema1 = ema(src, len2) sema2 = ema(sema1, len2) sema3 = ema(sema2, len2) stema = 3 * (sema1 - sema2) + sema3 avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema out = avg out_two = avg2 out1 = security(syminfo.tickerid, res, out) out2 = security(syminfo.tickerid, res, out_two) ma_up = out1 >= out1[smoothe] ma_down = out1 < out1[smoothe] col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua circleYPosition = out2 chk=col==red?1:0 if (not na(chk)) if (chk[1]==1 and chk==0) strategy.entry("RsiLE", strategy.long, comment="RsiLE") else strategy.exit("RsiLE") if (chk[1]==0 and chk==1) strategy.entry("RsiSE", strategy.short, comment="RsiLE") else strategy.exit("RsiSE") plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col) plot(doma2 and out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2) plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)