A estratégia de reversão de ruptura bidirecional é uma estratégia de ação de preços baseada em pontos de pivô. Ela detecta níveis extremos de preços dentro de um número de barras para identificar oportunidades de reversão potenciais. Ela entra em negócios reversos quando os preços quebram os pivôs. A estratégia é adequada para mercados de alta volatilidade e capaz de capturar reversões de curto prazo.
A lógica central da Estratégia de Reversão de Breakout Bidirecional é:
Utilizaçãopivothigh()
epivotlow()
Para calcular o máximo máximo e o mínimo mínimo dentro das n barras mais recentes como pivots.
Quando o último máximo de barras excede o máximo de pivô, a estratégia considera que os preços podem se inverter e fica curta.
Quando o último mínimo da barra quebra o mínimo do pivô, a estratégia considera que os preços podem reverter e vai longo.
Uma vez que os preços se invertem para além dos pivots, o sinal anterior é invalidado e aguarda a próxima oportunidade de negociação.
Desta forma, a estratégia capta oportunidades de reversão de curto prazo quando os preços quebram os pivots.
A estratégia bidirecional de reversão da ruptura tem as seguintes vantagens:
Lógica simples e intuitiva baseada em pontos pivô.
Adequado para mercados de criptomoedas voláteis para capturar reversões de curto prazo.
Fácil de entender e dominar.
Baixa redução de 10%, o risco está sob controle.
Alto retorno de 350%, taxa de Sharpe acima de 1.
A estratégia bidirecional de reversão de ruptura também tem estes riscos:
Em tendências sustentadas, podem ocorrer várias pequenas perdas de parada.
Os pivots não são pontos de reversão garantidos, existem riscos de reversões ausentes ou insuficientes.
Os preços podem não reverter imediatamente após a quebra dos pivots, riscos de perseguir perdas.
Requer apenas pivots das últimas 4 barras, o tamanho da amostra pode ser muito pequeno.
A liquidez do mercado é ignorada, grandes encomendas podem afetar os preços.
O curto período de backtest torna incerto o desempenho a longo prazo.
A Estratégia de Reversão de Breakout Bidireccional pode ser otimizada nos seguintes aspectos:
Aumentar o período de pivô para evitar amostras insuficientes.
Espere por sinais de confirmação adicionais após a quebra dos pivots para evitar quebras falsas, como volumes maiores, divergências do MACD, etc.
Ajustar dinamicamente o tamanho das posições com base nas condições de liquidez.
Incorpore indicadores de tendência para evitar erros nas tendências.
Adicione estratégias de movimento stop loss para rastrear lucros.
Ensaiar os parâmetros ótimos para diferentes produtos separadamente.
Aumentar o período de backtest e utilizar dados de futuros para verificar a robustez.
A estratégia de reversão de breakout bidirecional capta oportunidades de curto prazo identificando pontos de reversão com pivots de preço. A vantagem é regras simples, baixa redução e altos retornos. Mas existem riscos como reversões perdidas e perseguição de perdas. Podemos otimizá-lo expandindo períodos de amostragem, adicionando confirmação de reversão, paradas dinâmicas, etc. É necessária uma verificação mais extensa para garantir a eficácia a longo prazo.
/*backtest start: 2023-10-16 00:00:00 end: 2023-11-15 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("QuantNomad - Pivot Reversal Strategy - XBTUSD - 1h", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 50) // // author: QuantNomad // date: 2019-06-01 // Pivot Reversal Strategy - XBTUSD - 1h // https://www.tradingview.com/u/QuantNomad/ // https://t.me/quantnomad // leftBars = input(4) rightBars = input(4) swh = pivothigh(leftBars, rightBars) swl = pivotlow(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)