Força da tendência Confirm Bares Strategy

Autora:ChaoZhang, Data: 2024-01-16 15:22:53
Tags:

img

Visão geral: Esta estratégia julga a direção da tendência com base na direção do preço de fechamento de N velas consecutivas. Os sinais de negociação são gerados quando os preços de fechamento de N velas consecutivas atendem à condição. O tamanho de N é definido pelo parâmetro de entrada confirmBars. Esta estratégia utiliza principalmente a direção dos preços de fechamento de N velas consecutivas para determinar a força da tendência.

Princípio:
A estratégia rastreia a relação entre os preços de fechamento do último candelabro e o anterior para julgar a força dos aumentos e quedas de preços. Especificamente, define duas variáveis bcount e scount para registrar o número de preços de fechamento de candelabro consecutivos que aumentam e caem.

Quando o bcount atinge o valor definido pela confirmBars, significa que os preços de fechamento das velas consecutivas confirmBars subiram, gerando um sinal de compra. Quando o scount atinge o valor definido pela confirmBars, significa que os preços de fechamento das velas consecutivas confirmBars caíram, gerando um sinal de venda.

Ao julgar a direção dos preços de fechamento de vários candelabros consecutivos, as flutuações de curto prazo do mercado podem ser efetivamente filtradas, e os sinais de negociação só são gerados sob tendências de força relativamente grande.

Análise das vantagens:

  1. Filtrar eficazmente o ruído e confirmar tendências
    Esta estratégia exige que N candelabros consecutivos fechem os preços para satisfazer as condições antes de gerar sinais de negociação.

  2. Parâmetros de força de filtragem ajustáveis Ao ajustar o tamanho do parâmetro confirmBars, a força de filtragem das flutuações de preços pode ser controlada. Parâmetros maiores têm melhores efeitos de filtragem sobre o ruído, mas também podem perder oportunidades de tendência inicial.

Análise de riscos:

  1. Pode perder oportunidades de tendências iniciais A estratégia requer que vários candelabros consecutivos fechem os preços para atender às condições antes de gerar sinais, de modo que muitas vezes perde oportunidades de tendência precoce e não pode rastrear tendências em tempo hábil.

  2. Previsão de ruptura da perda Quando o número de confirmações confirmBars é definido demasiado grande, é fácil ser enganado por linhas de curto prazo invertidas no estágio inicial da tendência, resultando em breakouts de stop loss.

Orientações de otimização:

  1. Filtrar fugas falsas com outros indicadores
    Outros indicadores técnicos, tais como as bandas de Bollinger e o RSI, podem ser utilizados para realizar filtragem secundária dos sinais de compra e venda, a fim de reduzir a possibilidade de falhas.

  2. Ajuste dinâmico dos parâmetros Tente ajustar dinamicamente o parâmetro confirmBars com base nas condições do mercado. Aumentar o valor do parâmetro em mercados voláteis para filtrar o ruído; diminuir o valor do parâmetro quando a tendência é óbvia para seguir a tendência.

Resumo:
Esta estratégia consegue o efeito de filtrar choques e confirmar tendências julgando a direção dos preços de fechamento de vários velas consecutivas. Pode efetivamente reduzir as negociações erradas causadas por flutuações de curto prazo do mercado e gerar sinais de negociação apenas quando as tendências são óbvias. Ajustando o tamanho do parâmetro confirmBars, os usuários podem equilibrar a relação entre os efeitos de filtragem e capturar oportunidades de tendência. No entanto, esta estratégia é propensa a ser interrompida no início da tendência e não consegue rastrear continuamente as tendências. Recomenda-se otimizar com outros indicadores ou tentar o ajuste de parâmetros dinâmicos para buscar melhores retornos.


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

//@version=5
strategy("Confirm Bars Strategy [TS Trader]", overlay=true)

confirmBars = input(1)

// === INPUT BACKTEST RANGE ===
fromYear = input.int(2019, title="Backtest Start Year")
fromMonth = input.int(1, title="Backtest Start Month", minval=1, maxval=12)
fromDay = input.int(1, title="Backtest Start Day", minval=1, maxval=31)
toYear = input.int(2023, title="Backtest End Year")
toMonth = input.int(12, title="Backtest End Month", minval=1, maxval=12)
toDay = input.int(31, title="Backtest End Day", minval=1, maxval=31)

startTimestamp = timestamp(fromYear, fromMonth, fromDay, 00, 00)
endTimestamp = timestamp(toYear, toMonth, toDay, 23, 59)

inBacktestRange = true

// === STRATEGY LOGIC ===
bcount = 0
bcount := close[1] < close ? nz(bcount[1]) + 1 : 0
if (bcount == confirmBars and inBacktestRange)
    strategy.entry("Buy", strategy.long, comment="Long")

scount = 0
scount := close[1] > close ? nz(scount[1]) + 1 : 0
if (scount == confirmBars and inBacktestRange)
    strategy.entry("Sell", strategy.short, comment="Short")

Mais.