Estratégia de acompanhamento de tendências com base na média móvel de Hull e na faixa real


Data de criação: 2024-01-15 15:26:08 última modificação: 2024-01-15 15:26:08
cópia: 0 Cliques: 775
1
focar em
1617
Seguidores

Estratégia de acompanhamento de tendências com base na média móvel de Hull e na faixa real

Visão geral

A ideia central desta estratégia é identificar a direção da tendência do mercado em combinação com a linha média de Hull e a amplitude da onda real (ATR) e entrar após a confirmação da direção da tendência. Concretamente, é o cálculo do diferencial entre a linha média de Hull de um determinado período e a linha média de Hull do período anterior.

Princípio da estratégia

Esta estratégia baseia-se principalmente em dois tipos de indicadores: linha média de Hull e ATR.

O Hull Mean Line é um indicador de seguimento de tendências desenvolvido pelo comerciante de futuros americano Alan Hull. O Hull Mean Line é semelhante ao Moving Average, mas o Hull Mean Line possui maior sensibilidade para capturar tendências de mudanças de preços mais rapidamente. A estratégia possui um parâmetro ajustável, o hullLength, para controlar o comprimento do ciclo do Hull Mean Line, para determinar a direção da tendência de preços atual, calculando a diferença entre o ciclo atual e o Hull Mean Line do período anterior.

ATR ou Average True Range, ou seja, a amplitude real. Ele reflete a amplitude da oscilação diária dos preços. Quando a oscilação aumenta, a amplitude real sobe; Quando a oscilação diminui, a amplitude real cai.

A lógica da estratégia é a seguinte:

  1. Calcule a média do Hull currentHullMA do período atual (condição de HullLength) e a média do Hull previousHullMA do período anterior
  2. Calcule a diferença entre os dois hullDiff = currentHullMA - previousHullMA
  3. Quando hullDiff > 0, julgar como uma tendência de cabeça; quando hullDiff < 0, julgar como uma tendência de cabeça vazia
  4. Ao mesmo tempo, o valor ATR calculado para um determinado período (condição atLength) é usado como um indicador da amplitude da tendência
  5. Fazer mais quando julgado como uma tendência multi-cabeça, e o valor ATR maior do que o preço e o preço maior do que o preço antes do período atrLength; fazer menos quando julgado como uma tendência de cabeceira, e o valor ATR menor do que o preço e o preço menor do que o preço antes do período atrLength
  6. Os sinais de equilíbrio são avaliados por meio do hullDiff

Análise de vantagens estratégicas

A estratégia tem as seguintes vantagens:

  1. Combinando o julgamento de tendências e os indicadores de volatilidade, pode-se optar por entrar quando a tendência de preços é clara e a volatilidade aumenta, evitando ser preso em mercados de turbulência.
  2. A linha média de Hull é mais sensível às mudanças de preços, permitindo um rápido julgamento de novas tendências.
  3. O ATR pode refletir a volatilidade e o calor do mercado, fornecendo uma base para a escolha do ponto de entrada.
  4. Os parâmetros são mais ajustáveis e podem ser optimizados para obter a melhor combinação de parâmetros.

Análise de Riscos

A estratégia também apresenta alguns riscos:

  1. A linha média do casco e o ATR não conseguem evitar completamente o problema da falsa brecha, podendo ainda ser encaixados.
  2. A configuração inadequada dos parâmetros pode levar a transações frequentes ou insensíveis o suficiente para afetar a eficácia da estratégia.
  3. Não é capaz de lidar com situações extremas, como uma rápida ascensão, ruptura ou queda.

Resolução:

  1. A fim de evitar a invasão da cela, os prisioneiros devem ser amenizados de forma adequada.
  2. Teste e otimize os parâmetros repetidamente para que os indicadores se adaptem melhor a diferentes contextos de mercado.
  3. A estratégia de suspensão de operações em situações de tensão.

Direção de otimização

A estratégia ainda tem muito espaço para otimização, principalmente a partir dos seguintes aspectos:

  1. Teste diferentes parâmetros de ciclo de linha média de Hull para encontrar a configuração de ciclo mais adequada para o ambiente de mercado atual.
  2. Teste diferentes combinações de parâmetros de ATR para encontrar o ciclo que melhor capta o calor do mercado.
  3. Experimente diferentes tipos de suavização de ATR (RMA, SMA, EMA, etc.) para ver qual funciona melhor.
  4. Optimizar as condições de abertura de posições, por exemplo, combinando os indicadores de volatilidade Reaction e ATR.
  5. Optimizar a forma de parar os prejuízos, com uma amplitude de parada adequada, para evitar ser encurralado.

Resumir

Esta estratégia integra a capacidade de rastreamento de tendências da linha média de Hull e a capacidade de julgamento de indicadores de calor do ATR, selecionando pontos de entrada de tempo positivos e com maior flutuação ao confirmar a tendência e filtrando alguns sinais inativos. A otimização dos parâmetros do indicador e o uso de meios de gerenciamento de risco podem aumentar ainda mais a eficácia da estratégia.

Código-fonte da estratégia
/*backtest
start: 2024-01-07 00:00:00
end: 2024-01-14 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//                                                Hull cross and ATR
strategy("Hull cross and ATR", shorttitle="H&ATR", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0)
keh=input(title="Hull Length",defval=50)
length = input(title="ATR Length", defval=50, minval=1)
smoothing = input(title="ATR Smoothing", defval="RMA", options=["RMA", "SMA", "EMA", "WMA"])
p=input(ohlc4,title="Price data")
n2ma=2*wma(p,round(keh/2))
nma=wma(p,keh)
diff=n2ma-nma
sqn=round(sqrt(keh))
n2ma1=2*wma(p[1],round(keh/2))
nma1=wma(p[1],keh)
diff1=n2ma1-nma1
sqn1=round(sqrt(keh))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
ma_function(source, length) => 
    if smoothing == "RMA"
        rma(p, length)
    else
        if smoothing == "SMA"
            sma(p, length)
        else
            if smoothing == "EMA"
                ema(p, length)
            else
                wma(p, length)
plot(ma_function(tr(true), length), title = "ATR", color=black, transp=50)
closelong = n1<n2
if (closelong)
    strategy.close("buy")
closeshort = n1>n2
if (closeshort)
    strategy.close("sell")
if (ma_function(tr(true), length)<p and p>p[length] and n1>n2)
    strategy.entry("buy", strategy.long, comment="BUY")
if (ma_function(tr(true), length)>p and p<p[length] and n1<n2)
    strategy.entry("sell", strategy.short, comment="SELL")