A estratégia de breakout multiframe gera sinais de negociação mais confiáveis combinando sinais de breakout de preço de dois prazos diferentes. A estratégia calcula sinais de breakout de preço simultaneamente em prazos mais curtos, como 1 hora, 2 horas, 3 horas, etc. e prazos mais longos, como 4 horas, diariamente, etc. Só gerará sinais de compra ou venda quando os sinais dos dois prazos estiverem na mesma direção para a execução de negociações correspondentes.
A lógica central desta estratégia é calcular sinais de ruptura de preço em dois prazos diferentes, respectivamente, e depois combiná-los para filtragem. Especificamente, a estratégia verificará se os preços quebram certos níveis em um período de tempo mais curto (por exemplo, 1 hora) e também se os preços quebram níveis correspondentes em um período de tempo mais longo (por exemplo, 4 horas). Somente quando os sinais de ruptura dos dois prazos estão na mesma direção, ou seja, os preços em ambos os prazos quebram para cima ou para baixo, a estratégia gerará sinais de negociação.
A condição para um sinal de compra é que os preços de fechamento ou preços baixos em ambos os prazos mais curtos e mais longos quebrem acima de seus níveis de preço. A condição para um sinal de venda é que os preços de fechamento ou preços altos em ambos os prazos quebrem abaixo de seus níveis. Ao combinar sinais em todos os prazos dessa maneira, a estratégia pode filtrar alguns sinais falsos e tornar os sinais mais confiáveis.
A maior vantagem desta estratégia é a maior confiabilidade de seus sinais de negociação. Ao exigir que os preços se rompam em níveis em dois prazos, ele pode efetivamente filtrar algum ruído e evitar maus negócios. Além disso, os sinais de ruptura de diferentes prazos podem se validar, tornando as oportunidades de negociação mais eficientes. Além disso, a estratégia oferece alguma flexibilidade, permitindo que os usuários escolham prazos para combinar e fonte de dados etc. de acordo com suas próprias necessidades.
O principal risco desta estratégia é que durante o Zeitgeist do mercado calmo, os preços podem não quebrar em nenhum dos prazos. Nesse caso, a estratégia não gerará nenhum sinal de negociação e pode perder oportunidades. Além disso, há algum atraso de tempo entre os dois prazos, o que pode levar a sinais ineficientes. Além disso, a estratégia não inclui lógica de stop loss e tem riscos maiores.
Esta estratégia pode ser otimizada nos seguintes aspectos: 1) Adicionar uma lógica de stop loss para controlar os riscos; 2) Otimizar combinações de prazos para melhorar a eficiência; 3) Adicionar mais prazos para combinação para tornar os sinais de negociação mais rigorosos; 4) Incorporar outros indicadores para filtragem para melhorar a qualidade do sinal; 5) Desenvolver mecanismos de saída para controlar melhor os lucros, etc.
A estratégia de breakout multi-frame melhora a qualidade do sinal comparando os breakouts de preços em diferentes prazos e é uma estratégia de tendência relativamente confiável, mas também tem algumas falhas.
/*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()