
La estrategia de seguimiento de tendencias siempre ha sido una de las más populares en el campo de la negociación cuantitativa. Este artículo presenta una estrategia de seguimiento de tendencias basada en un sistema de doble línea que mejora la eficiencia de la negociación mediante la optimización de la relación riesgo-beneficio.
La estrategia utiliza las medias móviles de los índices de 20 y 200 días como indicadores principales, combinando un riesgo-beneficio ratio de 3:1 para tomar decisiones comerciales. Cuando el precio supera la media de 20 días y la media de 20 días está por encima de la media de 200 días, el sistema emite una señal de compra.
La lógica central de la estrategia incluye los siguientes elementos clave:
Es una estrategia de seguimiento de tendencias estructurada y con claridad lógica. Combinando un sistema de doble línea recta y un riesgo-beneficio fijo, la estrategia controla el riesgo a la vez que garantiza los beneficios. Aunque todavía hay algunos lugares que necesitan ser optimizados, en general es un sistema de negociación que merece más investigación y mejoras.
/*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)