Estratégia de reversão de tendência de criptomoeda com base em altos e baixos do PIVOT


Data de criação: 2024-01-12 14:13:36 última modificação: 2024-01-12 14:13:36
cópia: 1 Cliques: 774
1
focar em
1664
Seguidores

Estratégia de reversão de tendência de criptomoeda com base em altos e baixos do PIVOT

Visão geral

A estratégia baseia-se no PIVOT e na ruptura para determinar a reversão de tendência da criptomoeda, pertencendo à categoria de estratégia de reversão de ruptura. A estratégia primeiro calcula o PIVOT do preço mais alto e mais baixo do item em questão no período mais recente, e depois determina se o preço se reverteu após a ruptura desses pontos-chave para capturar uma grande mudança de tendência.

Princípio da estratégia

  1. Calculando o PIVOT

Utilizando as funções ta.pivothigh () e ta.pivotlow () calcula-se o preço máximo e o preço mínimo de um determinado número de barras como pontos PIVOT críticos.

  1. Julgar uma ruptura

Se o preço ultrapassar o PIVOT LOW para cima, ou ultrapassar o PIVOT HIGH para baixo, a tendência é considerada invertida.

  1. Configurar condições de filtragem

O preço precisa ter uma certa brecha do PIVOT e ultrapassar o preço de fechamento de 150 bar para evitar ser coberto.

  1. Entradas e saídas

Trigger condições de compra para fazer mais entradas, e depois de ativar condições de venda para nivelar mais bilhetes. É semelhante ao julgamento de entradas e saídas de bilhetes vazios.

Análise de vantagens

  1. A avaliação com pontos PIVOT é mais sensível a grandes mudanças de tendência
  2. Filtro eficaz para entrar na tendência de choque e garantir a entrada após a reversão da tendência
  3. O PIVOT é uma ferramenta de análise de risco que permite a captura de oportunidades de reversão em tempo hábil, por meio da determinação de pontos de PIVOT altos e baixos.

Análise de Riscos

  1. Os grandes ciclos de turbulência são fáceis de manipular.
  2. O comprimento do ponto PIVOT e as condições de filtragem devem ser ajustados para adaptar-se a diferentes especificações
  3. É preciso garantir que as comissões da bolsa estejam próximas de zero, caso contrário, os lucros e perdas serão mais afetados.

Direção de otimização

  1. É possível testar diferentes combinações de parâmetros PIVOT
  2. Pode-se adicionar um stop loss móvel para controlar perdas individuais
  3. Pode ser combinado com outros indicadores para avaliar o sinal de filtragem

Resumir

A estratégia é bastante robusta e adequada para capturar grandes reversões. No entanto, é necessário ter cuidado para controlar o risco e ajustar os parâmetros para diferentes moedas. Acredita-se que a estratégia pode ter um melhor efeito com base na otimização dos parâmetros e no controle de vento.

Código-fonte da estratégia
/*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"}]
*/

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

//@version=5
strategy("Swing Hi Lo", overlay=true, margin_long=100, margin_short=100)

//-----------------------------------------------------------------------------------------------------------------------//

tf = input.timeframe(title="Timeframe", defval="")

gr="LENGTH LEFT / RIGHT"
leftLenH = input.int(title="Pivot High", defval=10, minval=1, inline="Pivot High",group=gr)
rightLenH = input.int(title="/", defval=10, minval=1, inline="Pivot High",group=gr)
colorH = input(title="", defval=color.red, inline="Pivot High",group=gr)

leftLenL = input.int(title="Pivot Low", defval=10, minval=1, inline="Pivot Low", group=gr)
rightLenL = input.int(title="/", defval=10, minval=1, inline="Pivot Low",group=gr)
colorL = input(title="", defval=color.blue, inline="Pivot Low",group=gr)

//-----------------------------------------------------------------------------------------------------------------------//

pivotHigh(ll, rl) =>
    maxLen = 1000
    float ph = ta.pivothigh(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(ph[offset])
            break 
        offset := offset + 1
    ph[offset]

pivotLow(ll, rl) =>
    maxLen = 1000
    float pl = ta.pivotlow(ll, rl)
    int offset = 0
    while offset < maxLen
        if not na(pl[offset])
            break 
        offset := offset + 1
    pl[offset]


//-----------------------------------------------------------------------------------------------------------------------//

ph = request.security(syminfo.tickerid, tf, pivotHigh(leftLenH, rightLenH), barmerge.gaps_off, barmerge.lookahead_on)
pl = request.security(syminfo.tickerid, tf, pivotLow(leftLenL, rightLenL), barmerge.gaps_off, barmerge.lookahead_on)

drawLabel(_offset, _pivot, _style, _color) =>
    if not na(_pivot)
        label.new(bar_index[_offset], _pivot, str.tostring(_pivot, format.mintick), style=_style, color=_color, textcolor=#131722)

//-----------------------------------------------------------------------------------------------------------------------//

VWAP = ta.vwap(ohlc4)

longcondition = ta.crossunder(close,pl) and close > close[150]
exitcondition = close > ph

shortcondition = ta.crossover(close,ph) and close < close[150]
covercondition = close < pl

strategy.entry("long", strategy.long, when = longcondition)
strategy.close("long", when = exitcondition)

strategy.entry("Short", strategy.short, when = shortcondition)
strategy.close("Short", when = covercondition)