Estratégia de negociação de reversão do candelabro Doji

Autora:ChaoZhang, Data: 2023-09-27 16:40:28
Tags:

Resumo

Esta estratégia identifica padrões de candelabro doji e combina SMA para determinar reversões para a negociação. Ela gera sinais de negociação quando os padrões doji se formam e os preços de abertura / fechamento estão fora das linhas SMA.

Princípios

Os principais princípios desta estratégia são:

  1. Identificação de padrões de doji através do cálculo da faixa de preços de abertura/fechamento em relação ao movimento global dos preços.

  2. Verificação se o fechamento anterior está acima/abaixo do nível máximo/baixo atual para evitar falsos sinais.

  3. Julgar os preços de abertura/fechamento em relação às linhas SMA para gerar sinais de reversão.

  4. Gerar sinais longos/cortos quando são identificados padrões doji qualificados.

As principais etapas do código são:

  1. Cálculo das linhas SMA

  2. Looping através de velas para identificar padrões doji

  3. Verificação da relação próxima anterior versus alta/baixa atual

  4. Confirmação de sinais de reversão com base na relação aberta/fechada e na SMA

  5. Traçar marcadores de sinal e emitir sinais longos/cortos

Vantagens

As vantagens desta estratégia incluem:

  1. Os padrões Doji são claros e fáceis de identificar/implementar.

  2. Os filtros SMA ajudam a reduzir os falsos sinais.

  3. Os sinais longos/cortos claros tornam as operações comerciais simples.

  4. A negociação de reversão capta tendências de curto prazo.

  5. Os parâmetros flexíveis podem adaptar-se às diferentes condições do mercado.

  6. Fácil de compreender e implementar, amigável para iniciantes.

Riscos

Alguns riscos potenciais:

  1. Confiança num padrão único, propensa a falhas.

  2. Não há mecanismo de stop loss para controlar as perdas.

  3. Uma má regulação dos parâmetros pode levar a uma troca excessiva.

  4. Dependente da tendência, com baixo desempenho nos mercados em tendência.

  5. O desempenho depende da otimização de parâmetros.

Soluções:

  1. Adicione outros filtros para confirmar sinais.

  2. Implementar stop loss para gerir os riscos.

  3. Otimizar os parâmetros e limitar a frequência do comércio.

  4. Usar principalmente durante os mercados de gama limitada.

  5. Contínuo teste e otimização.

Áreas de melhoria

Algumas formas de melhorar a estratégia:

  1. Adicione o filtro de volume para evitar falsos escapes.

  2. Implementar mecanismos de stop loss como trailing stop loss.

  3. Otimizar parâmetros baseados em condições de mercado como tendências.

  4. Adicionar outros indicadores para confirmar sinais, como MACD, KDJ etc.

  5. Adicionar determinação de tendência para evitar negociações contra-tendência.

  6. Otimizar o período de revisão para equilibrar a frequência e a qualidade.

Resumo

Esta estratégia usa padrões doji com SMA para negociação de reversão eficiente. Tem vantagens como regras simples e negociação fácil. Mas também tem riscos e áreas para melhoria. Com otimização contínua, pode se tornar um sistema de negociação sólido de curto prazo.

[/trans]


/*backtest
start: 2022-09-20 00:00:00
end: 2023-09-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("Doji Reversal", overlay=true)

smaPeriod = input(title="SMA Period", defval=10, minval=0)
tolerance = input(title="Tolerance", defval=0.1, minval=0)

lookbackEnd = input(title="End", defval=2, minval=0)

avg = sma(close, smaPeriod)
signal_long = bool(false)
signal_short = bool(false)

for i = 1 to lookbackEnd
    is_doji = (abs(close[i] - open[i]) / (high[i] - low[i])) < tolerance
    signal_long := signal_long or ( is_doji and (close[i-1] <= high[i] or i == 1) and close[i-1] > high[i] and high[i] < avg and close > open )
    signal_short := signal_short or ( is_doji and (close[i-1] >= low[i] or i == 1) and close[i-1] < low[i] and low[i] > avg and close < open )

plotshape(signal_long, "LONG", style=shape.triangleup, size=size.normal)
plotshape(signal_short, "SHORT", style=shape.triangledown, size=size.normal)

strategy.entry("LONG", strategy.long, when=signal_long)
strategy.entry("SHORT", strategy.short, when=signal_short)

Mais.