
Esta estratégia é baseada no Hull Moving Average Indicator, calcula a Hull MA em diferentes eixos de tempo e compara o movimento da Hull MA em diferentes eixos de tempo para descobrir mudanças de tendência. Gera um sinal de compra quando o Hull MA de curto período atravessa o Hull MA de longo período; Gera um sinal de venda quando o Hull MA de curto período atravessa o Hull MA de longo período.
Parâmetros de entrada: Hull MA Period, HMA2 Resolution2, HMA3 Resolution3
Calcule o valor de Hull MA HMA na linha K atual
Calcule o MA do Hull HMA2 na linha do tempo Resolution 2
Calcule o Hull MAHMA3 na linha de tempo Resolution3
Comparação entre HMA, HMA2 e HMA3
Quando HMA > HMA2 > HMA3, gera um sinal de compra
Quando HMA < HMA2 < HMA3, gera um sinal de venda
Os valores e sinais do MA do Hull em diferentes eixos de tempo são mostrados na parte superior esquerda da interface
Colocação de cores para distinguir os estados de queda e queda
O uso de várias linhas de tempo permite o filtro de falhas e evita que sejam feitas.
Parâmetros de eixo de tempo personalizáveis para diferentes períodos.
Apresentação de sinais em tempo real, operação intuitiva.
Visualizar a evolução do Hull MA para avaliar a tendência atual.
A configuração inadequada dos parâmetros pode levar a transações muito frequentes.
O Hull MA de grande ciclo está atrasado e pode ter perdido o ponto de viragem da tendência.
A estratégia gerou um falso sinal quando o boi e o urso se transformaram.
A estratégia do tipo “breakout” é fácil de ser falsificada.
As taxas de transação não foram consideradas, o que afetaria os lucros reais.
Pode-se reduzir o risco através da otimização dos parâmetros, da combinação de outros indicadores como filtros e da liberação apropriada da linha de parada.
Optimizar os parâmetros do ciclo Hull MA para adaptar-se a diferentes ciclos e taxas de flutuação.
Aumentar o julgamento de indicadores de volume de negócios para evitar falsas brechas.
Aumentar os indicadores de convulsão para determinar a intensidade da tendência.
A adição de modelos de aprendizagem de máquina para determinar o momento de compra e venda.
A partir daí, a pesquisa foi dividida em três partes:
Ajustar a estratégia de stop loss e otimizar o gerenciamento de risco.
Criação de condições de compra e venda personalizadas e combinação de outros sinais de indicadores
Aumentar as estratégias de negociação baseadas em canais e bandas de preços.
Esta estratégia baseia-se na comparação dos indicadores de Hull MA com a movimentação da linha média em diferentes eixos temporais, para determinar a direção da tendência atual e gerar um sinal de compra e venda quando a tendência se inverte. Em comparação com uma única linha média, a Hull MA multi-eixo pode filtrar efetivamente as brechas falsas. Mas a estratégia também possui problemas de configuração de parâmetros e julgamento de tendências.
/*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)