
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.
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:
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;
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.
O indicador AO determina se há um forte suporte de impulso para a compra, garantindo a eficácia da ruptura;
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.
Embora a estratégia tenha aplicado vários indicadores para controlar os riscos, existem alguns riscos:
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.
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.
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.
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.
A estratégia também pode ser melhorada em alguns aspectos:
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.
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.
Adere a uma estratégia de stop loss para controlar as perdas individuais.
O que você pode fazer é definir o tempo de retenção e evitar a ganância.
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.
/*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)