Estratégia de rastreamento bidirecional de rompimento de momentum


Data de criação: 2023-12-18 10:47:46 última modificação: 2023-12-18 10:47:46
cópia: 0 Cliques: 625
1
focar em
1621
Seguidores

Estratégia de rastreamento bidirecional de rompimento de momentum

Visão geral

Esta estratégia combina o uso de indicadores de dinâmica e indicadores de rastreamento bidirecional para capturar sinais de ruptura em uma tendência forte e realizar o acompanhamento da tendência. Fazer mais quando o preço se move para cima e fechar quando o preço se move para baixo é uma estratégia de rastreamento de tendência.

Princípio da estratégia

  1. O indicador calcula o preço médio usando o indicador do ativador HiLo, que toma o ponto médio entre o preço mais alto e o preço mais baixo como o preço médio. Quando o preço sobe, ele gera um sinal de compra para quebrar o preço médio, e quando o preço cai, ele gera um sinal de venda para quebrar o preço médio.

  2. O índice de tendência média ADX é usado para determinar a força da tendência. Quanto maior o valor do ADX, mais forte é a tendência. Esta estratégia é combinada com o uso de um ADX com um determinado limite para filtrar os sinais e produzir um sinal somente quando a tendência é forte o suficiente.

  3. Indicadores de direção múltipla DI+ e DI- indicam a intensidade múltipla e a intensidade vazia, respectivamente. Esta estratégia funciona simultaneamente com um determinado limite de DI+ e DI- para confirmar a intensidade múltipla e a vazia, evitando sinais errados.

  4. Um sinal de compra é gerado quando o preço sobe e quebra o preço médio, ADX acima da depreciação e DI + acima da depreciação; um sinal de venda é gerado quando o preço desce e quebra o preço médio, ADX acima da depreciação e DI - acima da depreciação.

Análise de vantagens

Esta estratégia combina os benefícios dos indicadores de dinâmica e dos indicadores de tendência, permitindo capturar brechas de preços no início do desenvolvimento da tendência, de modo a manter a tendência em funcionamento. Ao mesmo tempo, as condições de filtragem de tendência são rigorosas, o que ajuda a evitar sinais errôneos de mercados de consolidação e de choque.

Em comparação com o uso de um único indicador de força, a estratégia de adicionar o julgamento da força da tendência ao gerar o sinal, pode reduzir os sinais errados e aumentar a probabilidade de lucro. Em comparação com o uso de um único indicador de acompanhamento de tendência, a estratégia de gerar um sinal de ruptura, pode entrar na tendência mais cedo.

Em geral, a estratégia permite acompanhar a tendência com sucesso, entrar e sair no tempo certo, evitando a confusão; ao mesmo tempo, reduzir os prejuízos da reversão da tendência.

Análise de Riscos

A estratégia tem um risco de whipsaw, que é a possibilidade de um certo grau de correção de preços para gerar um sinal de reversão. Além disso, o uso de ADX e DI para definir as condições de filtragem pode perder parte do início da operação.

Para reduzir o risco de whipsaw, pode-se ajustar adequadamente os parâmetros do ativador HiLo, aumentando a amplitude de ruptura. Para obter mais oportunidades, pode-se reduzir os requisitos de thresholds de ADX e DI, mas é necessário compensar a qualidade do sinal.

Além disso, os usuários precisam prestar atenção às diferenças de configuração de parâmetros em diferentes variedades e ambientes de mercado. Em geral, as commodities precisam de um limiar mais alto; ações e divisas podem usar um limiar mais baixo.

Direção de otimização

