Esta estratégia opera com base em rupturas de preços além dos extremos recentes.
Calcular o máximo máximo máximo e o mínimo mínimo dnex durante N períodos.
Faça long quando o preço ultrapassar o máximo.
Faça curto quando o preço cair abaixo de Dnex.
Configurável apenas para longo, curto ou em ambas as direcções.
Taxa de utilização do capital configurável.
Intervalo de tempo de negociação configurável.
A estratégia segue as tendências usando sinais de ruptura de preço. Aumentar a validade da ruptura e ajustar os parâmetros pode melhorar o desempenho. Mas falhas de ruptura e controles de risco precisam ser abordados.
/*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()