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


Data de criação: 2023-09-19 16:40:00 última modificação: 2023-09-19 16:40:00
cópia: 1 Cliques: 638
1
focar em
1617
Seguidores

Visão geral

Esta estratégia é baseada no indicador de média móvel de Hull, desenvolvido por Alan Hull, e pertence à estratégia de acompanhamento de tendências. O indicador pode reduzir efetivamente o efeito de atraso das médias móveis e é mais sensível à resposta às mudanças de preço. A estratégia usa a média móvel de Hull para determinar a direção da tendência e, em combinação com condições de filtragem adicionais, para enviar sinais de negociação.

Princípio da estratégia

  1. Calcule a média móvel de Hull de um conjunto de curto e longo períodos. O curto período determina a direção da negociação específica e o longo período determina a direção da tendência geral.

  2. Quando o curto período de Hull MA é atravessado, a tendência é julgada como uma reversão. Combinado com a direção da grande tendência, o filtro de ruído negocia.

  3. Aumentar o preço para quebrar a condição de Hull MA para garantir o sucesso da ruptura.

  4. Aumentar a taxa de variação de preços para evitar uma ruptura desejável.

  5. Configurar condições de stop loss e stop loss para controlar o risco.

Análise de vantagens

Em comparação com a média móvel normal, esta estratégia tem as seguintes vantagens:

  1. O Hull MA responde mais rapidamente às mudanças de preço e pode capturar a mudança de tendência em tempo hábil.

  2. A estrutura Hull MA dupla pode determinar tendências em duas dimensões temporais, grande e pequena.

  3. As condições de ruptura de preços e de variação de taxa podem filtrar efetivamente as falsas rupturas.

  4. O stop loss dinâmico bloqueia o lucro e controla o risco.

Análise de Riscos

A estratégia também apresenta os seguintes riscos:

  1. Se os parâmetros não forem ajustados corretamente, pode-se perder uma reviravolta na tendência de preços.

  2. A análise errada das grandes tendências pode levar a negociações contractuais.

  3. O excesso de largura na configuração do Stop Loss pode levar a maiores perdas.

  4. A frequência das transações aumenta os custos das transações e o risco de deslizamento.

Direção de otimização

Otimizar o seu conteúdo pode ser feito de várias maneiras:

  1. Otimização do ciclo Hull MA, equilibrando sensibilidade e suavidade.

  2. Optimizar os parâmetros de entrada e saída para encontrar os valores ideais.

  3. Testar a robustez dos parâmetros de diferentes variedades e melhorar a adaptabilidade da estratégia.

  4. Indicadores de potência combinada para evitar o risco de desvio

  5. Aumentar as condições e aumentar a estabilidade da estratégia.

Resumir

Em geral, a estratégia utiliza a rapidez de resposta do Hull MA para um acompanhamento atempado da tendência, com uma forte capacidade de lucratividade sob o pressuposto de controlar o risco. No entanto, é necessário prestar atenção à otimização de parâmetros e prevenir alguns riscos sistemáticos mais difíceis de evitar.

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

//@version=2
//SeaSide420
strategy("SS420FX", overlay=true, default_qty_type=strategy.percent_of_equity, max_bars_back=720, default_qty_value=100, calc_on_order_fills= true, calc_on_every_tick=true, pyramiding=0)
q=input(title="HullMA Short",defval=14)
z=input(title="HullMA Long",defval=14)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
SL = input(defval=-50000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=100000.00, title="Target Point in $", type=float, step=1)
ot=1
n2ma=2*wma(close,round(q/2))
nma=wma(close,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(close[1],round(q/2))
nma1=wma(close[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
z2ma=2*wma(close[11],round(z/2))
zma=wma(close[11],z)
ziff=n2ma-nma
zqn=round(sqrt(z))
z2ma1=2*wma(close[12],round(z/2))
zma1=wma(close[12], z)
ziff1=n2ma1-nma1
zqn1=round(sqrt(z))
z1=wma(diff,sqn)
z2=wma(diff1,sqn)
z1e=z1>z2?green:black
z2e=z1>z2?black:red
z3e=z1>z2?green:red
n1e=plot(z1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(z2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
confidence=(security(syminfo.tickerid, 'D', close)-security(syminfo.tickerid, 'D', close[1]))/security(syminfo.tickerid, 'D', close[1])
closelong = n1<n2 and close<n2 and confidence<dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and close>n2 and confidence>dt or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and z1>z2 and strategy.opentrades<ot and confidence>dt and close>n1
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and z1<z2 and strategy.opentrades<ot and confidence<dt and close<n1 
if (shortCondition)
    strategy.entry("Short",strategy.short)