Esta estratégia é uma estratégia de negociação de curto prazo baseada no indicador Hull Moving Average.
Esta estratégia baseia-se principalmente no indicador da média móvel Hull. A linha da média móvel Hull consiste em duas médias móveis. Primeiro, calcula a linha média móvel mediana nma do preço, com um período de hullperiod. Em seguida, calcula a linha média móvel rápida n2ma, com um período de metade dos nma
Para filtrar alguns sinais falsos, a estratégia também introduz a Hull Line (Hull_Line). A Hull Line é um resultado de regressão linear da diferença entre nma e n2ma.
As regras estratégicas são as seguintes:
Calcular o nma, com período de carcaça
Calcular o n2ma, com o período metade do período nma
Calcular a diferença entre n2ma e nma
Moving average the diff with period sqrt ((hullperiod), obtém and get the Hull Line Hull_Line
Quando o preço cruza acima da linha Hull, um sinal de compra é gerado.
Quando o preço cruza abaixo da linha Hull, um sinal de venda é gerado.
Se houver uma divergência entre o preço e a linha Hull, pular o sinal
Entrar com uma certa percentagem da posição, adotar stop loss de saída
As vantagens desta estratégia incluem:
Com base na média móvel Hull, pode rapidamente capturar a tendência e seguir a tendência
Usar Hull Line para filtrar sinais falsos e melhorar a qualidade do sinal
Uma boa relação risco/recompensa e uma utilização adequada para negociações a curto prazo
Ajuste flexível dos parâmetros, adaptável aos diferentes ambientes de mercado
Adotar reversão stop loss, pode parar a perda em tempo e controlar os riscos
Combinar a sazonalidade para evitar riscos sistémicos em períodos de tempo específicos
Esta estratégia tem também alguns riscos:
Seguindo a estratégia de tendência, não pode negociar o dia todo
Perdas maiores quando a tendência se inverte
Retardo das médias móveis, não conseguem capturar pontos de virada em tempo útil
A alta frequência de negociação leva a custos comerciais mais elevados
A definição inadequada dos parâmetros pode conduzir a uma menor rentabilidade nos mercados de gama
Para controlar estes riscos, podemos tomar as seguintes medidas:
Adotar estratégia de stop loss martingale para controlar perdas únicas
Otimizar os parâmetros e testar a robustez em diferentes ambientes de mercado
Combinar indicadores de avaliação de tendências para evitar a perseguição de tendências durante reversões
Aumentar o tempo de retenção para reduzir a frequência de negociação
Esta estratégia pode também ser otimizada nos seguintes aspectos:
Combinar indicadores de impulso para localizar o ponto de partida das tendências para uma melhor entrada
Adicionar modelos de aprendizagem de máquina para ajudar a julgar a direção e a força da tendência
Adotar configuração de parâmetros adaptativos para ajustar parâmetros com base na dinâmica do mercado em tempo real
Configurar sistemas de casco de vários prazos, com diferentes tamanhos de posição para diferentes prazos
Combinar indicadores de volume para evitar falhas com impulso insuficiente
Adicionar um modelo de dimensionamento de posições baseado na volatilidade para ajustar dinamicamente as dimensões das posições com base na volatilidade
O Hull Moving Average Swing Trading Strategy é uma estratégia eficiente de curto prazo para seguir tendências. Ele usa o sistema Hull Moving Average para determinar a direção da tendência com o propósito de seguir a tendência. Em comparação com os sistemas de média móvel única, ele tem maior qualidade de sinal e flexibilidade de parâmetros. A vantagem desta estratégia está em capturar rapidamente as mudanças de tendência com reduções relativamente pequenas. A fraqueza é a incapacidade de lidar com inversões de tendência.
/*backtest start: 2023-09-06 00:00:00 end: 2023-10-06 00:00:00 period: 6h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 // Hull Moving Average Swing Trader by SEASIDE420 strategy("Hull Moving Average Swing Trader", shorttitle="HMA_Swing_Trader", default_qty_type=strategy.percent_of_equity, default_qty_value=100, calc_on_order_fills=true, calc_on_every_tick=true, pyramiding=0) hullperiod = input(title="HullMA Period", type=input.integer, defval=210, minval=1) price = input(open, type=input.source, title="Price data") FromMonth = input(defval=1, title="From Month", minval=1, maxval=12) FromDay = input(defval=1, title="From Day", minval=1, maxval=31) FromYear = input(defval=2020, title="From Year", minval=2017) ToMonth = input(defval=1, title="To Month", minval=1, maxval=12) ToDay = input(defval=1, title="To Day", minval=1, maxval=31) ToYear = input(defval=9999, title="To Year", minval=2017) start = timestamp(FromYear, FromMonth, FromDay, 00, 00) finish = timestamp(ToYear, ToMonth, ToDay, 23, 59) window() => true n2ma = 2 * wma(price, round(hullperiod / 2)) nma = wma(price, hullperiod) diff = n2ma - nma sqn = round(sqrt(hullperiod)) n2ma1 = 2 * wma(price[1], round(hullperiod / 2)) nma1 = wma(price[1], hullperiod) diff1 = n2ma1 - nma1 n1 = wma(diff, sqn) n2 = wma(diff1, sqn) Hull_Line = n1 / n1 * n2 Hull_retracted = if n1 > n2 Hull_retracted = Hull_Line - 2 else Hull_retracted = Hull_Line + 2 c1 = Hull_retracted + n1 - price c2 = Hull_retracted - n2 + price c4 = n1 > n2 ? color.green : color.red c2p = plot(c2, color=color.black, linewidth=1) c3p = plot(price, color=color.black, linewidth=1) fill(c3p, c2p, color=c4, transp=75) //plot(cross(c1, c2) ? c1 : na, style=plot.style_circles, color=c4, linewidth=4) if price < c2 strategy.close("BUY", when=window()) if price > c2 strategy.close("SELL", when=window()) if price > c2 and price[1] > c1 strategy.entry("BUY", strategy.long, when=window()) if price < c1 and price[1] < c2 strategy.entry("SELL", strategy.short, when=window()) // /L'-, // ,'-. ` ```` / L '-, // . _,--dMMMM\ ` ` ` '`.. / '-, // : _,--, )MMMMMMMMM),. ` ,<> /_ '-,' // ; ___,--. \MM( `-' )M//MM\ ,',.; .-'* ; .' // | \MMMMMM) \MM\ ,dM//MMM/ ___ < ,; `. )`--' / // | \MM()M MMM)__ /MM(/MP' ___, \ \ ` `. `. /__, ,' // | MMMM/ MMMMMM( /MMMMP'__, \ | / `. `-,_\ / // | MM /MMM---' `--'_ \ |-' |/ `./ .\----.___ // | /MM' `--' __,- \"" |-' |_, `.__) . .F. )-. // | `--' \ \ |-' |_, _,-/ J . . . J-'-. `-., // | __ \`. | | | \ / _ |. . . . \ `-. F // | ___ / \ | `| ' __ \ | /-' F . . . . \ '` // | \ \ \ / | __ / \ | |,-' __,- J . . . . . \ // | | / |/ __,- \ ) \ / |_,- __,--' |. .__.----,' // | |/ ___ \ |'. |/ __,--' `.-;;;;;;;;;\ // | ___ \ \ | | ` __,--' /;;;;;;;;;;;;. // | \ \ |-'\ ' __,--' /;;;;;;;;;;;;;;\ // \ | | / | __,--' `--;;/ \;-'\ // \ | |/ __,--' / / \ \ // \ | __,--' / / \ \ // \|__,--' _,-;M-K, ,;-;\ // <;;;;;;;; '-;;;; // :D