Esta estratégia é baseada no indicador Hull Moving Average inventado por Alan Hull, pertencente às estratégias de tendência.
Calcular as MAs de curto e longo prazo de Hull.
Quando os MAs do Hull de curto período se cruzam, determine a inversão da tendência. Filtre com a direção da tendência de longo período.
Adicionar a ruptura do preço através da condição Hull MA para garantir a ruptura bem sucedida.
Adicionar um filtro de taxa de variação de preço para evitar a entrada de ruptura indesejada.
Configure stop loss e aproveite para controlar o risco.
Em comparação com as médias móveis simples, as vantagens desta estratégia incluem:
O Hull MA responde às alterações de preços mais rapidamente, capaz de captar as tendências em tempo hábil.
A estrutura MA de casco duplo pode determinar as tendências em prazos longos e curtos.
Os filtros de ruptura de preços e taxa de variação ajudam a evitar falsas rupturas.
O sistema de bloqueio de perdas e de tomada de lucro dinâmico bloqueia o lucro e controla o risco.
Riscos desta estratégia:
A configuração incorreta dos parâmetros pode deixar de virar a tendência do preço.
A avaliação errada da tendência global pode causar negociações contra-tendência.
A definição de stop loss demasiado larga pode conduzir a grandes perdas.
A troca demasiado frequente aumenta os custos de transacção e os riscos de deslizamento.
Pode ser otimizada nos seguintes aspectos:
Otimizar os períodos de MA do casco para equilibrar sensibilidade e suavidade.
Otimizar os parâmetros de entrada e saída para encontrar valores ótimos.
Teste a robustez dos parâmetros em diferentes instrumentos para melhorar a adaptabilidade.
Incorporar o volume para evitar riscos de divergência.
Adicionar condições para melhorar a estabilidade.
Em geral, esta estratégia aproveita a capacidade de resposta da Hull MA para acompanhar as tendências em tempo hábil e tem uma forte rentabilidade sob controlo de riscos.
/*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)