A estratégia pode ser otimizada por meio de ajustes nas configurações dos parâmetros. As principais direções de otimização incluem:

  1. Ajustar o ciclo do ativador HiLo e a amplitude do disparo, equilibrando o risco de whipsaw e o tempo de entrada.

  2. Ajustar os requisitos de ciclo e devaluação do ADX para equilibrar a qualidade do sinal e a frequência de entrada.

  3. Ajustar os valores-limite para o DI de múltiplos e o de vôo, respectivamente, para distinguir as diferenças de ambiente entre múltiplos e vôo.

  4. Adicionar estratégias de stop loss e definir pontos de stop loss para controlar perdas individuais.

  5. Otimizar, em combinação com outros indicadores auxiliares, a estabilidade geral da estratégia.

Resumir

Esta estratégia leva em consideração os indicadores de dinâmica e os indicadores de tendência, gerando sinais de compra e venda em tendências fortes. Ela possui características de sequência e tendência de fechamento, adequadas para capturar oportunidades de tendência mais cedo. Ao mesmo tempo, ela também possui uma certa capacidade de controle de risco, que pode reduzir os sinais errados e as perdas causadas pelo whipsaw.

Código-fonte da estratégia
/*backtest
start: 2022-12-11 00:00:00
end: 2023-12-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("HiLo Activator with ADX", shorttitle="HASB_ADX", overlay=true)

// Parameters for the HiLo Activator
length_ha = input(14, title="HiLo Activator Period")
offset_ha = input(0, title="Offset")
trigger_ha = input(1, title="Trigger for Buy/Sell")

// Parameters for ADX
adx_length = input(14, title="ADX Period", minval=1)
adx_threshold = input(25, title="ADX Threshold")
di_threshold = input(50, title="DI Threshold")

// Parameter for choosing the number of candles for backtest
backtest_candles = input(1000, title="Number of Candles for Backtest", minval=1)

// Function to get backtest data
getBacktestData() =>
    var float data = na
    if bar_index >= backtest_candles
        data := security(syminfo.tickerid, "D", close[backtest_candles])
    data

// HiLo Activator calculations
ha = (highest(high, length_ha) + lowest(low, length_ha)) / 2

// ADX calculations
trh = high - high[1]
trl = low[1] - low
tr = max(trh, trl)
atr = sma(tr, adx_length)
plus_dm = high - high[1] > low[1] - low ? max(high - high[1], 0) : 0
minus_dm = low[1] - low > high - high[1] ? max(low[1] - low, 0) : 0
smoothed_plus_dm = sma(plus_dm, adx_length)
smoothed_minus_dm = sma(minus_dm, adx_length)
di_plus = 100 * (smoothed_plus_dm / atr)
di_minus = 100 * (smoothed_minus_dm / atr)
dx = 100 * abs(di_plus - di_minus) / (di_plus + di_minus)
adx = sma(dx, adx_length)

// Buy and Sell signals based on HiLo Activator and ADX
signalLong = crossover(close, ha) and adx > adx_threshold and di_plus > di_threshold
signalShort = crossunder(close, ha) and adx > adx_threshold and di_minus > di_threshold

// Plot HiLo Activator and ADX
plot(ha, color=color.blue, title="HiLo Activator")
plot(offset_ha, color=color.red, style=plot.style_histogram, title="Offset")
plot(adx, color=color.purple, title="ADX")

// Backtest strategy
strategy.entry("Buy", strategy.long, when = signalLong)
strategy.entry("Sell", strategy.short, when = signalShort)
strategy.close("Buy", when = signalShort)
strategy.close("Sell", when = signalLong)

// Accuracy percentage
var accuracy = 0.0
var totalTrades = 0
var winningTrades = 0

if (signalLong or signalShort)
    totalTrades := totalTrades + 1

if (signalLong and (not na(signalLong[1]) and (not signalLong[1])))
    winningTrades := winningTrades + 1

if (signalShort and (not na(signalShort[1]) and (not signalShort[1])))
    winningTrades := winningTrades + 1

accuracy := totalTrades > 0 ? (winningTrades / totalTrades) * 100 : 0

// Plot accuracy percentage on the chart
plot(accuracy, title="Accuracy Percentage", color=color.purple, style=plot.style_histogram)