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.
Parâmetros de entrada: Período de MA do casco Período, quadro de tempo HMA2 Resolução2, quadro de tempo HMA3 Resolução3
Calcular o valor de MA do casco HMA
Calcular o valor de MA do casco HMA2 no período de tempo Resolution2
Calcular o valor de Hull MA HMA3 no quadro de tempo Resolution3
Comparar a relação de magnitude entre HMA, HMA2, HMA3
Gerar sinal de compra quando HMA>HMA2>HMA3
Gerar sinal de venda quando HMA
Apresentação dos valores e sinais de MA do casco em diferentes prazos na parte superior esquerda do gráfico
Use cores para distinguir tendências ascendentes e descendentes
Usar vários prazos pode filtrar falsas fugas e evitar armadilhas.
Parâmetros de prazo personalizáveis, adaptáveis a diferentes períodos e volatilidade.
Display de sinal em tempo real, operação intuitiva.
As tendências de Hull MA visualizadas ajudam a determinar a tendência atual.
Configurações incorretas dos parâmetros podem causar excesso de negociação.
Um período de tempo mais longo do Hull MA tem um efeito de atraso, pode perder pontos de viragem da tendência.
Pode gerar sinais falsos em torno da transição touro-urso.
As estratégias de fuga são propensas a serem apanhadas por falsas fugas.
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.
Otimizar o período de MA de Hull adaptável a diferentes períodos e volatilidade.
Adicione o indicador de volume para evitar falhas.
Adicione osciladores para determinar a força da tendência.
Incorporar modelos de aprendizagem de máquina para o calendário de compra/venda.
Combine indicadores de sentimento para detectar o hype do mercado.
Ajustar a estratégia de stop loss para uma melhor gestão dos riscos.
Personalizar as condições de compra/venda com outros sinais de indicadores.
Adicionar estratégias de negociação baseadas em canal de preços ou onda.
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)