
A estratégia de negociação de média móvel bidirecional de Hall é uma estratégia de negociação quantitativa que utiliza a média móvel bidirecional de Hall como sinal de negociação. A estratégia se baseia no uso de uma única média móvel na análise técnica tradicional, substituindo a média móvel bidirecional de Hall para comprar e vender em pontos de ruptura.
O núcleo da estratégia de negociação de médias móveis de Halle é a média móvel de Halle (Dual Hull Moving Average). A média móvel de Halle é composta por três linhas no meio, no topo e no fundo, representando diferentes médias de preços.
Trilha central:Mode (modeSwitch, src, len) Em linha: HULL[0] Subtracção: HULL[2]
A função Mode aqui permite escolher diferentes variantes da média móvel de Hull, incluindo HMA, EHMA e THMA. SRC representa a origem do preço e LEN representa o comprimento do ciclo.
A estratégia baseia-se na trajectória média de uma média móvel Halley bidirecional para determinar a relação entre o preço e a trajectória média e estabelecer um sinal de negociação:
Ou seja, se o preço de fechamento da linha K atual for maior do que o valor da linha média, então faça mais na próxima linha de fechamento da linha K; se o preço de fechamento da linha K atual for menor do que o valor da linha média, então feche a posição na próxima linha de fechamento da linha K.
A estratégia de negociação de média móvel bidirecional de Hall tem as seguintes vantagens:
O uso de zonas de banda bidireccional em vez de uma única linha uniforme, tem um melhor efeito de suporte e resistência, e é mais vantajoso para o acompanhamento de tendências.
Em comparação com a média móvel geral, a média móvel de Hull tem menor atraso e pode responder mais rapidamente às mudanças de preço.
O método de análise técnica tradicional é fácil de entender e adequado para a automação de transações.
A lógica da estratégia é simples, clara e fácil de implementar, adequada para a negociação de algoritmos de alta frequência.
Tipos e parâmetros de médias móveis de Hull personalizáveis podem ser otimizados para diferentes variedades e prazos de negociação.
Apesar de haver muitos benefícios para a estratégia de negociação de média móvel bidirecional de Hall, há alguns riscos a serem observados:
Quando os preços oscilam, pode haver mais stop loss. Pode-se ajustar os parâmetros de forma apropriada, filtrando parte do ruído das transações.
A estratégia é baseada principalmente no acompanhamento de tendências e não é eficaz quando os preços são horizontais. Outros indicadores ou mecanismos podem ser adicionados para julgar a tendência.
A própria média móvel de Hull também apresenta um atraso, especialmente no curto prazo. A otimização de parâmetros e a combinação de indicadores podem ser parcialmente resolvidos.
Os sinais de negociação são frequentes e são facilmente sobre-negociados. O gerenciamento de posições e a frequência de negociação são adequadamente controlados.
A estratégia de negociação de uma média móvel bidirecional de Hall tem algumas melhorias importantes:
Otimizar o tipo e os parâmetros da média móvel de Hull, ajustando a sensibilidade da trajectória central para adaptá-la às diferentes variedades de negociação.
Adição de um mecanismo de parada de perdas. Trailing stop ou stop incremental, para controlar efetivamente a perda individual.
Combine com outros indicadores para determinar a direção e a intensidade da tendência, evitando ser encaixado. Como MACD, KD, etc.
Adicionar condições de ativação de estratégias baseadas em número de transações ou taxa de retorno. Controlar o número de ciclos de fechamento e reduzir as posições livres.
Combinação de múltiplos quadros temporais. Utilize quadros temporais mais altos para determinar a direção da tendência e evitar ser enganado pelo ruído.
Otimizar a lógica de entrada e saída. Pode ser baseado na forma de candeia, aumentando a certeza de entrada.
A estratégia de negociação de média móvel bidirecional de Hall é, em geral, uma estratégia quantitativa que utiliza a média móvel de tendência para construir sinais de negociação. Em comparação com a média móvel tradicional, a resposta é mais rápida e o acompanhamento é melhor. A lógica da estratégia é simples, clara e fácil de implementar, adequada para negociação automatizada.
/*backtest
start: 2022-12-04 00:00:00
end: 2023-12-10 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
//Basic Hull Ma Pack tinkered by InSilico
//Converted to Strategy by DashTrader
strategy("Hull Suite Strategy", overlay=true, pyramiding=1, default_qty_type= strategy.percent_of_equity, default_qty_value = 100, calc_on_order_fills=false, slippage=0,commission_type=strategy.commission.percent,commission_value=0)
//////////////////////////////////////////////////////////////////////
// Testing Start dates
testStartYear = input(2016, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
//Stop date if you want to use a specific range of dates
testStopYear = input(2030, "Backtest Stop Year")
testStopMonth = input(12, "Backtest Stop Month")
testStopDay = input(30, "Backtest Stop Day")
testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() =>
time >= testPeriodStart and time <= testPeriodStop ? true : false
// Component Code Stop
//////////////////////////////////////////////////////////////////////
//INPUT
HAClose = security(heikinashi(syminfo.tickerid), timeframe.period, close)
src = input(close, title="Source")
modeSwitch = input("Hma", title="Hull Variation", options=["Hma", "Thma", "Ehma"])
length = input(55, title="Length(180-200 for floating S/R , 55 for swing entry)")
switchColor = input(true, "Color Hull according to trend?")
candleCol = input(false,title="Color candles based on Hull's Trend?")
visualSwitch = input(true, title="Show as a Band?")
thicknesSwitch = input(1, title="Line Thickness")
transpSwitch = input(40, title="Band Transparency",step=5)
//FUNCTIONS
//HMA
HMA(_src, _length) => wma(2 * wma(_src, _length / 2) - wma(_src, _length), round(sqrt(_length)))
//EHMA
EHMA(_src, _length) => ema(2 * ema(_src, _length / 2) - ema(_src, _length), round(sqrt(_length)))
//THMA
THMA(_src, _length) => wma(wma(_src,_length / 3) * 3 - wma(_src, _length / 2) - wma(_src, _length), _length)
//SWITCH
Mode(modeSwitch, src, len) =>
modeSwitch == "Hma" ? HMA(src, len) :
modeSwitch == "Ehma" ? EHMA(src, len) :
modeSwitch == "Thma" ? THMA(src, len/2) : na
//OUT
HULL = Mode(modeSwitch, src, length)
MHULL = HULL[0]
SHULL = HULL[2]
//COLOR
hullColor = switchColor ? (HULL > HULL[2] ? #00ff00 : #ff0000) : #ff9800
//PLOT
///< Frame
Fi1 = plot(MHULL, title="MHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
Fi2 = plot(visualSwitch ? SHULL : na, title="SHULL", color=hullColor, linewidth=thicknesSwitch, transp=50)
///< Ending Filler
fill(Fi1, Fi2, title="Band Filler", color=hullColor, transp=transpSwitch)
///BARCOLOR
barcolor(color = candleCol ? (switchColor ? hullColor : na) : na)
if HULL[0] > HULL[2] and testPeriod()
strategy.entry("long", strategy.long)
if HULL[0] < HULL[2] and testPeriod()
strategy.close("long")