Estratégia de negociação de média móvel de Hull entre linhas do tempo


Data de criação: 2023-11-07 16:54:14 última modificação: 2023-11-07 16:54:14
cópia: 0 Cliques: 697
1
focar em
1617
Seguidores

Estratégia de negociação de média móvel de Hull entre linhas do tempo

Visão geral

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.

Princípio da estratégia

  1. Parâmetros de entrada: Hull MA Period, HMA2 Resolution2, HMA3 Resolution3

  2. Calcule o valor de Hull MA HMA na linha K atual

  3. Calcule o MA do Hull HMA2 na linha do tempo Resolution 2

  4. Calcule o Hull MAHMA3 na linha de tempo Resolution3

  5. Comparação entre HMA, HMA2 e HMA3

  6. Quando HMA > HMA2 > HMA3, gera um sinal de compra

  7. Quando HMA < HMA2 < HMA3, gera um sinal de venda

  8. Os valores e sinais do MA do Hull em diferentes eixos de tempo são mostrados na parte superior esquerda da interface

  9. Colocação de cores para distinguir os estados de queda e queda

Análise de vantagens

  1. O uso de várias linhas de tempo permite o filtro de falhas e evita que sejam feitas.

  2. Parâmetros de eixo de tempo personalizáveis para diferentes períodos.

  3. Apresentação de sinais em tempo real, operação intuitiva.

  4. Visualizar a evolução do Hull MA para avaliar a tendência atual.

Análise de Riscos

  1. A configuração inadequada dos parâmetros pode levar a transações muito frequentes.

  2. O Hull MA de grande ciclo está atrasado e pode ter perdido o ponto de viragem da tendência.

  3. A estratégia gerou um falso sinal quando o boi e o urso se transformaram.

  4. A estratégia do tipo “breakout” é fácil de ser falsificada.

  5. 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.

Direção de otimização

  1. Optimizar os parâmetros do ciclo Hull MA para adaptar-se a diferentes ciclos e taxas de flutuação.

  2. Aumentar o julgamento de indicadores de volume de negócios para evitar falsas brechas.

  3. Aumentar os indicadores de convulsão para determinar a intensidade da tendência.

  4. A adição de modelos de aprendizagem de máquina para determinar o momento de compra e venda.

  5. A partir daí, a pesquisa foi dividida em três partes:

  6. Ajustar a estratégia de stop loss e otimizar o gerenciamento de risco.

  7. Criação de condições de compra e venda personalizadas e combinação de outros sinais de indicadores

  8. Aumentar as estratégias de negociação baseadas em canais e bandas de preços.

Resumir

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.

Código-fonte da estratégia
/*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)