
Esta estratégia consiste principalmente em usar o indicador ADX para determinar a tendência e construir uma média móvel combinando MA e EMA com duas configurações diferentes de parâmetros. A estratégia de acompanhamento de tendências é apenas fazer mais.
A estratégia usa principalmente o ADX para determinar a tendência e a força do mercado. O ADX determina a presença e a força de uma tendência calculando o grau e a direção da mudança de preço. Quando o ADX sobe, indica que está em uma tendência ascendente; quando o ADX desce, indica que a tendência está enfraquecendo.
A estratégia usa duas médias móveis de diferentes configurações de parâmetros, MA e EMA, para auxiliar no julgamento. Elas eliminam efetivamente a aleatoriedade dos preços e mostram a direção da tendência principal dos preços.
Combinando as características do ADX e das médias móveis, a estratégia constrói um sinal de negociação para determinar a direção da tendência: o ADX sobe e o preço abre mais posições quando a MA e a EMA sobem, o ADX desce ou o preço cai abaixo da MA / EMA, realizando uma estratégia de acompanhamento de tendência que só faz mais.
A estratégia tem as seguintes vantagens:
A estratégia também apresenta alguns riscos:
Resolução:
A estratégia também pode ser melhorada nos seguintes aspectos:
A estratégia em geral é uma estratégia de monitorização de tendências que utiliza o ADX para determinar a força da tendência e auxiliar na construção de sinais de filtragem com duas médias móveis. Ela controla efetivamente a ocorrência de negociações ineficazes, alcançando o efeito de acompanhamento de tendências, uma estratégia de monitorização de tendências mais estável.
/*backtest
start: 2023-01-22 00:00:00
end: 2024-01-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("ADX, MA, and EMA Long Strategy - ADX Trending Up", shorttitle="ADX_MA_EMA_Long_UpTrend", overlay=true)
adxlen = input(14, title="ADX Smoothing")
dilen = input(14, title="DI Length")
maPeriod = input(50, title="MA Period")
emaPeriod = input(50, title="EMA Period")
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
100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen)
sig = adx(dilen, adxlen)
maValue = sma(close, maPeriod)
emaValue = ema(close, emaPeriod)
longCondition = sig > sig[1] and close > maValue and close > emaValue
if (longCondition)
strategy.entry("Long", strategy.long)
exitCondition = sig < sig[1] or close < maValue or close < emaValue
if (exitCondition)
strategy.close("Long")
plot(maValue, color=color.blue, title="MA")
plot(emaValue, color=color.orange, title="EMA")
plot(sig, color=color.red, title="ADX")