En la carga de los recursos... Cargando...

Estrategia de ruptura de múltiples marcos de tiempo

El autor:¿ Qué pasa?, Fecha: 2023-12-29 16:17:56
Las etiquetas:

img

Resumen general

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.

Estrategia lógica

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.

Análisis de ventajas

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.

Análisis de riesgos

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.

Direcciones de optimización

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.

Conclusión

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()

Más.