
A estratégia de ruptura de múltiplos períodos de tempo gera um sinal de negociação mais confiável através da combinação de sinais de ruptura de preço em dois períodos de tempo diferentes. A estratégia calcula simultaneamente os sinais de ruptura de preço em períodos de tempo mais curtos, como 1 hora, 2 horas, 3 horas e 4 horas, dia, para gerar sinais de compra ou venda na direção correspondente quando os sinais em ambos os períodos de tempo são sincronizados.
A lógica central da estratégia é calcular os sinais de ruptura de preços em dois períodos de tempo diferentes e depois fazer uma filtragem de correspondência. Concretamente, a estratégia calcula se o preço quebra o nível especificado em um período de tempo mais curto (por exemplo, a linha de 1 hora) e, correspondentemente, se o preço quebra o nível especificado em um período de tempo mais longo (por exemplo, a linha de 4 horas). A estratégia só produz um sinal de negociação quando a direção do sinal de ruptura em ambos os períodos de tempo é consistente, ou seja, quando o preço sobe ou desce em ambos os períodos de tempo.
A condição para gerar um sinal de compra é que o preço de fechamento ou o preço mais baixo no quadro de curto prazo e no quadro de longo prazo quebrem o nível de preço correspondente. A condição para gerar um sinal de venda é que o preço de fechamento ou o preço mais alto no quadro de curto prazo e no quadro de longo prazo quebrem o nível de preço correspondente.
A maior vantagem da estratégia é a alta confiabilidade de seus sinais de negociação. Ao exigir que o preço quebre o nível correspondente em ambos os períodos de tempo, pode-se efetivamente eliminar parte do ruído e evitar erros de negociação. Além disso, os sinais de ruptura em diferentes períodos de tempo podem ser verificados entre si, tornando as oportunidades de negociação mais eficazes.
O principal risco da estratégia é que, em períodos de Zeit em que o mercado está calmo, é fácil que os preços em ambos os períodos de tempo não tenham uma ruptura. Nesse caso, a estratégia não produzirá nenhum sinal de negociação e poderá perder oportunidades de negociação. Além disso, há um certo atraso entre os dois períodos de tempo, o que pode levar à ineficiência do sinal.
A estratégia pode ser otimizada de várias maneiras: 1) aumentar a lógica de stop loss para controlar o risco; 2) otimizar a combinação de prazos para aumentar a eficiência das negociações; 3) aumentar a combinação de prazos para tornar o sinal de negociação mais rigoroso; 4) filtrar em combinação com outros indicadores para melhorar a qualidade do sinal; 5) desenvolver mecanismos de saída para melhor controlar os lucros, etc.
A estratégia de ruptura de vários quadros de tempo, que compara as rupturas de preços em dois quadros de tempo para melhorar a qualidade do sinal, é uma estratégia de acompanhamento de tendências mais confiável. Mas também possui algumas falhas que podem ser otimizadas continuamente para torná-la uma estratégia de negociação quantitativa estável e confiável.
/*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()