Dans le domaine du trading quantitatif, les stratégies de suivi de tendance ont toujours été l'une des méthodes de trading les plus populaires.
Cette stratégie utilise les moyennes mobiles exponentielles (EMA) de 20 jours et 200 jours comme indicateurs principaux, combinés à un ratio risque-rendement de 3:1 pour les décisions de trading. Les signaux d'achat sont générés lorsque le prix dépasse la EMA de 20 jours et que la EMA de 20 jours est au-dessus de la EMA de 200 jours. Chaque transaction a des niveaux fixes de stop-loss (-0,5%) et de take-profit (1,5%) pour assurer un risque contrôlé.
La logique de base comprend plusieurs éléments clés:
Il s'agit d'une tendance bien structurée suivant une stratégie avec une logique claire. En combinant un système de moyenne mobile double avec des ratios risque-rendement fixes, la stratégie obtient de bons rendements tout en maintenant le contrôle des risques. Bien qu'il existe des domaines d'optimisation, il s'agit globalement d'un système de trading digne de recherches et d'améliorations ultérieures.
/*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)