
La estrategia combina indicadores técnicos como cruce de EMA, desviación de RSI, identificación de tendencias de 30 minutos y agotamiento de precios para capturar tendencias de mercado y inflexiones de precios. La estrategia determina la dirección de la tendencia a través de la intersección de EMA13 y EMA26, utiliza el desvío de RSI para identificar posibles reveses de tendencia, y considera el estado de la tendencia y el agotamiento de los precios en el marco de tiempo de 30 minutos para optimizar el punto de entrada.
La estrategia analiza el mercado en múltiples dimensiones para capturar tendencias y posibles puntos de inflexión, combinando EMA cruce, RSI desviación, identificación de tendencias de 30 minutos y otros indicadores técnicos de agotamiento de precios. La estrategia tiene ventajas en el análisis multidimensional, la confirmación de tendencias, la captura de puntos de inflexión y el control de riesgos, pero también existe el riesgo de optimización de parámetros, conversión de tendencias, falsas señales de cambio y eventos inesperados.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA Cross Strategy with RSI Divergence, 30-Minute Trend Identification, and Price Exhaustion", overlay=true)
// Definição das médias móveis exponenciais para tendência de curto prazo (30 minutos)
EMA5_30min = ta.ema(close, 5)
EMA10_30min = ta.ema(close, 10)
// Definição das médias móveis exponenciais
EMA13 = ta.ema(close, 13)
EMA26 = ta.ema(close, 26)
// RSI com período padrão de 7
rsi = ta.rsi(close, 7)
// Detecção do cruzamento das EMAs
crossUp = ta.crossover(EMA13, EMA26)
crossDown = ta.crossunder(EMA13, EMA26)
// Detecção de divergência no RSI
bullishDivergence = ta.crossunder(close, EMA13) and ta.crossunder(rsi, 30)
bearishDivergence = ta.crossover(close, EMA13) and ta.crossover(rsi, 70)
// Geração de sinais de entrada
entrySignal = crossUp ? 1 : (crossDown ? -1 : 0)
// Abertura da posição
if (entrySignal == 1)
strategy.entry("Long", strategy.long)
else if (entrySignal == -1)
strategy.entry("Short", strategy.short)
// Fechamento da posição
if (entrySignal == 1 and ta.crossover(close, EMA26))
strategy.close("Long")
else if (entrySignal == -1 and ta.crossunder(close, EMA26))
strategy.close("Short")
// Comando de compra e venda
buySignal = crossUp and close > EMA13 and close > EMA26
sellSignal = crossDown and close < EMA13 and close < EMA26
// Aplicando a lógica de divergência RSI
if (bullishDivergence)
strategy.entry("Bullish Divergence", strategy.long)
if (bearishDivergence)
strategy.entry("Bearish Divergence", strategy.short)
// Identificação de tendência nos últimos 30 minutos
isUptrend30min = close > EMA5_30min and close > EMA10_30min
isDowntrend30min = close < EMA5_30min and close < EMA10_30min
// Identificação de exaustão do preço com base no RSI
isOversold = rsi < 30
isOverbought = rsi > 70
// Executando os sinais de compra e venda
if (buySignal and isUptrend30min and isOversold)
strategy.entry("Buy", strategy.long)
if (sellSignal and isDowntrend30min and isOverbought)
strategy.entry("Sell", strategy.short)