Esta estrategia opera basándose en las rupturas de precios más allá de los extremos recientes.
Calcular el máximo máximo máximo y el mínimo mínimo dnex durante N períodos.
Ir largo cuando el precio se rompe por encima de lo máximo.
Ir corto cuando el precio se rompe por debajo de dnex.
Configurable sólo para largo, sólo para corto o para ambas direcciones.
Tasa de utilización del capital configurable.
Intervalo de tiempo de negociación configurable.
La estrategia sigue las tendencias utilizando señales de ruptura de precios. Mejorar la validez de la ruptura y los parámetros de ajuste puede mejorar el rendimiento. Pero se deben abordar las rupturas falsas y los controles de riesgo. En general, una solución de negociación de tendencias simple y efectiva.
/*backtest start: 2023-09-18 00:00:00 end: 2023-09-20 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Brakeout Strategy v1.0", shorttitle = "Brakeout str 1.0", 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, %") len = input(4, defval = 4, minval = 1, maxval = 1000, title = "Length") 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") //Extremums upex = highest(high, len) dnex = lowest(low, len) col = showlines ? blue : na plot(upex, color = col, linewidth = 2) plot(dnex, color = col, linewidth = 2) //Trading lot = strategy.position_size == 0 ? strategy.equity / close * capital / 100 : lot[1] if (not na(close[len])) 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)), stop = upex + syminfo.mintick) 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)), stop = dnex - syminfo.mintick) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()