En el campo de la negociación cuantitativa, las estrategias de seguimiento de tendencias siempre han sido uno de los métodos de negociación más populares.
Esta estrategia utiliza promedios móviles exponenciales (EMA) de 20 días y 200 días como indicadores principales, combinados con una relación riesgo-recompensación de 3:1 para las decisiones comerciales. Las señales de compra se generan cuando el precio se rompe por encima de la EMA de 20 días y la EMA de 20 días está por encima de la EMA de 200 días. Cada operación tiene niveles fijos de stop-loss (-0.5%) y take-profit (1.5%) para garantizar un riesgo controlado.
La lógica central incluye varios elementos clave:
Esta es una tendencia bien estructurada siguiendo una estrategia con lógica clara. Al combinar un sistema de promedio móvil dual con ratios de riesgo-recompensa fijos, la estrategia logra buenos rendimientos mientras mantiene el control del riesgo. Aunque hay áreas para la optimización, en general es un sistema de negociación digno de mayor investigación y mejora.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Estrategia de Compra con Ratio 3:1", overlay=true) // Parámetros de la temporalidad diaria y las EMAs ema20 = ta.ema(close, 20) ema200 = ta.ema(close, 200) // Condiciones para la entrada en largo cierre_por_encima_ema20 = close > ema20 ema20_mayor_ema200 = ema20 > ema200 // Variable para registrar si ya se realizó una compra var bool compra_realizada = false // Condición para registrar una compra: primera vez que cierra por encima de EMA 20 con EMA 20 > EMA 200 if (cierre_por_encima_ema20 and ema20_mayor_ema200 and not compra_realizada) // Abrir una operación de compra strategy.entry("Compra", strategy.long) compra_realizada := true // Registrar que se realizó una compra // Definir los niveles de stop loss y take profit basados en el ratio 3:1 stop_loss = strategy.position_avg_price * 0.995 // -0.50% (rendimiento) take_profit = strategy.position_avg_price * 1.015 // +1.50% (3:1 ratio) // Establecer el stop loss y take profit strategy.exit("Take Profit / Stop Loss", from_entry="Compra", stop=stop_loss, limit=take_profit) // Condición para resetear la compra: cuando el precio cierra por debajo de la EMA de 20 if (close < ema20) compra_realizada := false // Permitir una nueva operación // Ploteo de las EMAs plot(ema20, title="EMA 20", color=color.blue, linewidth=2) plot(ema200, title="EMA 200", color=color.red, linewidth=2) // Colorear el fondo cuando el precio está por encima de ambas EMAs bgcolor(cierre_por_encima_ema20 and ema20_mayor_ema200 ? color.new(color.green, 80) : na)