
A estratégia usa uma média ponderada linear indexada mais rápida (EHMA) e um canal de adaptação para construir uma estratégia de acompanhamento de tendências. Como o EHMA é mais rápido, é possível identificar efetivamente as tendências de mudanças de preço e evitar que falsas rupturas gerem sinais de negociação desnecessários.
A média ponderada linear indexada (EHMA) calculada com base no parâmetro Period. A velocidade de cálculo da EHMA é rápida e eficaz para acompanhar a tendência das mudanças de preço.
De acordo com o parâmetro RangeWidth, um canal de adaptação é expandido para cima e para baixo na EHMA. Só quando o preço está acima da linha de canal superior ou abaixo da linha de canal inferior, é considerado que a tendência se desloca e emite um sinal de negociação.
Determine a relação entre o preço e o canal. O preço é mais alto quando o canal passa para cima e fica vazio quando o canal passa para baixo. O preço é mais baixo quando o canal passa para cima e fica vazio quando o canal passa para baixo.
A estratégia tem as seguintes vantagens em comparação com a estratégia de média móvel comum:
A EHMA é mais sensível à resposta à tendência de mudança de preço, identificando eficazmente as mudanças de tendência e evitando que as falsas rupturas causem transações desnecessárias.
Os canais de adaptação podem filtrar oscilações de preços. Os sinais de negociação só são gerados quando os preços determinam uma mudança de tendência. Pode filtrar algumas negociações inativas e aumentar a probabilidade de lucro.
A largura do canal pode ser adaptada de forma flexível a diferentes condições de mercado. O canal largo pode filtrar mais oscilações, reduzindo a frequência de negociação; o canal estreito pode identificar mudanças de tendência mais cedo, aumentando a frequência de negociação.
A estratégia também apresenta os seguintes riscos:
Ainda não é possível evitar completamente a falsa ruptura. Os preços podem ter rupturas, correndo diretamente para cima ou para baixo na faixa de corredor.
Se o canal for muito amplo, algumas oportunidades de negociação podem ser perdidas. O canal pode ser apropriadamente estreitado para aumentar a sensibilidade.
O canal é muito estreito, o que aumenta o número de transações inválidas. A largura do canal pode ser aumentada adequadamente para aumentar a estabilidade.
A estratégia pode ser melhorada em vários aspectos:
Parâmetro de otimização Period. Ajustar o ciclo de cálculo da média para adaptar-se às características de diferentes variedades e gráficos periódicos.
Parâmetro de otimização RangeWidth. Adaptação do alcance do canal de acordo com a volatilidade do mercado e as preferências pessoais de risco.
Aumentar a estratégia de stop loss. Durante a manutenção da posição, definir um ponto de stop loss razoável para controlar efetivamente a perda máxima de uma única transação.
Em combinação com outros indicadores de filtragem de entradas. Por exemplo, aumentar a quantidade de transações e reduzir a ineficiência das entradas.
Aplicações de multivariedade e otimização de parâmetros. Teste em mais variedades e ciclos, otimize parâmetros gerais.
A estratégia integra os indicadores EHMA e os indicadores de corredores de adaptação, formando uma estratégia de acompanhamento de tendências. Pode identificar efetivamente as tendências do mercado, enquanto filtra os movimentos de preços e evita transações desnecessárias. Depois de uma série de parâmetros de otimização e controle de risco, é possível obter lucros estáveis em várias variedades e ciclos.
/*backtest
start: 2023-02-25 00:00:00
end: 2024-02-25 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
args: [["v_input_1",1]]
*/
// Credit is due where credit is due:
// Hull Moving Average: developed by Alan Hull
// EHMA: coded by Twitter @borserman
// I've built on their work in an attempt to create a strategy more robust to fake moves
// @0xLetoII
//@version=4
strategy(
title="EHMA Range Strategy",
process_orders_on_close=true,
explicit_plot_zorder=true,
overlay=true,
initial_capital=1500,
default_qty_type=strategy.percent_of_equity,
commission_type=strategy.commission.percent,
commission_value=0.085,
default_qty_value=100
)
// Position Type
pos_type = input(defval = "Long", title="Position Type", options=["Both", "Long", "Short"])
// Inputs
Period = input(defval=180, title="Length")
RangeWidth = input(defval=0.02, step=0.01, title="Range Width")
sqrtPeriod = sqrt(Period)
// Function for the Borserman EMA
borserman_ema(x, y) =>
alpha = 2 / (y + 1)
sum = 0.0
sum := alpha * x + (1 - alpha) * nz(sum[1])
// Calculate the Exponential Hull Moving Average
EHMA = borserman_ema(2 * borserman_ema(close, Period / 2) - borserman_ema(close, Period), sqrtPeriod)
// Create upper & lower bounds around the EHMA for broader entries & exits
upper = EHMA + (EHMA * RangeWidth)
lower = EHMA - (EHMA * RangeWidth)
// Plots
EHMAcolor = (close > EHMA ? color.green : color.red)
plot(EHMA, color=EHMAcolor, linewidth=2)
plot(lower, color=color.orange, linewidth=2)
plot(upper, color=color.blue, linewidth=2)
// Strategy
long = close > upper
exit_long = close < lower
short = close < lower
exit_short = close > upper
// Calculate start/end date and time condition
startDate = input(timestamp("2017-01-01T00:00:00"))
finishDate = input(timestamp("2029-01-01T00:00:00"))
time_cond = true
// Entries & Exits
if pos_type == "Both"
strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)
if pos_type == "Long"
strategy.entry("Long", strategy.long, comment="Long", when=long and time_cond)
strategy.close("Long", comment="Exit Long", when=exit_long and time_cond)
if pos_type == "Short"
strategy.entry("Short", strategy.short, comment="Short", when=short and time_cond)
strategy.close("Short", comment="Exit Short", when=exit_short and time_cond)