Estratégia de reversão de ruptura com stop loss

Autora:ChaoZhang, Data: 2024-02-05 14:56:16
Tags:

img

Resumo

Esta é uma estratégia de negociação quantitativa longa/curta baseada na teoria do breakout. Ela calcula o preço de fechamento mais alto nos últimos 100 dias de negociação e determina se um breakout acontece com base em se o último preço de fechamento excede esse nível. Se um breakout for detectado, um sinal longo é acionado. Depois de entrar no longo, a posição será fechada por um stop loss após 25 barras.

Estratégia lógica

A lógica central desta estratégia aproveita a teoria do "breakout" na análise técnica. A teoria do "breakout" acredita que quando o preço atravessa o nível mais alto ou mais baixo recente durante um período de tempo, ele sinaliza uma reversão e o mercado pode iniciar uma nova tendência de alta ou baixa.

Especificamente, esta estratégia usa o Pine Script função incorporadata.highest()Para calcular o maior fechamento nos últimos 100 bares. Em seguida, compara se o preço de fechamento do bar atual é superior a esse nível.

Uma vez que entra numa posição longa, a estratégia define uma condição de stop loss para fechar a posição.ta.barssince()para contar o número de barras decorridas desde a entrada longa, forçará a fechar a posição após 25 barras.

A lógica de entrada pode ser resumida como:

  1. Calcular o maior fechamento dos últimos 100 dias de negociação
  2. Comparar se o preço de fechamento da barra corrente excede o preço de fechamento mais elevado
  3. Se exceder, desencadear o sinal de entrada longa
  4. Fechar posição longa através de stop loss após 25 bar

Análise das vantagens

A maior vantagem desta estratégia é capturar pontos de reversão de preço com taxa de sucesso relativamente alta de negociações seguindo tendências.

As vantagens concretas são:

1. Seguir tendências, maior taxa de sucesso

A teoria do breakout acredita que depois que o preço excede um nível chave, ele pode iniciar uma nova tendência.

2. Risco controlado, com stop loss

A estratégia define uma saída forçada de stop loss após 25 bares para perda máxima de uma única negociação, evitando grandes perdas.

3. Adequado para a detenção a médio e longo prazo

O período de retenção padrão é de 25 bares, cerca de 1 mês. Esta frequência é adequada para estratégias de médio a longo prazo, não é muito curta para whipsaws e não é muito longa para aumentar o risco.

4. Poucos parâmetros, fácil de otimizar

Os parâmetros que podem ser ajustados são principalmente dois: com poucos parâmetros, é fácil testar e encontrar parâmetros ótimos para a negociação real.

5. Transferível entre diferentes produtos

Esta estratégia não responde a indicadores peculiares de determinados produtos.A sua lógica aplica-se a acções, forex, commodities, criptomoedas, etc.

Análise de riscos

Embora esta estratégia tenha algumas vantagens, há também alguns riscos ao implementá-la na negociação real, principalmente:

1. Risco de posições perdedoras

A estratégia não possui stop loss para seguir posições lucrativas. Se a tendência de preço não prosseguir como esperado, ou a quebra for falsa, a saída forçada no ponto de stop loss pré-definido pode levar a grandes perdas. Este é o maior risco.

2. Pode ser necessário ajustar os parâmetros

Os parâmetros padrão podem não ser ideais. Eles precisam ser otimizados durante a negociação ao vivo para encontrar o melhor ajuste para regimes específicos de produto e mercado. Isso adiciona trabalho extra.

3. Correlação do desempenho com os mercados

A estratégia depende demais de tendências de preços persistentes. Não funciona bem durante regimes de intervalo. Se encontrar mercados de fenda, a saída forçada ocorrerá frequentemente, levando a ganhos / perdas instáveis.

Optimização

A fim de tornar esta estratégia mais robusta e rentável para a sua aplicação efectiva, podem ser realizadas algumas melhorias a partir dos seguintes aspectos:

1. Adicionar o mecanismo de stop loss

Adicione a lógica de stop loss para seguir posições lucrativas, atualizando dinamicamente o ponto de stop loss com base em lucros flutuantes.

2. Parâmetros de adaptação baseados nos mercados

Faça com que parâmetros como o período de ruptura e o período de retenção sejam adaptáveis com base na força do mercado, quantificados usando métricas como ATR. Isso pode ajustar dinamicamente os parâmetros.

**3. Combinar filtros de tendência **

Melhor filtragem de tendências pouco claras quando se aplica uma estratégia, através de uma análise prévia das tendências, seja discretionária ou quantitativa.

4. Teste em diferentes produtos e intervalos

O teste dos parâmetros e regras otimizados em diferentes produtos (por exemplo, índices, commodities, forex, criptomoedas) e intervalos (por exemplo, barras diárias de 60m) tornará esta estratégia mais robusta e amplamente aplicável.

Conclusão

Esta estratégia de reversão de breakout com stop loss é fácil de implementar com regras claras sobre identificação de tendências e gestão de posição. Analisamos sua força e riscos, fornecemos sugestões para melhorar sua lucratividade e aplicabilidade. Com otimização adicional, pode se tornar uma sólida estratégia de negociação quantitativa.


/*backtest
start: 2023-01-29 00:00:00
end: 2024-02-04 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © All_Verklempt

//@version=5
strategy("Breakout Strategy", overlay=true)

// Input variable for breakout period
breakoutPeriod = input.int(100, title="Breakout Period", minval=1)

// Calculate the highest close of the past breakout period
highestClose = ta.highest(close, breakoutPeriod)

// Input variables for start and end dates
startYear = input.int(2022, title="Start Year", minval=1900)
startMonth = input.int(1, title="Start Month", minval=1, maxval=12)
startDay = input.int(1, title="Start Day", minval=1, maxval=31)

endYear = input.int(2023, title="End Year", minval=1900)
endMonth = input.int(12, title="End Month", minval=1, maxval=12)
endDay = input.int(31, title="End Day", minval=1, maxval=31)

// Convert start and end dates to timestamp
startDate = timestamp(startYear, startMonth, startDay, 00, 00)
endDate = timestamp(endYear, endMonth, endDay, 23, 59)

// Entry condition: Breakout and higher close within the specified date range
enterLong = close > highestClose[1] and close > close[1]

// Exit condition: Close the long position after twenty-five bars
exitLong = ta.barssince(enterLong) >= 25

// Strategy logic
if (enterLong)
    strategy.entry("Long", strategy.long)

if (exitLong)
    strategy.close("Long")


Mais.