Média móvel dupla HullMA Crossover Trend Strategy

Autora:ChaoZhang, Data: 2024-02-26 11:21:45
Tags:

img

Resumo

A estratégia HullMA Crossover Trend é uma estratégia de seguimento de tendências baseada no cruzamento de médias móveis duplas.

Estratégia lógica

A estratégia de tendência de cruzamento de média móvel HullMA emprega três linhas WMA com períodos diferentes, incluindo wma1, wma2 e wma3.

Além disso, a estratégia utiliza a média móvel de Hull para fortalecer a validação do sinal. Especificamente, calcula a diferença entre o WMA duplicado de 2 períodos (n2ma) e o WMA de n períodos (nma). Somente quando a diferença subir, os sinais bull serão confirmados como válidos. Somente quando a diferença cair, os sinais bear serão confirmados como válidos.

A estratégia também incorpora a validação de preços. Somente quando o preço é maior que o dia anterior, os sinais de touro serão confirmados válidos para ordens longas. Somente quando o preço é menor que o dia anterior, os sinais de bear serão confirmados válidos para ordens curtas.

Análise das vantagens

A estratégia de tendência de cruzamento de média móvel HullMA combina cruzamento de média móvel dupla e validação de preço, o que permite filtrar efetivamente sinais falsos. Esta é sua maior força. Além disso, com três linhas de média móvel de vários períodos, a estratégia pode capturar tendências de diferentes níveis no início. Seu mecanismo de stop loss também é bastante estável e confiável.

Análise de riscos

Como uma estratégia de tendência, a estratégia de tendência de cruzamento de média móvel HullMA pode gerar relativamente mais negociações e custos de deslizamento durante os mercados de faixa. Além disso, os sistemas de cruzamento de média móvel dupla tendem a ser muito sensíveis e podem emitir sinais incorretos durante tendências laterais. É aconselhável ajustar os parâmetros da média móvel ou impor filtros adicionais em conformidade.

Orientações de otimização

A estratégia de tendência de dupla média móvel HullMA Crossover pode ser melhorada nos seguintes aspectos:

  1. Otimizar os parâmetros da média móvel para encontrar a melhor combinação de parâmetros

  2. Adicione filtros como volume ou volatilidade para eliminar falhas

  3. Incorporar outros indicadores como validação suplementar para melhorar a qualidade do sinal

  4. Optimização dinâmica dos parâmetros da média móvel do período

Resumo

Em resumo, a estratégia de tendência de cruzamento de média móvel dupla HullMA é uma estratégia estável e confiável de tendência. Produz sinais de alta qualidade combinando cruzamento de média móvel dupla e validação de preço. Através do ajuste de parâmetros e adição de filtros, pode reduzir ainda mais os sinais incorretos e alcançar um melhor desempenho. É adequado para capturar tendências de médio a longo prazo e uma escolha sólida para negociação quantitativa.


/*backtest
start: 2023-02-25 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy("ZendicatoR", overlay=true)
dt = input(defval=0.0010, title="Decision Threshold", type=float, step=0.0001)
keh=input(title="Double HullMA Cross",defval=7, minval=1)
che1=input(title="MA 1",defval=34,minval=1)
che2=input(title="MA 2",defval=144,minval=1)
che3=input(title="MA 3",defval=377,minval=1)
amnt=input(title="TP ($)",defval=4200,minval=1)
wma1=wma(close,che1)
wma2=wma(close,che2)
wma3=wma(close,che3)
tms=10000000000000
A=request.security(syminfo.tickerid, 'D', close)*tms
B=request.security(syminfo.tickerid, 'D', close[1])*tms
C=A>B?green:red
D=wma2>wma3?green:red
plot(wma1,style=line,color=C,linewidth=4)
p1=plot(wma2,style=line,color=D)
p2=plot(wma3,style=line,color=D)
fill(p1, p2, color=D, transp=75)
n2ma=2*wma(close,round(keh/2))
nma=wma(close,keh)
diff=n2ma-nma,sqn=round(sqrt(keh))
n2ma1=2*wma(close[2],round(keh/2))
nma1=wma(close[2],keh)
diff1=n2ma1-nma1,sqn1=round(sqrt(keh))
n1=wma(diff,sqn)*tms
n2=wma(diff1,sqn)*tms
closelong = A*tms<B*tms and n2*tms>n1*tms and strategy.openprofit>amnt
if (closelong)
    strategy.close("Long")
closeshort = A*tms>B*tms and n1*tms>n2*tms and strategy.openprofit>amnt
if (closeshort)
    strategy.close("Short") 
longCondition = A*tms>B*tms and n1*tms>n2*tms
if (longCondition)
    strategy.entry("Long",strategy.long)
shortCondition = A*tms<B*tms and n1*tms<n2*tms
if (shortCondition)
    strategy.entry("Short",strategy.short)

Mais.