
La estrategia es un sistema de negociación integral, que combina varios indicadores técnicos para confirmar las señales de negociación. La lógica central se basa en la intersección de las medias móviles de índices rápidos y lentos (EMA) y la confirmación de señales a través de la intersección de precios promedio ponderados por volumen (VWAP) y indicadores relativamente fuertes (RSI). Al mismo tiempo, el sistema adopta un programa de stop loss dinámico basado en la amplitud real (ATR) para garantizar la ciencia y la flexibilidad de la gestión de riesgos.
El principio central de la estrategia es confirmar la dirección de la operación mediante la combinación de múltiples indicadores técnicos. En concreto, incluye:
La estrategia, mediante la combinación orgánica de múltiples indicadores técnicos, construye un sistema de negociación relativamente completo. No solo se centra en la precisión de las señales, sino que también enfatiza la importancia de la gestión del riesgo. Aunque existe cierta limitación, la estrategia se espera que mantenga un rendimiento estable en varios entornos de mercado mediante la optimización y mejora continuas. La clave es ajustar constantemente los parámetros según las condiciones reales de las operaciones y aplicarlos con flexibilidad en combinación con los cambios en el entorno del mercado.
/*backtest
start: 2024-02-22 00:00:00
end: 2025-02-19 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("BTC Day Trading Strategy with Alerts", overlay=true)
// Input parameters
emaShortLength = input(9, title="Short EMA Length")
emaLongLength = input(21, title="Long EMA Length")
rsiLength = input(14, title="RSI Length")
rsiOverbought = input(70, title="RSI Overbought Level")
rsiOversold = input(30, title="RSI Oversold Level")
atrMultiplier = input(1.5, title="ATR Multiplier for SL")
riskRewardRatio = input(2, title="Risk-Reward Ratio") // Defines TP as 2x SL
// Calculate indicators
emaShort = ta.ema(close, emaShortLength)
emaLong = ta.ema(close, emaLongLength)
rsi = ta.rsi(close, rsiLength)
vwap = ta.vwap(close) // Fixed: Added "close" as the source
atr = ta.atr(14)
// Define conditions for entry
longCondition = ta.crossover(emaShort, emaLong) and close > vwap and rsi > 50
shortCondition = ta.crossunder(emaShort, emaLong) and close < vwap and rsi < 50
// ATR-based Stop Loss & Take Profit
longSL = close - (atr * atrMultiplier)
longTP = close + ((close - longSL) * riskRewardRatio)
shortSL = close + (atr * atrMultiplier)
shortTP = close - ((shortSL - close) * riskRewardRatio)
// Execute trades
if (longCondition)
strategy.entry("Long", strategy.long)
strategy.exit("Long Exit", from_entry="Long", stop=longSL, limit=longTP)
if (shortCondition)
strategy.entry("Short", strategy.short)
strategy.exit("Short Exit", from_entry="Short", stop=shortSL, limit=shortTP)
// 🔔 Add Alert Conditions for TradingView Alerts
alertcondition(longCondition, title="BTC Buy Signal", message="🚀 Buy Signal: 9 EMA crossed above 21 EMA, Price above VWAP, RSI > 50")
alertcondition(shortCondition, title="BTC Sell Signal", message="🔻 Sell Signal: 9 EMA crossed below 21 EMA, Price below VWAP, RSI < 50")
// Plot indicators
plot(emaShort, color=color.blue, title="9 EMA", linewidth=2) // Thicker line for better visibility
plot(emaLong, color=color.red, title="21 EMA", linewidth=2) // Thicker line for better visibility
hline(rsiOverbought, "RSI Overbought", color=color.red, linewidth=2) // Thicker line for RSI Overbought
hline(rsiOversold, "RSI Oversold", color=color.green, linewidth=2) // Thicker line for RSI Oversold
plot(vwap, color=color.purple, title="VWAP", linewidth=2) // VWAP line on price chart
// Create a separate panel for RSI for better scaling
plot(rsi, color=color.orange, title="RSI", linewidth=2, style=plot.style_line) // Plot RSI on a separate panel