Esta é uma estratégia que utiliza níveis-chave em diferentes prazos para gerar sinais de negociação de breakout duplo.
A estratégia analisa a ação dos preços simultaneamente em dois prazos diferentes (tf e tf2), sendo tf o período mais longo que reflete a tendência de médio a longo prazo e tf2 o período mais curto que reflete movimentos de curto prazo.
O sinal de negociação é formado quando up1 e up2 são verdadeiros juntos, indicando que longo e curto prazo são ambos de alta, vão longos; quando dn1 e dn2 são ambos verdadeiros, indicando longo e curto prazo ambos de baixa, vão curtos.
A estratégia também incorpora alguns filtros, como scalping inverso e candelabros coloridos, para evitar sinais errados de quebras não-trend.
Em geral, a estratégia aproveita plenamente a análise de quadros de tempo múltiplos, garantindo que a tendência a médio e longo prazo atenda às expectativas, evitando a interferência do ruído do mercado a curto prazo, gerando sinais de negociação de alta qualidade.
Captar as tendências de médio a longo prazo através da quebra dos níveis-chave
Ao monitorizar as rupturas dos níveis-chave em dois prazos, pode captar sinais claros de entrada nas fases de início da tendência.
A confirmação dupla reduz significativamente os falsos sinais
Requerendo breakouts simultâneos em dois intervalos de tempo diferentes reduz muito os sinais falsos de flutuações aleatórias, melhorando a qualidade do sinal.
Filtros como escalpes invertidos e candelabros coloridos
A adição de scalping inverso e filtros de velas coloridas pode remover alguns sinais de baixa qualidade e evitar grandes perdas.
Configurações simples de parâmetros
A estratégia requer apenas dois parâmetros de prazo para funcionar, oferece ajuste flexível para diferentes produtos.
Fácil de compreender e de otimizar
A estrutura clara facilita a compreensão da lógica e os parâmetros podem ser ajustados com base nas condições do mercado para otimização.
Entrada atrasada devido a dupla fuga
Em comparação com o single breakout, o dual breakout pode causar algum atraso na entrada, perdendo lucros iniciais de forte tendência.
Selecção do nível chave
A selecção dos níveis-chave adequados para os diferentes produtos e ciclos de mercado é muito importante, caso contrário pode gerar falsos sinais.
Falha de ruptura
Mesmo com fuga dupla, ainda há uma chance de falha de fuga e retirada rápida, causando perdas.
Prejuízo decorrente da inversão da tendência
As entradas de tendência tardias podem enfrentar uma reversão súbita, não podendo sair a tempo através de stop loss e incorrer em grandes perdas.
Optimização de parâmetros difícil
Embora simples, encontrar o conjunto de parâmetros ideal ainda requer testes extensos, com alta dificuldade de otimização.
Adicionar estratégias de stop loss
Pode definir trailing stop ou time stop para parar a perda antes que a perda se torne muito grande.
Otimize os filtros
Pode testar diferentes parâmetros de amplitude inversa do couro cabeludo ou outros métodos de filtragem.
Níveis de chave dinâmica
Fazer com que os níveis-chave mudem dinamicamente com as mudanças do mercado em vez de níveis estáticos.
Optimização de parâmetros multiproduto
Usar aprendizado de máquina para otimizar os melhores conjuntos de parâmetros para diferentes produtos.
Adicionar confirmação de volume
Incorporar confirmação de volume para evitar falsos sinais de ruptura sem volume.
Em geral, esta é uma estratégia de tendência simples e prática. Analisando dois prazos, entra em conformidade de direção de médio a longo prazo para filtrar o ruído efetivamente. Os sinais são claros e fáceis de interpretar, com configurações de parâmetros intuitivas. Mas também tem problemas como entrada desatualizada, dificuldade em selecionar níveis-chave. Em resumo, esta estratégia funciona melhor como uma ferramenta de validação de tendência para combinar com outros fatores, mas ainda tem muito espaço para otimização como um sistema de negociação autônomo.
/*backtest start: 2023-10-15 00:00:00 end: 2023-11-14 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=2 strategy(title = "Noro's Levels Strategy v1.0", shorttitle = "Levels 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, %") tf = input('W', title = "timeframe 1") tf2 = input('D', title = "timeframe 2") src = input(ohlc4, "Source") ap = input(true, defval = true, title = "antipila") cf = input(true, defval = true, title = "color filter") 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") //Signals level = request.security(syminfo.tickerid, tf, src[1]) level2 = request.security(syminfo.tickerid, tf2, src[1]) plot(level, linewidth = 3, color = silver) plot(level2, linewidth = 3, color = gray) up1 = close > level and ap == false ? true : low > level ? true : false dn1 = close < level and ap == false ? true : high < level ? 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 lot = strategy.position_size != strategy.position_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()