Estratégia de rompimento de momentum de Richard Bookstaber


Data de criação: 2023-11-02 15:12:46 última modificação: 2023-11-02 15:12:46
cópia: 1 Cliques: 695
1
focar em
1617
Seguidores

Estratégia de rompimento de momentum de Richard Bookstaber

Visão geral

A estratégia de ruptura dinâmica baseia-se no conceito de Richard Buchstaber, desenvolvido em 1984, de que, quando ocorrem grandes flutuações, o mercado tende a continuar nessa direção. Portanto, a estratégia usa o ATR para medir a volatilidade e emite um sinal de negociação quando a mudança no preço de fechamento excede o valor de um número de vezes o ATR.

Princípio da estratégia

A estratégia primeiro calcula o indicador ATR para medir a volatilidade do mercado. Em seguida, calcula o valor absoluto da variação do preço de fechamento diário. Quando o preço de fechamento varia em excesso em várias vezes o valor do indicador ATR, gera um sinal de negociação.

A estratégia usa o indicador ATR para determinar dinamicamente o limiar de ruptura. Quando a volatilidade do mercado aumenta, o limiar aumenta, o que reduz a ocorrência de transações erradas. Quando o mercado se desvanece, o limiar diminui, o que permite capturar oportunidades de ruptura.

Análise de vantagens

  • O stop dinâmico ATR permite um controle eficaz do risco, permitindo que o ponto de parada mude com a volatilidade do mercado.
  • A utilização de breakouts para gerar sinais de negociação permite a captação de rotações de tendências de mercado.
  • Os parâmetros de otimização são amplos e podem ser ajustados para diferentes variedades e períodos.
  • A estratégia é simples, clara, fácil de entender e de implementar.

Análise de Riscos

  • O índice ATR é lento em reagir a surpresas e pode ter perdido a primeira brecha.
  • O equilíbrio multi-espaço é ruim, e o efeito de apenas fazer mais ou apenas fazer tempo livre é claramente melhor do que o comércio bidirecional.
  • Os parâmetros da estratégia são fáceis de otimizar demais e podem não ser tão eficazes na prática.
  • As transações são frequentes e os custos podem ser altos.

Pode-se considerar a combinação de outros indicadores para selecionar o momento da negociação e aumentar a eficiência. Também pode-se selecionar parâmetros mais favoráveis para as características da variedade. A frequência de negociação pode ser controlada por técnicas como o uso de algoritmos Martinegil.

Direção de otimização

  • Pode-se considerar a combinação de outros indicadores para determinar a direção da tendência, evitando erros de negociação. Por exemplo, RSI, MACD etc.
  • Pode ser adicionado um módulo de gerenciamento de posições para ajustar as posições de acordo com a situação do mercado.
  • O melhor conjunto de parâmetros para diferentes variedades.
  • Parâmetros de otimização automática podem ser combinados com a tecnologia de aprendizagem de máquina.

Resumir

A estratégia de breakout dinâmico é simples e direta, usando breakouts para gerar sinais de negociação. O ATR stop loss permite que ele se adapte à volatilidade do mercado. A estratégia depende da otimização de parâmetros para obter bons resultados. Mas também há alguns problemas, como perder a primeira breakout, negociação frequente, etc. Isso requer melhorias adicionais em combinação com outras técnicas para obter lucros estáveis em mercados complexos.

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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © EduardoMattje

//@version=5
strategy("Volatility System", overlay=false, margin_long=0, margin_short=0, default_qty_type=strategy.percent_of_equity, 
 default_qty_value=100, process_orders_on_close=true, initial_capital=20000)

// Inputs

var averageLength = input.int(14, "Average length", 2)
var multiplier = input.float(2.0, "Multiplier", 0.0, step=0.1)

// Calculations

atr = ta.atr(averageLength) * multiplier
closingChange = ta.change(close, 1)

atrPenetration(int signal) =>
    res = closingChange * signal > atr[1]

longCondition = atrPenetration(1)
shortCondition = atrPenetration(-1)

// Order calls

if (longCondition)
    strategy.entry(strategy.direction.long, strategy.long)

if (shortCondition)
    strategy.entry(strategy.direction.short, strategy.short)

// Visuals

plot(atr, "ATR", color.white, 2)
plot(math.abs(closingChange), "Absolute close change", color.red)