Estratégia de reversão de pontos pivot significativos

Autora:ChaoZhang, Data: 2024-01-29 14:58:15
Tags:

img

Resumo

Esta estratégia otimiza a estratégia tradicional de reversão dos pontos pivô, calculando o ATR e definindo filtros ATR para eliminar pontos pivô insignificantes, negociando apenas os verdadeiramente significativos.

Estratégia lógica

A lógica central é identificar pontos de pivô significativos de pico e fundo.

  1. Calcular o ATR e definir o fator de filtro ATR atr_mult.
  2. Atravessar um certo número de barras à esquerda (definido por leftBars), se o pivô de pico for maior do que qualquer alto + ATR*atr_mult à esquerda, o pivô é inválido.
  3. Atravessar um certo número de barras à direita (definido por rightBars), se o pivô de pico for maior do que qualquer alto + ATR*atr_mult à direita, o pivô é inválido.
  4. Se o pivô de pico continuar válido após os ensaios acima referidos, deve ser devolvido como um pivô de pico importante.

A lógica para o cálculo dos pivôs significativos é semelhante.

Depois de obter os pivôs significativos, vá curto quando o preço quebra um pivô de pico importante e vá longo quando quebra um pivô de baixa importante.

Análise das vantagens

As principais vantagens desta estratégia são:

  1. O filtro ATR e atr_mult pode eliminar flutuações insignificantes e negociar apenas pivots verdadeiramente significativos, evitando negociações desnecessárias.
  2. O parâmetro ATR dinâmico pode ajustar automaticamente o intervalo de negociação em mercados voláteis, evitando o excesso de negociação.
  3. A reversão de pontos pivô tem uma taxa de ganho e rentabilidade relativamente elevadas.

Análise de riscos

Os principais riscos são:

  1. Os parâmetros de ATR incorretos podem filtrar muitas negociações válidas.
  2. O risco de ser preso ainda existe, precisa de definir stop loss para controlar o risco.
  3. As estratégias de reversão são sensíveis aos custos de transação, deverão ser definidas medidas razoáveis de stop loss e take profit.

Para controlar os riscos acima, otimizar a partir dos seguintes aspectos:

  1. Otimizar os parâmetros do ATR para garantir oportunidades comerciais suficientes.
  2. Estabelecer taxas razoáveis de stop loss e take profit.
  3. Ajustar o dimensionamento das posições para reduzir o impacto dos custos de transação.

Orientações de otimização

Outras orientações de otimização incluem:

  1. Combinar com outros indicadores para determinar o regime de mercado, evitando reversões de negociação em mercados de tendência.

  2. Adicionar algoritmos de aprendizagem de máquina para otimizar automaticamente parâmetros.

  3. Modelos de treinamento usando dados quantitativos para encontrar o intervalo ATR ideal.

  4. Considere a combinação com outras estratégias, utilizando os pontos fortes de diferentes tipos de estratégia.

Conclusão

Esta estratégia de reversão de pivô significativo filtra flutuações menores sem sentido calculadora de ATR e configuração de filtros. Somente reversões de negociação em pivôs significativos podem efetivamente melhorar a lucratividade da estratégia. Enquanto isso, também aumenta a dificuldade de otimização de parâmetros. Os parâmetros ideais precisam ser encontrados por consideração abrangente da faixa ATR, índices de stop loss / take profit, etc. Se otimizado completamente, pode se tornar uma estratégia de negociação de curto prazo altamente eficiente e estável.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("QuantNomad - Significant Pivot Reversal Strategy", shorttitle = "SPPS", overlay=true)

// Inputs 
leftBars   = input(4,   title = 'PP Left Bars')
rightBars  = input(2,   title = 'PP Right Bars')
atr_length = input(14,  title = 'ATR Length')
atr_mult   = input(0.1, title = 'ATR Mult')

// Pivot High Significant Function
pivotHighSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (high[right] < high[right+i] + atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (high[right] < high[i] + atr * atr_mult)
            pp_ok := false
    
    pp_ok ? high[right] : na

// Pivot Low Significant Function
pivotLowSig(left, right) =>
    pp_ok = true
    atr   = atr(atr_length)
    
    for i = 1 to left
        if (low[right] > low[right+i] - atr * atr_mult)
            pp_ok := false
    for i = 0 to right-1
        if (low[right] > low[i] - atr * atr_mult)
            pp_ok := false
    
    pp_ok ? low[right] : na


swh = pivotHighSig(leftBars, rightBars)
swl = pivotLowSig (leftBars, rightBars)

swh_cond = not na(swh)

hprice = 0.0
hprice := swh_cond ? swh : hprice[1]

le = false
le := swh_cond ? true : (le[1] and high > hprice ? false : le[1])

if (le)
    strategy.entry("PivRevLE", strategy.long, comment="PivRevLE", stop=hprice + syminfo.mintick)

swl_cond = not na(swl)

lprice = 0.0
lprice := swl_cond ? swl : lprice[1]


se = false
se := swl_cond ? true : (se[1] and low < lprice ? false : se[1])

if (se)
    strategy.entry("PivRevSE", strategy.short, comment="PivRevSE", stop=lprice - syminfo.mintick)

Mais.