Estratégia de negociação de acompanhamento do momento em quatro fatores baseada no ADX, BB %B, AO e EMA

Autora:ChaoZhang, Data: 2023-12-11 16:24:11
Tags:

img

## Visão geral Esta estratégia é chamada de Estratégia de rastreamento de momento de quatro fatores. Integra o índice de movimento direcional médio (ADX) para determinar a direção da tendência, Bollinger Bands Percentage B (BB % B) para julgar a força relativa das ações, Awesome Oscillator (AO) para determinar o momento e diferentes ciclos de médias móveis exponenciais (EMA) para julgar posições longas e curtas, alcançando o rastreamento dinâmico dos preços das ações e perseguindo ações fortes e evitando as fracas.

Princípio da Estratégia
A estratégia utiliza quatro indicadores técnicos diferentes para determinar os pontos de entrada e saída.

Condição de entrada longa: a EMA de 5 dias ultrapassa a EMA de 21 dias, a EMA de 50 dias ultrapassa a EMA de 200 dias, BB %B é superior à linha de sobrecompra definida, AO é superior ao valor positivo definido e ADX é superior ao valor definido.

Condição de entrada curta: a EMA de 5 dias cruza abaixo da EMA de 21 dias, a EMA de 50 dias cruza abaixo da EMA de 200 dias, BB %B é inferior à linha de sobrevenda definida, AO é inferior ao valor negativo definido e ADX é superior ao valor definido.

Análise de vantagens A estratégia combina múltiplos indicadores para determinar a direção da tendência e a força relativa das ações, o que pode efetivamente filtrar falhas.

  1. O indicador ADX pode determinar eficazmente a existência e a força da tendência, evitando aberturas frequentes num mercado de choque.

  2. O indicador BB % B avalia se as existências individuais estão num nível alto ou baixo, o que pode evitar efetivamente a procura de máximos e de mínimos de venda.

  3. O indicador AO determina se existe um apoio relativamente forte durante a compra para garantir a eficácia da ruptura.

  4. O indicador EMA de cruz de ouro/cruz morta, combinado com o julgamento da principal direcção do mercado, evita a abertura de posições contra a tendência.

Em resumo, esta estratégia pode controlar eficazmente os riscos comerciais e acompanhar os fortes stocks no mercado.

##Análise de Risco Embora a estratégia utilize múltiplos indicadores para controlar os riscos, ainda existem certos riscos:

  1. A combinação de múltiplos indicadores exponenciais é sensível aos ajustes de parâmetros.

  2. A procura excessiva de impulso pode deixar de lado os pontos reais de reversão do mercado.

  3. Os indicadores como a EMA têm uma natureza retardada e podem não ser capazes de refletir o impacto de eventos súbitos no tempo.

  4. Os principais acontecimentos súbitos podem causar divergências nos indicadores.

Direcção de otimização A estratégia pode também ser otimizada em vários aspectos:

  1. Use aprendizagem de máquina para encontrar a combinação de parâmetros ideal.

  2. Adicionar outros indicadores que determinam tendências, como o CCI e o MACD, para formar uma combinação de indicadores para melhorar a precisão do julgamento.

  3. Adicionar estratégias de stop-loss para controlar perdas individuais.

  4. Defina o tempo de espera para evitar ganância excessiva.

Resumo Esta estratégia é chamada de Quatro-fator Momentum Tracking Strategy. Ele usa ADX, BB %B, AO e EMA quatro indicadores para determinar pontos de entrada e saída para rastrear dinamicamente ações fortes. A estratégia pode determinar efetivamente a direção da tendência e a força relativa das ações para controlar os riscos comerciais. Em seguida, a otimização de parâmetros, adicionando outros indicadores, definindo o tempo de retenção e outros métodos podem ser usados para melhorar ainda mais a estratégia.


/*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

//ADX + BB %B + AO + EMA

strategy("ADX + BB %B + AO + EMA", overlay=true, initial_capital=10000)
take_profit_perc = input(title="Take Profit %", type=input.integer, defval=10, minval=1, maxval=100)
stop_loss_perc = input(title="Stop Loss %", type=input.integer, defval=5, minval=1, maxval=100)
bb_overbought = input(title="BB %B Overbought", type=input.integer, defval=75, minval=1, maxval=100)
bb_oversold = input(title="BB %B Oversold", type=input.integer, defval=25, minval=1, maxval=100)
ao_value = input(title="Awesome Oscillator", type=input.integer, defval=2)
adx_value = input(title="ADX", type=input.integer, defval=15)

startDate = input(title="Start Date", type=input.integer, defval=1, minval=1, maxval=31)
startMonth = input(title="Start Month", type=input.integer, defval=1, minval=1, maxval=12)
startYear = input(title="Start Year", type=input.integer, defval=2018, minval=2008, maxval=2200)

inDateRange = (time >= timestamp(syminfo.timezone, startYear, startMonth, startDate, 0, 0))

ema5 = ema(close, 5)
ema21 = ema(close, 21)
ema50 = ema(close, 50)
ema200 = ema(close, 200)

//BB %B
length = input(20, minval=1)
src = input(close, title="Source")
mult = input(2.0, minval=0.001, maxval=50, title="StdDev")
basis = sma(src, length)
dev = mult * stdev(src, length)
upper = basis + dev
lower = basis - dev
bbr = (src - lower)/(upper - lower)

//Awesome Oscillator
ao = sma(hl2,5) - sma(hl2,34)

// ADX
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
dirmov(len) =>
	up = change(high)
	down = -change(low)
	plusDM = na(up) ? na : (up > down and up > 0 ? up : 0)
	minusDM = na(down) ? na : (down > up and down > 0 ? down : 0)
	truerange = rma(tr, len)
	plus = fixnan(100 * rma(plusDM, len) / truerange)
	minus = fixnan(100 * rma(minusDM, len) / truerange)
	[plus, minus]
adx(dilen, adxlen) =>
	[plus, minus] = dirmov(dilen)
	sum = plus + minus
	adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)

long_strategy = ema5>ema21 and ema50>ema200 and bbr>(bb_overbought/100) and ao>ao_value and sig>adx_value
short_strategy = ema5<ema21 and ema50<ema200 and bbr<(bb_oversold/100) and ao<-ao_value and sig>adx_value

plot(ema5, color=color.blue)
plot(ema21, color=color.aqua)
plot(ema50, color=color.purple)
plot(ema200, color=color.red)
bgcolor(color=long_strategy ? color.green : na, transp=80)
bgcolor(color=short_strategy ? color.purple : na, transp=80)
    
if inDateRange and long_strategy
    strategy.entry("long", strategy.long)
    strategy.exit("exit", "long", stop=close*(100-stop_loss_perc)/100, limit=close*(100+take_profit_perc)/100)
if inDateRange and short_strategy
    strategy.entry("short", strategy.short)
    strategy.exit("exit", "short", stop=close*(100+stop_loss_perc)/100, limit=close*(100-take_profit_perc)/100)


Mais.