Estratégia de ruptura de impulso de reversão

Autora:ChaoZhang, Data: 2024-02-23 12:11:32
Tags:

img

Resumo

A Estratégia de Breakout de Momento de Reversão é uma estratégia quantitativa de negociação que gera sinais de negociação usando inversão de preço e indicadores de momento.

Princípio da estratégia

A lógica central desta estratégia consiste em identificar pontos de reversão do mercado através do cálculo dos preços mais altos e mais baixos durante uma janela de retrospectiva especificada (por exemplo, 20 dias).

  1. Calcular o preço mais alto (window_high) e o preço mais baixo (window_low) nos últimos 20 dias.

  2. Se o máximo de hoje for superior ao máximo dos últimos 20 dias (um novo máximo de 20 dias), introduzir o período de monitorização da reversão do máximo e definir o contador para 5 dias.

  3. Se não ocorrer nenhuma nova alta, deduzir o contador por 1 a cada dia.

  4. A lógica de julgamento para o preço mais baixo é semelhante.

  5. As posições longas e curtas são tomadas dentro dos períodos de monitorização da reversão.

A estratégia também define a hora de início das negociações para evitar a geração de sinais em dados históricos.

Análise das vantagens

A estratégia de ruptura do momento de reversão tem as seguintes vantagens principais:

  1. Captura oportunidades de reversão, adequadas para tendências de reversão. Os mercados geralmente mostram algum grau de reversão após uma tendência de alta ou baixa sustentada. Esta estratégia visa capturar esses pontos de virada.

  2. O rastreamento dos preços mais altos e mais baixos através de uma janela pode identificar de forma sensível tendências de reversão de preços e tempo.

  3. Os períodos de monitorização da inversão evitam sinais falsos. Os sinais são gerados apenas em torno de pontos de inversão importantes, filtrando algum ruído.

  4. Permite posições longas e curtas, alternando entre longas e curtas seguindo a direcção do mercado.

  5. Relativamente lógica simples, fácil de implementar.

Análise de riscos

Os principais riscos desta estratégia incluem:

  1. A estratégia pode incorrer em perdas se o mercado tiver tendências direcionais.

  2. As tendências globais do mercado não são tidas em conta.

  3. A redução pode aumentar sem reversões reais.

  4. O desempenho pode diferir significativamente dos backtests.

  5. A sensibilidade dos parâmetros, o período da janela, os parâmetros do contador, etc., afetam a estabilidade.

Os métodos correspondentes de controlo do risco incluem a otimização do stop loss, a incorporação de fatores de mercado, o ajustamento das combinações de parâmetros e a verificação da estabilidade.

Orientações para a melhoria

As principais direcções de otimização incluem:

  1. Incorporar indicadores de mercado, avaliar a força do mercado para evitar ambientes desfavoráveis.

  2. Escolha ações com fundamentos sólidos e sobreavaliação.

  3. Optimização de parâmetros: ajuste o período da janela e os parâmetros do contador para encontrar combinações ótimas de parâmetros.

  4. Adicionar estratégias de stop loss, por exemplo, trailing stops, volatility stops para controlar o drawdown máximo.

  5. Aumentar a precisão preditiva de aprendizagem de máquina das inversões de preços.

Conclusão

A estratégia de ruptura de impulso de reversão identifica oportunidades de reversão rastreando o preço e o impulso. Reage de forma sensível e identifica tendências de reversão e tempo. Mas tem riscos que exigem otimizações e controle de risco adequados.


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

//@version=5
strategy("New Highs and Lows Momentum Strategy", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100)

window = input.int(20, title="New Highs and Lows Window", minval=1)
decay = input.int(5, title="Decay", minval=1)
startDate = input(timestamp("1 Jan 2023"), title = "Start Date")
allowShort = input.bool(false, title = "Allow shorting")

var int highDecayCounter = 0
var bool isHighPeriod = false
var int lowDecayCounter = 0
var bool isLowPeriod = false

inTradeWindow = true

window_high = ta.highest(close, window)
window_low = ta.lowest(low, window)

// Logic for Highs
if window_high > ta.highest(close, window)[1]
    highDecayCounter := decay
    isHighPeriod := true
else
    if highDecayCounter > 0
        highDecayCounter := highDecayCounter - 1
    else
        isHighPeriod := false

// Logic for Lows
if window_low < ta.lowest(low, window)[1]
    lowDecayCounter := decay
    isLowPeriod := true
else
    if lowDecayCounter > 0
        lowDecayCounter := lowDecayCounter - 1
    else
        isLowPeriod := false

// Strategy Execution
if inTradeWindow
    if isHighPeriod and highDecayCounter == decay
        strategy.entry("Long", strategy.long)

    if isHighPeriod and highDecayCounter == 0
        strategy.close("Long")

    if isLowPeriod and lowDecayCounter == decay and allowShort
        strategy.entry("Short", strategy.short)

    if isLowPeriod and lowDecayCounter == 0 and allowShort
        strategy.close("Short")

// Plotting
plot(window_high, color=color.green)
plot(window_low, color=color.red)

Mais.