Cross Timeframe Hull Moving Average Buy Sell Estratégia de compra e venda

Autora:ChaoZhang, Data: 2023-11-07 16:54:14
Tags:

img

Resumo

Esta estratégia baseia-se no indicador Hull Moving Average, calculando o Hull MA em diferentes prazos e comparando as tendências do Hull MA em diferentes prazos para identificar mudanças de tendência.

Estratégia lógica

  1. Parâmetros de entrada: Período de MA do casco Período, quadro de tempo HMA2 Resolução2, quadro de tempo HMA3 Resolução3

  2. Calcular o valor de MA do casco HMA

  3. Calcular o valor de MA do casco HMA2 no período de tempo Resolution2

  4. Calcular o valor de Hull MA HMA3 no quadro de tempo Resolution3

  5. Comparar a relação de magnitude entre HMA, HMA2, HMA3

  6. Gerar sinal de compra quando HMA>HMA2>HMA3

  7. Gerar sinal de venda quando HMA

  8. Apresentação dos valores e sinais de MA do casco em diferentes prazos na parte superior esquerda do gráfico

  9. Use cores para distinguir tendências ascendentes e descendentes

Análise das vantagens

  1. Usar vários prazos pode filtrar falsas fugas e evitar armadilhas.

  2. Parâmetros de prazo personalizáveis, adaptáveis a diferentes períodos e volatilidade.

  3. Display de sinal em tempo real, operação intuitiva.

  4. As tendências de Hull MA visualizadas ajudam a determinar a tendência atual.

Análise de riscos

  1. Configurações incorretas dos parâmetros podem causar excesso de negociação.

  2. Um período de tempo mais longo do Hull MA tem um efeito de atraso, pode perder pontos de viragem da tendência.

  3. Pode gerar sinais falsos em torno da transição touro-urso.

  4. As estratégias de fuga são propensas a serem apanhadas por falsas fugas.

  5. As comissões de negociação não são consideradas, o que afeta o lucro real.

Os riscos podem ser reduzidos através da otimização dos parâmetros, da combinação de outros indicadores para filtragem e da possibilidade de uma maior stop loss.

Orientações de otimização

  1. Otimizar o período de MA de Hull adaptável a diferentes períodos e volatilidade.

  2. Adicione o indicador de volume para evitar falhas.

  3. Adicione osciladores para determinar a força da tendência.

  4. Incorporar modelos de aprendizagem de máquina para o calendário de compra/venda.

  5. Combine indicadores de sentimento para detectar o hype do mercado.

  6. Ajustar a estratégia de stop loss para uma melhor gestão dos riscos.

  7. Personalizar as condições de compra/venda com outros sinais de indicadores.

  8. Adicionar estratégias de negociação baseadas em canal de preços ou onda.

Conclusão

Esta estratégia usa Hull MA multi-tempo para determinar a direção da tendência, comparando as inclinações médias móveis em todos os prazos e gerando sinais em inversões de tendência.


/*backtest
start: 2023-10-07 00:00:00
end: 2023-11-06 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//
strategy("wtfBUYorSELLffs",overlay=true,currency="USD",initial_capital=100000,default_qty_type=strategy.percent_of_equity,default_qty_value=100,commission_type=strategy.commission.percent,commission_value=0.1)
Period=input(title="Hull MA Period",type=input.integer,defval=6,minval=1)
Resolution2=input(title="HMA2 Resolution", type=input.resolution,defval="60")
Resolution3=input(title="HMA3 Resolution", type=input.resolution,defval="240")
Price=input(title="Source of Price",type=input.source,defval=open)
xOffset       = input(40, title="Panel offset (X-Axis)")
yOffset       = input(0, title="Panel offset (y-Axis)")
lightgray = #D3D3D3FF
pnlTextColor = color.silver
pnlColor = color.black
HMA = hma(Price,Period)
HMA2 = security(syminfo.tickerid, Resolution2, HMA,barmerge.gaps_off,barmerge.lookahead_off)
HMA3 = security(syminfo.tickerid, Resolution3, HMA,barmerge.gaps_off,barmerge.lookahead_off) 
HUP = HMA > HMA[1]
H1UP = security(syminfo.tickerid, Resolution2, HUP,barmerge.gaps_off,barmerge.lookahead_off)
H2UP = security(syminfo.tickerid, Resolution3, HUP,barmerge.gaps_off,barmerge.lookahead_off) 

int barSize = timeframe.isdaily ? timeframe.multiplier*86400000 : 
           timeframe.isseconds? timeframe.multiplier*1000 :
           timeframe.isminutes? timeframe.multiplier*60000 : (time[0]-time[1])
int   lapos_x = timenow + barSize*xOffset
float lapos_y = highest(20) + yOffset*syminfo.mintick * syminfo.pointvalue
f_draw_infopanel(_x, _y, _line, _text)=>
    _rep_text = ""
    for _l = 0 to _line
        _rep_text := _rep_text + "\n"
    _rep_text := _rep_text + _text
    // var label _la = na
    // label.delete(_la)
//     _la := label.new(
//          x=_x, y=_y, 
//          text=_rep_text, xloc=xloc.bar_time, yloc=yloc.price, 
//          color=pnlColor, style=label.style_labelup, textcolor=pnlTextColor, size=size.normal)
// f_draw_infopanel(lapos_x, lapos_y, 8, "╚═══════════════════════╝")
f_draw_infopanel(lapos_x, lapos_y, 6,  "HMA3 on TF " + Resolution3 + "  = " + tostring(HMA3,"#.####") + (H2UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 4,  "HMA2 on TF " + Resolution2 + "  = " +  tostring(HMA2,"#.####") + (H1UP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 2,  "HMA1 on TF " + timeframe.period + "  = " + tostring(HMA,"#.####") + (HUP ? " BUY" : " SELL"))
f_draw_infopanel(lapos_x, lapos_y, 0,  "╔═════════ HMA(" + tostring(Period,"#") +") ════════╗")
change_color=HMA>HMA3?color.green:color.red
change_color2=HMA2>HMA3?color.lime:color.yellow
plot1=plot(HMA3,color=change_color2,title="3 Hull MA Line",linewidth=2,transp=75)
plot2=plot(HMA2,color=change_color,title="2 Hull MA Line",linewidth=2,transp=75)
plot3=plot(HMA,color=color.white,title="Hull MA Line",linewidth=2,transp=75)
fill(plot1,plot3,color=change_color,transp=90)
fill(plot2,plot3,color=change_color2,transp=75)
if (H2UP and H1UP and HUP)
    strategy.entry("BUY",strategy.long)
if (not H2UP and not H1UP and not HUP)
    strategy.entry("SELL",strategy.short)

Mais.