La estrategia de breakout multiframe genera señales de trading más confiables al combinar señales de breakout de precios de dos marcos de tiempo diferentes. La estrategia calcula señales de breakout de precios simultáneamente en marcos de tiempo más cortos como 1 hora, 2 horas, 3 horas, etc. y marcos de tiempo más largos como 4 horas, diarios, etc. Solo generará señales de compra o venta cuando las señales de los dos marcos de tiempo estén en la misma dirección para la ejecución de las operaciones correspondientes.
La lógica central de esta estrategia es calcular las señales de ruptura de precios en dos marcos de tiempo diferentes, respectivamente, y luego combinarlas para filtrar. Específicamente, la estrategia comprobará si los precios rompen ciertos niveles en un marco de tiempo más corto (por ejemplo, 1 hora) y también si los precios rompen los niveles correspondientes en un marco de tiempo más largo (por ejemplo, 4 horas). Solo cuando las señales de ruptura de los dos marcos de tiempo estén en la misma dirección, es decir, los precios en ambos marcos de tiempo rompan hacia arriba o hacia abajo, la estrategia generará señales comerciales.
La condición para una señal de compra es que los precios de cierre o los precios bajos en los marcos de tiempo más cortos y más largos superen sus niveles de precio. La condición para una señal de venta es que los precios de cierre o los precios altos en ambos marcos de tiempo superen sus niveles. Al emparejar las señales a través de los marcos de tiempo de esta manera, la estrategia puede filtrar algunas señales falsas y hacer que las señales sean más confiables.
La mayor ventaja de esta estrategia es la mayor confiabilidad de sus señales de negociación. Al requerir breakouts de precios en niveles en dos marcos de tiempo, puede filtrar efectivamente algo de ruido y evitar malas operaciones. Además, las señales de breakout de diferentes marcos de tiempo pueden validarse entre sí, lo que hace que las oportunidades comerciales sean más eficientes. Además, la estrategia ofrece cierta flexibilidad al permitir a los usuarios elegir marcos de tiempo para combinar y fuente de datos, etc. según sus propias necesidades.
El principal riesgo de esta estrategia es que durante el Zeitgeist del mercado tranquilo, los precios no pueden romper en ninguno de los marcos de tiempo. En ese caso, la estrategia no generará ninguna señal de negociación y puede perder oportunidades. Además, hay un cierto retraso de tiempo entre los dos marcos de tiempo que puede conducir a señales ineficientes. Además, la estrategia no incluye lógica de stop loss y tiene mayores riesgos.
Esta estrategia se puede optimizar en los siguientes aspectos: 1) Añadir una lógica de stop loss para controlar los riesgos; 2) Optimizar las combinaciones de marcos de tiempo para mejorar la eficiencia; 3) Añadir más marcos de tiempo para la combinación para hacer que las señales comerciales sean más estrictas; 4) Incorporar otros indicadores para filtrar para mejorar la calidad de la señal; 5) Desarrollar mecanismos de salida para controlar mejor las ganancias, etc.
La estrategia de breakout multiframe mejora la calidad de la señal comparando las breakouts de precios a través de los marcos de tiempo y es una estrategia de seguimiento de tendencia relativamente confiable.
/*backtest start: 2023-11-28 00:00:00 end: 2023-12-28 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's Levels Strategy v1.1", shorttitle = "Levels str 1.1", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") tf1 = input('W', title = "timeframe 1") tf2 = input('D', title = "timeframe 2") src = input(ohlc4, "Source") ap = input(true, defval = true, title = "use saw filter") cf = input(true, defval = true, title = "гыу color filter") showlines = input(true, defval = true, title = "Show lines") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //Levels level1 = request.security(syminfo.tickerid, tf1, src) level2 = request.security(syminfo.tickerid, tf2, src) col = showlines ? silver : na p1 = plot(level1, linewidth = 3, color = col, title = "Level 1") p2 = plot(level2, linewidth = 3, color = col, title = "Level 2") //Signals up1 = close > level1 and ap == false ? true : low > level1 ? true : false dn1 = close < level1 and ap == false ? true : high < level1 ? true : false up2 = close > level2 and ap == false ? true : low > level2 ? true : false dn2 = close < level2 and ap == false ? true : high < level2 ? true : false //Trading size = strategy.position_size lot = 0.0 lot := size != size[1] ? strategy.equity / close * capital / 100 : lot[1] if up1 and up2 and (close < open or cf == false) strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if dn1 and dn2 and (close > open or cf == false) strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, when = (time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()