Estrategia de ruptura de marcos temporales múltiples


Fecha de creación: 2023-12-29 16:17:56 Última modificación: 2023-12-29 16:18:22
Copiar: 0 Número de Visitas: 632
1
Seguir
1621
Seguidores

Estrategia de ruptura de marcos temporales múltiples

Descripción general

La estrategia de ruptura de múltiples marcos de tiempo genera una señal de negociación más confiable mediante el uso combinado de señales de ruptura de precios en dos marcos de tiempo diferentes. La estrategia calcula al mismo tiempo las señales de ruptura de precios en marcos de tiempo más cortos como 1 hora, 2 horas, 3 horas y en marcos de tiempo más largos como 4 horas y la línea del sol.

Principio de estrategia

La lógica central de la estrategia es calcular las señales de ruptura de precios en dos marcos de tiempo diferentes, y luego hacer un filtro de correspondencia. En concreto, la estrategia calcula si el precio supera el nivel especificado en un marco de tiempo más corto (por ejemplo, la línea de 1 hora) y, en consecuencia, si el precio supera el nivel especificado en un marco de tiempo más largo (por ejemplo, la línea de 4 horas). La estrategia solo genera una señal de negociación cuando la dirección de la señal de ruptura en los dos marcos de tiempo coincide, es decir, cuando el precio sube o baja por encima del nivel especificado en ambos marcos de tiempo.

La condición para generar una señal de compra es que el precio de cierre o el precio más bajo en el marco de tiempo corto y el precio más bajo en el marco de tiempo largo superen el nivel de precio correspondiente. La condición para generar una señal de venta es que el precio de cierre o el precio más alto en el marco de tiempo corto y el marco de tiempo largo superen el nivel de precio correspondiente.

Análisis de las ventajas

La mayor ventaja de esta estrategia reside en su alta fiabilidad de la señal de negociación. Se puede eliminar parte del ruido y evitar errores de negociación al exigir que el precio rompa el nivel correspondiente en ambos marcos de tiempo. Además, las señales de ruptura en diferentes marcos de tiempo se pueden verificar entre sí, lo que hace que las oportunidades de negociación sean más efectivas.

Análisis de riesgos

El principal riesgo de esta estrategia es que, en un período de Zeit en el que el mercado está tranquilo, los precios en ambos marcos de tiempo son propensos a no tener una ruptura. En este caso, la estrategia no generará ninguna señal de negociación, y es posible que se pierda una oportunidad de negociación. Además, existe un cierto retraso entre los dos marcos de tiempo, lo que puede causar una ineficiencia de la señal. Además, la estrategia no tiene una lógica de stop loss, existe un gran riesgo.

Dirección de optimización

La estrategia puede optimizarse en los siguientes aspectos: 1) aumentar la lógica de stop loss para controlar el riesgo; 2) optimizar la combinación de los marcos de tiempo para mejorar la eficiencia de la negociación; 3) aumentar la combinación de más marcos de tiempo para hacer que las señales de negociación sean más rigurosas; 4) combinar filtración con otros indicadores para mejorar la calidad de la señal; 5) desarrollar mecanismos de salida para controlar mejor las ganancias, etc.

Resumir

La estrategia de ruptura de múltiples marcos de tiempo mejora la calidad de la señal al comparar las rupturas de precios en dos marcos de tiempo. Es una estrategia de seguimiento de tendencias más confiable. Sin embargo, también tiene ciertos defectos que se pueden optimizar continuamente para convertirla en una estrategia de negociación cuantitativa estable y confiable.

Código Fuente de la Estrategia
/*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()