Estratégia de níveis de dupla ruptura de intervalo de tempo

Autora:ChaoZhang, Data: 2023-11-15 17:27:36
Tags:

img

Resumo

Esta é uma estratégia que utiliza níveis-chave em diferentes prazos para gerar sinais de negociação de breakout duplo.

Estratégia lógica

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.

  1. Quando o preço ultrapassa o nível (nível) no período de tempo tf, registar up1=true
  2. Quando o preço quebra abaixo do nível no período de tempo tf, registre dn1=true
  3. Quando o preço ultrapassa o nível (nível2) no período de tempo tf2, registar up2=true
  4. Quando o preço quebra abaixo do nível no período de tempo tf2, registre dn2=verdadeiro

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.

Análise das vantagens

  1. 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.

  2. 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.

  3. 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.

  4. 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.

  5. 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.

Análise de riscos

  1. 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.

  2. 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.

  3. Falha de ruptura

    Mesmo com fuga dupla, ainda há uma chance de falha de fuga e retirada rápida, causando perdas.

  4. 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.

  5. 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.

Orientações de otimização

  1. 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.

  2. Otimize os filtros

    Pode testar diferentes parâmetros de amplitude inversa do couro cabeludo ou outros métodos de filtragem.

  3. 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.

  4. Optimização de parâmetros multiproduto

    Usar aprendizado de máquina para otimizar os melhores conjuntos de parâmetros para diferentes produtos.

  5. Adicionar confirmação de volume

    Incorporar confirmação de volume para evitar falsos sinais de ruptura sem volume.

Resumo

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()

Mais.