Estratégia de negociação quantitativa baseada em ADX, BB %B, AO e EMA


Data de criação: 2023-12-11 16:24:11 última modificação: 2023-12-11 16:24:11
cópia: 0 Cliques: 782
1
focar em
1621
Seguidores

Estratégia de negociação quantitativa baseada em ADX, BB %B, AO e EMA

Visão geral

Esta estratégia é conhecida como a estratégia de rastreamento de movimento de quatro fatores. A estratégia utiliza o indicador de movimento de direção média ((ADX) para determinar a direção da tendência, o percentual de Brin para determinar a força relativa do estoque, a linha de equilíbrio mágico ((AO) para determinar a quantidade de movimento e o índice de média móvel de diferentes períodos para determinar a amplitude, para rastrear a dinâmica do preço das ações, perseguir ações fortes e evitar ações fracas.

Princípio da estratégia

A estratégia usa quatro indicadores técnicos diferentes para determinar quando comprar e vender. A lógica de avaliação é a seguinte:

Condições de entrada múltipla: EMA de 5 dias com EMA de 21 dias, EMA de 50 dias com EMA de 200 dias, BB % B maior do que a linha de sobrevenda definida, AO maior do que o valor positivo definido, ADX maior do que o valor definido.

Condições de entrada: 5 dias de EMA abaixo da EMA de 21 dias, 50 dias de EMA abaixo da EMA de 200 dias, BB % B menor que a linha de superalimento definida, AO menor que o valor negativo definido, ADX maior que o valor definido.

Análise de vantagens estratégicas

A estratégia integra vários indicadores para determinar a direção da tendência e a força relativa das ações, podendo filtrar efetivamente as falsas rupturas. As vantagens específicas são as seguintes:

  1. O indicador ADX permite avaliar a existência e a intensidade de uma tendência, evitando a abertura frequente de posições em mercados turbulentos;

  2. O BB %B é um indicador que determina se uma ação está em uma curva de alta ou baixa, evitando a corrida de alta e baixa.

  3. O indicador AO determina se há um forte suporte de impulso para a compra, garantindo a eficácia da ruptura;

  4. A combinação entre o indicador EMA Gold Fork/Dead Fork determina a direção dominante do mercado, evitando posições adversas.

Em suma, a estratégia permite controlar eficazmente o risco de negociação e rastrear os acionistas mais fortes no mercado.

Análise de Riscos

Embora a estratégia tenha aplicado vários indicadores para controlar os riscos, existem alguns riscos:

  1. Usando combinações de indicadores de vários índices, é sensível ao ajuste de parâmetros, e combinações de parâmetros inadequadas podem não ser eficazes.

  2. O excesso de busca de impulso pode perder o ponto de reversão real do mercado. O ciclo de detenção deve ser adequadamente controlado e o stop loss deve ser interrompido em tempo hábil.

  3. Indicadores como os EMAs são atrasados e podem não refletir o impacto de eventos inesperados em tempo hábil. Devem ser adequadamente complementados com outros indicadores ou com um ciclo de MA adequadamente reduzido.

  4. Eventos de grande importância que possam levar à dispersação dos indicadores devem ser combinados com a análise fundamental, podendo ser necessária a suspensão da estratégia.

Direção de otimização

A estratégia também pode ser melhorada em alguns aspectos:

  1. A pesquisa foi realizada com o uso de métodos como o aprendizado de máquina para encontrar a melhor combinação de parâmetros.

  2. A adição de outros indicadores de tendência de julgamento, como CCI, MACD, etc., forma uma combinação de indicadores de alumínio, aumentando a precisão de julgamento.

  3. Adere a uma estratégia de stop loss para controlar as perdas individuais.

  4. O que você pode fazer é definir o tempo de retenção e evitar a ganância.

Resumir

Esta estratégia é conhecida como a estratégia de rastreamento de movimento de quatro fatores, que usa os quatro indicadores ADX, BB % B, AO e EMA para determinar o momento de compra e venda, permitindo o acompanhamento dinâmico de ações fortes. A estratégia pode determinar efetivamente a direção da tendência e a força relativa das ações, controlando o risco de negociação.

Código-fonte da 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)