Esta estratégia é baseada no indicador de média móvel Hull para construir uma tendência após o sistema de negociação.
Esta estratégia usa a média móvel de Hull como principal indicador técnico. A média móvel de Hull foi proposta pelo comerciante americano Alan Hull em 2005.
Especificamente, a média móvel de Hull contém duas médias - uma é a média móvel MA ((n) do período n, a outra é a média móvel MA ((n/2) do período n/2. A diferença entre as duas médias móveis forma a curva de diferença de Hull.
Quando a curva de Hull desce, a média móvel do período mais curto cruza acima da média móvel do período mais longo, dando um sinal longo.
Esta estratégia define o período n da curva de Hull para 16. Calcula o MA de 8 períodos (n/2=8), o MA de 16 períodos e a diferença entre eles para obter a curva de Hull. Em seguida, leva o MA de 4 períodos (raiz quadrada de n=4) da própria curva de Hull. Quando a curva de Hull cruza para cima, ela vai longa. Quando a curva de Hull cruza para baixo, ela vai curta.
Em comparação com as médias móveis ordinárias, a média móvel Hull tem as seguintes vantagens:
Usando uma função de raiz quadrada, a curva Hull abraça a ação do preço mais perto e é mais rápida para capturar inversões de tendência.
A curva de Hull pode filtrar algum ruído e evitar trocas desnecessárias.
A curva Hull precisa apenas de um parâmetro n, tornando a otimização mais fácil.
O valor n da curva Hull pode ser ajustado para diferentes mercados e personalizado para se adequar a diferentes instrumentos.
O sistema Hull é robusto e evita a selecção manual, aderindo à consistência dos sistemas de negociação mecânicos.
Apesar das suas vantagens em relação aos sistemas de médias móveis, o sistema Hull carrega ainda os seguintes riscos:
Como uma estratégia de perseguição de tendências, os sistemas Hull são propensos a parar durante mudanças drásticas de tendência.
A resposta rápida das curvas de Hull pode aumentar a frequência das transacções e conduzir a uma sobrecompra.
Ter apenas um parâmetro n pode levar a riscos de ajustamento da curva devido à otimização excessiva.
O sistema Hull funciona menos bem para instrumentos com elevada volatilidade.
Com base nas limitações acima referidas, a estratégia da média móvel de Hull pode ser melhorada nos seguintes aspectos:
Adicione filtros com indicadores adicionais para evitar falsos cruzes. MACD, KD etc. pode ajudar a medir a tendência.
Adicionar estratégias de stop loss para controlar a perda de uma única transação, por exemplo, com trailing stops ou take profit stops.
Otimize a seleção de parâmetros n para evitar a otimização excessiva.
Usar modelos de aprendizagem de máquina como RNNs para otimizar dinamicamente os valores dos parâmetros.
Otimizar os parâmetros separadamente para diferentes instrumentos utilizando a adaptação de aprendizado de máquina.
Otimizar o dimensionamento das posições para reduzir a frequência de negociação.
O Hull Moving Average é uma estratégia típica de seguir tendências. Apesar de suas vantagens em relação aos MAs, ele ainda enfrenta problemas como otimização excessiva e overtrading. Podemos melhorar a estratégia por meio da otimização de parâmetros, stop losses, dimensionamento de posições, etc. O sistema Hull é simples e prático. Merece mais pesquisa e aprimoramento incorporando mais indicadores e técnicas para construir um sistema de negociação robusto.
/*backtest start: 2023-10-25 00:00:00 end: 2023-11-01 00:00:00 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //Noro //2018 //@version=3 strategy(title = "Noro's HullMA Strategy", shorttitle = "HullMA str", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 0) //Settings needlong = input(true, defval = true, title = "Long") needshort = input(true, defval = true, title = "Short") capital = input(100, defval = 100, minval = 1, maxval = 10000, title = "Capital, %") n = input(title = "HullMA period", defval=16) fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") //HullMA n2ma=2*wma(close,round(n/2)) nma=wma(close,n) diff=n2ma-nma sqn=round(sqrt(n)) n2ma1=2*wma(close[1],round(n/2)) nma1=wma(close[1],n) diff1=n2ma1-nma1 sqn1=round(sqrt(n)) n1=wma(diff,sqn) n2=wma(diff1,sqn) c=n1>n2?green:red ma=plot(n1,color=c) //Trading lot = 0.0 lot := strategy.position_size != strategy.position_size[1] ? strategy.equity / close * capital / 100 : lot[1] if n1 > n2 strategy.entry("Long", strategy.long, needlong == false ? 0 : lot) if n1 < n2 strategy.entry("Short", strategy.short, needshort == false ? 0 : lot) if true strategy.close_all()