O recurso está a ser carregado... Carregamento...

Estratégia de reversão do pivô com saída do pivô

Autora:ChaoZhang, Data: 2024-04-30 15:57:54
Tags:

img

Resumo

Esta estratégia usa Pontos de Pivot para identificar pontos de reversão do mercado e tomar decisões de negociação com base neles. Quando uma Pivot High é formada dentro das últimas 4 velas à esquerda, a estratégia entra em uma posição longa; quando uma Pivot Low é formada dentro das últimas 4 velas à esquerda, a estratégia entra em uma posição curta. O stop loss é definido em um tamanho de tick (syminfo.mintick) acima ou abaixo do preço de entrada. Existem duas condições de saída: 1) saída quando o próximo ponto de pivô oposto aparece; 2) saída quando a perda flutuante atinge 30%.

Princípios de estratégia

  1. Utilize as funções ta.pivothigh (() e ta.pivotlow (()) para calcular o Pivot High (swh) e o Pivot Low (swl) no intervalo de 4 velas à esquerda e 2 velas à direita.
  2. Quando existe um Pivot High (swh_second), atualize o preço mais alto (hprice), e quando o máximo atual for superior ao máximo anterior, ative a condição de entrada longa (le).
  3. Quando a condição de entrada longa (le) estiver preenchida, introduzir uma posição longa a um tamanho de tick (syminfo.mintick) acima do Pivot High.
  4. Da mesma forma, quando existe um Pivot Low (swl_cond), atualize o preço mais baixo (lprice), e quando o mínimo atual for inferior ao mínimo anterior, ative a condição de entrada curta (se).
  5. Quando a condição de entrada curta (se) estiver preenchida, introduzir uma posição curta a um tamanho de tick (syminfo.mintick) abaixo do Pivot Low.
  6. Na função exitAtNextPivot(), se mantiver uma posição longa, definir o stop loss num tamanho de tick abaixo do próximo Pivot Low; se mantiver uma posição curta, definir o stop loss num tamanho de tick acima do próximo Pivot High.
  7. Na função exitIfProfitLessThirtyPercent(), calcular a percentagem de lucros e perdas para posições longas e curtas e fechar a posição se a perda exceder 30%.

Vantagens da estratégia

  1. Os Pivot Points podem refletir bem os níveis de suporte e resistência no mercado e são um indicador de análise técnica com um certo reconhecimento no mercado.
  2. Entrar na ruptura dos Pontos de Pivot pode capturar oportunidades de reversão do mercado.
  3. São definidas duas condições de saída, uma baseada no ponto de pivô oposto seguinte para a saída técnica e a outra baseada na percentagem de perdas para a saída de controlo de risco, que pode controlar a redução da estratégia até certo ponto.

Riscos estratégicos

  1. O próprio indicador Pivot Point apresenta certo atraso e problemas frequentes com os sinais e pode não funcionar bem num mercado flutuante.
  2. Os parâmetros de cálculo fixos de 4 velas e 2 velas podem não ser aplicáveis a todas as condições de mercado, não tendo uma certa adaptabilidade e flexibilidade.
  3. O stop loss é definido próximo do preço de entrada (tamanho de um tick), que pode ser descartado durante as violentas flutuações do mercado.
  4. A definição de parada de perdas de 30% pode ser muito frouxa, com uma grande amplitude de retirada.

Orientações para a otimização da estratégia

  1. Tente utilizar outros tipos de indicadores de Pivot Point, tais como Pivot Points de Fator, Pivot Points ponderados, etc., para melhorar a sensibilidade e a atualidade dos indicadores.
  2. O número de velas esquerda e direita pode ser usado como parâmetros de entrada, e os valores ideais podem ser encontrados através da otimização de parâmetros.
  3. A posição de stop loss pode ser otimizada para ATR ou stop loss percentual.
  4. A condição de parada de perdas de 30% pode ser reforçada para reduzir a redução da estratégia.
  5. Outras condições de filtragem, como a filtragem de tendência e a filtragem de volatilidade, podem ser sobrepostas com base na ruptura do ponto pivô para melhorar a qualidade do sinal.

Resumo

Esta estratégia constrói um sistema de negociação bidirecional baseado no indicador Pivot Point, capturando oportunidades de reversão do mercado indo longo em Pivot Highs e curto em Pivot Lows. A estratégia tem certa base teórica e valor prático, mas devido às limitações do próprio indicador Pivot Point, a estratégia pode enfrentar alguns riscos e desafios na operação real.


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

//@version=5
strategy("Pivot Reversal Strategy with Pivot Exit", overlay=true)

leftBars = input(4)
rightBars = input(2)

var float dailyEquity = na

// Reset equity to $10,000 at the beginning of each day
isNewDay = ta.change(time("D")) != 0
if (isNewDay)
    dailyEquity := 10000

// Calculate pivot highs and lows
swh = ta.pivothigh(leftBars, rightBars)
swl = ta.pivotlow(leftBars, rightBars)

// Define long entry condition
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])

// Enter long position if long entry condition is met
if (le)
    strategy.entry("PivRevLE", strategy.long, comment="EnterLong", stop=hprice + syminfo.mintick)

// Define short entry condition
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])

// Enter short position if short entry condition is met
if (se)
    strategy.entry("PivRevSE", strategy.short, comment="EnterShort", stop=lprice - syminfo.mintick)

// Exit condition: Exit at the next pivot point
exitAtNextPivot() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Exiting long position at next pivot low
            if not na(swl)
                strategy.exit("ExitLong", "PivRevLE", stop=swl - syminfo.mintick)
        else
            // Exiting short position at next pivot high
            if not na(swh)
                strategy.exit("ExitShort", "PivRevSE", stop=swh + syminfo.mintick)

// Call exitAtNextPivot function
exitAtNextPivot()

// Exit condition: Exit if profit is less than 30%
exitIfProfitLessThanThirtyPercent() =>
    if strategy.opentrades > 0
        if strategy.position_size > 0
            // Calculate profit percentage for long position
            profit_percentage_long = (close - strategy.position_avg_price) / strategy.position_avg_price * 100
            // Exiting long position if profit is less than 30%
            if profit_percentage_long < -30
                strategy.close("PivRevLE")
        else
            // Calculate profit percentage for short position
            profit_percentage_short = (strategy.position_avg_price - close) / strategy.position_avg_price * 100
            // Exiting short position if profit is less than 30%
            if profit_percentage_short < -30
                strategy.close("PivRevSE")

// Call exitIfProfitLessThanThirtyPercent function
exitIfProfitLessThanThirtyPercent()


Mais.