Estratégia de Breakout Oscilante


Data de criação: 2023-10-20 16:37:28 última modificação: 2023-10-20 16:37:28
cópia: 0 Cliques: 943
1
focar em
1617
Seguidores

Estratégia de Breakout Oscilante

Visão geral

A estratégia usa o indicador ZigZag para traçar as linhas de suporte e resistência e, quando o preço quebra a linha de suporte ou resistência, toma as correspondentes operações de ação ou de ação.

Princípio da estratégia

A estratégia primeiro usa o indicador ZigZag para traçar uma linha Z em um determinado parâmetro. Em seguida, desenhe uma linha de suporte verde quando o indicador ZigZag aparece no fundo e uma linha de resistência vermelha quando aparece no topo. Faça mais quando o preço atravessa a linha verde e deixe vazio quando ele atravessa a linha vermelha.

A lógica central da estratégia é, especificamente:

  1. Uma média móvel indexada três vezes com o preço de fechamento em emá, obtendo uma curva suave.

  2. Para determinar se a curva de planeamento está subindo, se ela está subindo e a linha K anterior não está subindo, marque o valor mínimo da linha K. Se ela está descendo e a linha K anterior está subindo, marque o valor máximo da linha K. Caso contrário, marque o valor máximo da linha K.

  3. Repetindo este processo, obtemos a linha zigzag.

  4. Quando o zigzag sobe, anote-o como o ponto de topo atual; quando desce, anote-o como o ponto de fundo atual.

  5. Quando o ponto sobe, trace a linha de suporte em verde uplevel; quando o ponto desce, trace a linha de resistência em vermelho dnlevel。

  6. Quando o preço sobe na linha verde, faça mais, e quando cai na linha vermelha, faça menos.

Análise de vantagens

A estratégia tem as seguintes vantagens:

  1. O indicador ZigZag é usado para identificar os pontos de resistência de suporte críticos, que geralmente são importantes.

  2. O ZigZag elimina parte do ruído do mercado, tornando os sinais de negociação mais claros.

  3. A entrada é feita de forma inovadora, permitindo a captura de uma mudança de tendência em tempo hábil.

  4. O desenho das linhas de resistência é simples e eficaz.

  5. A lógica da estratégia é clara e fácil de entender, com grande espaço para otimização de parâmetros.

  6. Flexível na escolha de variedades e períodos de tempo de negociação, forte adaptabilidade.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. A configuração inadequada dos parâmetros do indicador ZigZag pode levar a oportunidades de negociação perdidas.

  2. O nível de resistência de suporte pode ser re-testado após a ruptura, e o risco deve ser controlado com um stop loss.

  3. Os sinais de ruptura podem ser enganosos e devem ser verificados em combinação com a tendência e a forma.

  4. Os mercados podem sofrer oscilações horizontais prolongadas, quando a estratégia pode produzir muitos negócios inválidos.

  5. Os custos de transação devem ser considerados, evitando transações excessivamente frequentes.

A resposta é:

  1. Optimizar os parâmetros ZigZag para encontrar a melhor combinação de parâmetros.

  2. O sistema de stop loss foi criado para controlar as perdas individuais após a ruptura.

  3. Combinação de indicadores de tendência com sinais de filtragem para melhorar a precisão.

  4. A adição de condições para identificar o mercado de liquidação, durante o qual não há negociação.

  5. A liberalização adequada da brecha para reduzir as transações inválidas.

Direção de otimização

A estratégia pode ser melhorada em vários aspectos:

  1. Otimizar os parâmetros ZigZag para encontrar a melhor combinação de parâmetros.

  2. Considere a possibilidade de testar novamente o ponto de resistência de suporte após a entrada de ruptura e configure a lógica de saída para o retestamento.

  3. A combinação de indicadores de tendência como a MA para filtrar sinais de negociação de baixa probabilidade.

  4. Aumentar o indicador de potência para confirmar o sinal de ruptura e evitar o sinal de erro.

  5. Configurar o método dual mencionado por Lachenbruch (fazer mais vazio ao mesmo tempo) para filtrar os sinais errados e lucrar.

  6. Considere o uso de algoritmos como o aprendizado de máquina para otimizar dinamicamente os parâmetros.

  7. Introduzir estratégias de stop loss e definir pontos de stop loss para controlar o risco.

Resumir

A estratégia, em geral, é uma estratégia de ruptura de choque simples e prática. Ela usa o indicador ZigZag para traçar as linhas de apoio e resistência e agir quando o preço quebra essas linhas. A estratégia tem uma forte adaptabilidade, mas também existe um certo risco.

Código-fonte da estratégia
/*backtest
start: 2022-10-13 00:00:00
end: 2023-10-19 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//Noro
//2018

//@version=3
// strategy(title = "Noro's ZZ-2 Strategy", shorttitle = "Noro's ZZ-2 Strategy", 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, %")
length = input(4, title = "ZigZag length")
Extreme = input(4, title = "ZigZag extreme")
src = input(close, title = "Source")
showzz = input(false, defval = false, title = "Show ZigZag")
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")

//ZigZag
f_zz(_length, _detection)=>
    _hls = ema(ema(ema(src, _length), round(_length*0.66)), round(_length*0.33))
    _isRising = _hls >= _hls[1]
    _zigzag = _isRising and not _isRising[1] ? lowest(_detection) :  not _isRising and _isRising[1] ? highest(_detection) : na
zigzag = f_zz(length, Extreme)
zzcol = showzz ? black : na
plot(zigzag, color = zzcol, linewidth = 2)

//Levels
dot = 0.0
dot := zigzag > 0 ? zigzag : dot[1]
uplevel = 0.0
uplevel := dot > dot[1] ? zigzag : uplevel[1]
dnlevel = 0.0
dnlevel := dot < dot[1] ? zigzag : dnlevel[1]
upcol = na
upcol := dot > dot[1] ? na : lime
plot(uplevel, color = upcol, linewidth = 2)
dncol = na
dncol := dot < dot[1] ? na : red
plot(dnlevel, color = dncol, linewidth = 2)

//Trading
lot = 0.0
lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1]
if dot > 0
    strategy.entry("Long", strategy.long, needlong == false ? 0 : lot, stop = uplevel)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : lot, stop = dnlevel)