Estratégia de avanço do HMA

Autora:ChaoZhang, Data: 2024-01-04 15:34:52
Tags:

img

II. Visão geral da estratégia

Esta estratégia utiliza o indicador HMA (Hull Moving Average) e a análise técnica da K-line para realizar o julgamento do ímpeto e as operações de avanço nos preços.

III. Princípio da estratégia

  1. Princípio do indicador HMA

O indicador HMA foi criado por Alan Hull em 2005 para criar uma média móvel sensível e suave.

(1) Calcular o DMA médio de dupla suavização de meio ciclo

(2) Calcular a SMA média do ciclo completo

(3) Calcular a diferença DIFF entre DMA e SMA

(4) Calcular a linha média do ciclo SQRT ((período) do DIFF para obter HMA

  1. Estratégia comercial

A estratégia utiliza as avanças para cima e para baixo do indicador HMA como sinais, combinados com a avança da parte da entidade da linha K, para gerar sinais de compra e venda.

IV. Vantagens da Estratégia

  1. A característica de convergência do indicador HMA torna-o extremamente sensível às variações de preços, mantendo simultaneamente a suavidade da média móvel para evitar falsos sinais.

  2. O mecanismo de dupla passagem melhora a fiabilidade dos sinais e evita que sejam presos.

  3. O stop loss dinâmico e a proteção dos lucros otimizam o risco e o retorno.

  4. A negociação totalmente automatizada simplifica as operações.

V. Riscos da estratégia

  1. Em violentas flutuações de mercado, a probabilidade de um stop loss ser atingido é maior.

  2. A alta frequência de negociação aumenta os custos de comissão.

  3. Configurações incorretas de parâmetros podem gerar muitos sinais falsos.

Soluções

  1. Otimizar as condições de stop loss e take profit e definir retracements razoáveis.

  2. Ajustar a frequência das negociações para reduzir o impacto das comissões.

  3. Testar e otimizar as condições de ciclo e de ruptura do HMA para determinar parâmetros ideais.

VI. Orientações de otimização da estratégia

  1. Incorporar indicadores de avaliação da tendência para evitar a negociação de contra-tendência.

  2. Aumentar o julgamento automático da mudança de fonte de dados para se adaptar a mais ambientes de mercado.

  3. Aumentar os algoritmos de aprendizagem de máquina para obter otimização automática de parâmetros.

  4. Implementar no servidor para obter verificação de negociação ao vivo 24 horas.

VII. Resumo

A estratégia de ruptura de momento HMA utiliza as vantagens únicas da média móvel Hull para capturar com precisão o momento do mercado. O mecanismo de filtragem de ruptura dupla melhora a qualidade do sinal e o stop de lucro e stop de perda dinâmicos protegem o rendimento. Esta estratégia é fácil de usar, eficaz e uma ferramenta de negociação quantitativa muito prática que vale a pena promover.


/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
//SeaSide420
strategy("Hull Moving Average and Daily Candle Crossover", shorttitle="Hull&D", 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)
// settings----------------------
q=input(title="HullMA",defval=5)
SL = input(defval=-10000.00, title="Stop Loss in $", type=float, step=1)
TP = input(defval=500.00, title="Target Point in $", type=float, step=1)
price=input(ohlc4,title="Price data")
ot=1
p=price[1]
// Daily candle crossover---------
dt = 0.0010
Daily=(p-p[1])/p[1]
//--------------------------------
// Hull MA's----------------------
n2ma=2*wma(p,round(q/2))
nma=wma(p,q)
diff=n2ma-nma
sqn=round(sqrt(q))
n2ma1=2*wma(p[1],round(q/2))
nma1=wma(p[1], q)
diff1=n2ma1-nma1
sqn1=round(sqrt(q))
n1=wma(diff,sqn)
n2=wma(diff1,sqn)
//---------------------------------
// Plotting------------------------
z1e=n1>n2?green:black
z2e=n1>n2?black:red
z3e=n1>n2?green:red
n1e=plot(n1, title="HMA1", color=z1e, linewidth=2, offset=2)
n2e=plot(n2, title="HMA2", color=z2e, linewidth=2, offset=2)
fill(n1e, n2e, color=z3e, transp=80)
// Order controls-------------------
closelong = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] or strategy.openprofit<SL or strategy.openprofit>TP
if (closelong)
    strategy.close("Long")
closeshort = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] or strategy.openprofit<SL or strategy.openprofit>TP
if (closeshort)
    strategy.close("Short")
longCondition = n1>n2 and n1[1]>n2[1] and n1[2]>n2[2] and strategy.opentrades<ot and Daily>dt and close>n1
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = n1<n2 and n1[1]<n2[1] and n1[2]<n2[2] and strategy.opentrades<ot and Daily<dt and close<n1 
if (shortCondition)
    strategy.entry("Short",strategy.short)

Mais.