
Trata-se de uma estratégia de negociação quantitativa que combina o cruzamento da média móvel do índice (EMA) com o filtro da amplitude real média (ATR). Esta estratégia aumenta efetivamente o índice de Sharpe e o desempenho geral da estratégia, identificando tendências fortes e negociando em um ambiente de mercado com alta volatilidade. A estratégia usa EMAs de 50 e 200 ciclos para capturar tendências de médio e longo prazo, enquanto o indicador ATR é usado para avaliar a volatilidade do mercado e só é negociado quando a volatilidade ultrapassa um determinado limiar.
A lógica central da estratégia inclui duas partes principais: o julgamento de tendências e o filtro de taxa de flutuação. No julgamento de tendências, a estratégia usa o EMA de 50 ciclos como linha rápida e o EMA de 200 ciclos como linha lenta, gerando um sinal de fazer mais quando a linha rápida atravessa a linha lenta e um sinal de fazer vazio quando a linha baixa atravessa. No filtro de taxa de flutuação, a estratégia calcula o valor do ATR de 14 ciclos e o converte em uma porcentagem do preço, permitindo a abertura de posições apenas quando a porcentagem do ATR excede a barreira de valor predefinida (considerando-se 2%) Este design garante que a estratégia só seja negociada em ambientes de mercado com flutuação suficiente, reduzindo efetivamente os falsos sinais em mercados turbulentos.
Esta é uma estratégia que combina indicadores técnicos clássicos com a filosofia moderna de gerenciamento de risco. A estratégia mantém a simplicidade e, ao mesmo tempo, possui uma forte praticidade, mantendo o controle do tempo de negociação através da captura de tendências cruzadas da EMA e do uso de filtros ATR. Embora haja alguns riscos inerentes, a estratégia ainda tem um bom valor de aplicação com medidas razoáveis de otimização e gerenciamento de risco.
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-27 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Crossover with ATR Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// Inputs for Moving Averages
fastLength = input.int(50, title="Fast EMA Length")
slowLength = input.int(200, title="Slow EMA Length")
// Inputs for ATR Filter
atrLength = input.int(14, title="ATR Length")
atrMultiplier = input.float(1.5, title="ATR Multiplier")
atrThreshold = input.float(0.02, title="ATR Threshold (%)")
// Calculate EMAs
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
// Calculate ATR
atr = ta.atr(atrLength)
// Convert ATR to a percentage of price
atrPct = atr / close
// Define Long Condition (Cross and ATR filter)
longCondition = ta.crossover(fastEMA, slowEMA) and atrPct > atrThreshold / 100
// Define Short Condition
shortCondition = ta.crossunder(fastEMA, slowEMA) and atrPct > atrThreshold / 100
// Define Exit Conditions
exitConditionLong = ta.crossunder(fastEMA, slowEMA)
exitConditionShort = ta.crossover(fastEMA, slowEMA)
// Long Entry
if (longCondition)
strategy.entry("Long", strategy.long)
// Short Entry
if (shortCondition)
strategy.entry("Short", strategy.short)
// Long Exit
if (exitConditionLong)
strategy.close("Long")
// Short Exit
if (exitConditionShort)
strategy.close("Short")
// Plot EMAs for visual reference
plot(fastEMA, title="50 EMA", color=color.blue)
plot(slowEMA, title="200 EMA", color=color.red)
// Plot ATR for reference
plot(atrPct, title="ATR Percentage", color=color.orange, style=plot.style_line)
hline(atrThreshold / 100, "ATR Threshold", color=color.green)