
Il s’agit d’une stratégie de day trading basée sur un système de moyenne mobile double (EMA) et l’indice de force relative (RSI). La stratégie utilise les signaux de croisement des moyennes mobiles exponentielles rapides et lentes combinés à l’indicateur de momentum RSI pour identifier les tendances du marché et les opportunités de trading, tout en intégrant des mécanismes de stop-loss et de take-profit pour parvenir à une gestion des risques. La stratégie utilise un modèle de gestion de l’argent et utilise un pourcentage fixe du capital du compte pour négocier.
La logique fondamentale de la stratégie comprend les éléments clés suivants :
Cette stratégie construit un système de trading complet en combinant le système de tendance EMA et l’indicateur de momentum RSI. Ses avantages résident dans sa logique de trading systématique et son mécanisme parfait de gestion des risques, mais il faut néanmoins prêter attention à l’impact de l’environnement de marché sur la performance de la stratégie. Grâce à une optimisation et un ajustement continus, les stratégies peuvent mieux s’adapter aux différentes conditions du marché et améliorer les résultats commerciaux.
/*backtest
start: 2024-12-17 00:00:00
end: 2025-01-16 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}]
*/
//@version=5
strategy("Estrategia Intradía - Cruce EMA + RSI - Optimizado", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=20)
// Parámetros CON rangos de optimización
ema_fast_length = input.int(title="Período EMA Rápida", defval=12, minval=5, maxval=30, step=1)
ema_slow_length = input.int(title="Período EMA Lenta", defval=26, minval=15, maxval=50, step=1)
rsi_length = input.int(title="Período RSI", defval=14, minval=7, maxval=21, step=1)
rsi_overbought = input.int(title="Nivel de Sobrecompra RSI", defval=70, minval=60, maxval=80, step=1)
rsi_oversold = input.int(title="Nivel de Sobreventa RSI", defval=30, minval=20, maxval=40, step=1)
stop_loss_percent = input.float(title="Stop Loss (%)", defval=1.0, minval=0.1, maxval=3.0, step=0.1)
take_profit_percent = input.float(title="Take Profit (%)", defval=2.0, minval=0.5, maxval=5.0, step=0.1)
// Cálculos
ema_fast = ta.ema(close, ema_fast_length)
ema_slow = ta.ema(close, ema_slow_length)
rsi = ta.rsi(close, rsi_length)
// Condiciones de entrada
longCondition = ta.crossover(ema_fast, ema_slow) and rsi > 50
shortCondition = ta.crossunder(ema_fast, ema_slow) and rsi < 50
// Gestión de entradas y salidas
var float longQty = na
var float shortQty = na
if longCondition
longQty := 20 / close
strategy.entry("Long", strategy.long, qty=longQty)
if stop_loss_percent > 0 and take_profit_percent > 0
strategy.exit("Exit Long", "Long", stop=close * (1 - stop_loss_percent / 100), limit=close * (1 + take_profit_percent / 100))
if strategy.position_size > 0 and ta.crossunder(ema_fast, ema_slow)
strategy.close("Long")
longQty := na
if shortCondition
shortQty := 20 / close
strategy.entry("Short", strategy.short, qty=shortQty)
if stop_loss_percent > 0 and take_profit_percent > 0
strategy.exit("Exit Short", "Short", stop=close * (1 + stop_loss_percent / 100), limit=close * (1 - take_profit_percent / 100))
if strategy.position_size < 0 and ta.crossover(ema_fast, ema_slow)
strategy.close("Short")
shortQty := na
// Visualizaciones
plot(ema_fast, color=color.blue, title="EMA Rápida")
plot(ema_slow, color=color.orange, title="EMA Lenta")
plot(rsi, color=color.purple, title="RSI")
hline(50, color=color.gray)