Esta estrategia utiliza el principio de cruce de la media móvil para determinar la dirección de la tendencia y generar señales de compra y venta.
La estrategia emplea dos promedios móviles, un MA de 7 días como la línea rápida y un MA de 5 meses como la línea lenta. La línea rápida captura los cambios de precio rápidamente mientras que la línea lenta filtra el ruido y determina la dirección de la tendencia. Cuando la línea rápida se rompe por encima de la línea lenta desde abajo, se considera una señal alcista para ir largo. Cuando la línea rápida rompe la línea lenta desde arriba, se considera una señal bajista para ir corto.
Específicamente, la estrategia calcula la media móvil simple de 7 días (SMA) y la SMA de 5 meses, trazandolas en el gráfico de precios. Cuando la línea de 7 días cruza por encima de la línea de 5 meses desde abajo, se genera una señal de compra. Cuando la línea de 7 días cruza por debajo de la línea de 5 meses desde arriba, se activa una señal de venta. La estrategia también visualiza los períodos de señal.
La estrategia tiene las siguientes ventajas:
Una base teórica simple y fiable, basada en el conocido principio de cruce de la media móvil.
Solo se utilizan dos medias móviles, con una selección de parámetros sencilla y una fácil aplicación.
Las líneas rápidas y lentas trabajan juntas eficazmente para identificar tendencias y filtrar el ruido del mercado.
Los diferentes marcos de tiempo se capturan a través de diferentes periodos de MAs, detectando cambios de tendencia en múltiples escalas.
Implementación sencilla con lógica clara y fácil de entender.
Las señales visualizadas son claras e intuitivas para decidir las operaciones.
También hay algunos riesgos:
Es propenso a señales falsas basándose únicamente en cruces MA.
Incapacidad para juzgar la fuerza de la tendencia de manera efectiva, causando frecuentes pérdidas de parada en mercados variados.
Los períodos de admisión fijos no pueden adaptarse a los cambios del mercado, lo que requiere una optimización de los parámetros.
Los niveles de entrada y salida no están claros, con algunos riesgos.
Una base teórica simplista puede comprometer el rendimiento y el potencial de ganancia.
La estrategia puede mejorarse en los siguientes aspectos:
Añadir otros indicadores para determinar los niveles de entrada y salida, tales como KDJ para sobrecompra/sobreventa.
Implementar mecanismos de detención de pérdidas como la detención posterior para limitar las pérdidas.
Optimizar los períodos de autorización para adaptarse a los diferentes ciclos del mercado.
Agregue el filtro de volumen para evitar falsos brotes.
Evaluar la fuerza de la tendencia, por ejemplo, la pendiente MA, para escalar el tamaño de la posición.
Incorporar múltiples marcos de tiempo para una mejor continuidad de tendencia.
La estrategia identifica tendencias alcista/osera de manera simple y confiable basada en la teoría del cruce MA. Los pros son la simplicidad y facilidad de uso, mientras que los contras son los riesgos inherentes a la tendencia.
/*backtest start: 2022-09-30 00:00:00 end: 2023-10-06 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © dadashkadir //@version=4 strategy("Mount MaV - Day MaV CrossOver Strgty", shorttitle="Yusram Str.", overlay=true) src = input(title= "Kaynak", type=input.source, defval=close) mav = input(title="Hareketli Ortlama Tipi", defval="SMA", options=["SMA", "EMA", "WMA"]) Gbar = input(title="Günlük Bar Sayısı", defval=7, minval=1, maxval=999) Abar = input(title="Aylık Bar Sayısı", defval=5, minval=1, maxval=999) //displacement = input(20, minval=1, title="Displacement") getMA(src, length) => ma = 0.0 if mav == "SMA" ma := sma(src, length) ma if mav == "EMA" ma := ema(src, length) ma if mav == "WMA" ma := wma(src, length) ma ma long = "M" //Aylık ln = security(syminfo.ticker, long, src) lnma = getMA(ln, Abar) gnma = getMA(src, Gbar) col1= gnma>gnma[1] col3= gnma<gnma[1] colorM = col1 ? color.green : col3 ? color.navy : color.yellow l1 = plot(lnma, title="MhO", trackprice = true, style=plot.style_line, color=color.red, linewidth=3) l2 = plot(gnma, title="DhO", trackprice = true, style=plot.style_line, color=colorM, linewidth=3) fill(l1, l2, color = lnma < gnma ? color.green : color.red, title="Gölgelendirme", transp=90) zamanaralik = input (2020, title="Backtest Başlangıç Tarihi") al = crossover (gnma, lnma) and zamanaralik <= year sat = crossover (lnma, gnma) and zamanaralik <= year plotshape(al, title = "Giriş", text = 'Al', style = shape.labelup, location = location.belowbar, color= color.green, textcolor = color.white, transp = 0, size = size.tiny) plotshape(sat, title = "Çıkış", text = 'Sat', style = shape.labeldown, location = location.abovebar, color= color.red, textcolor = color.white, transp = 0, size = size.tiny) FromDay = input(defval = 1, title = "Str. Başlama Tarihi Gün", minval = 1, maxval = 31) FromMonth = input(defval = 1, title = "Str. Başlama Tarihi Ay", minval = 1, maxval = 12) FromYear = input(defval = 2015, title = "Str. Başlama Tarihi Yıl", minval = 2005) ToDay = input(defval = 1, title = "Str. Bitiş Tarihi Gün", minval = 1, maxval = 31) ToMonth = input(defval = 1, title = "Str. Bitiş Tarihi Ay", minval = 1, maxval = 12) ToYear = input(defval = 9999, title = "Str. Bitiş Tarihi Yıl", minval = 2006) Start = timestamp(FromYear, FromMonth, FromDay, 00, 00) Finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) Timerange() => time >= Start and time <= Finish ? true : false if al strategy.entry("Al", strategy.long, when=Timerange()) if sat strategy.entry("Sat", strategy.short, when=Timerange())