Il s'agit d'une stratégie de trading basée sur le croisement des moyennes mobiles exponentielles (EMA) à 15 périodes et à 50 périodes. La stratégie implémente des niveaux intelligents de stop-loss et de take-profit pour optimiser le contrôle risque-rendement. Elle capte non seulement les signaux d'inversion de tendance, mais ajuste également automatiquement les paramètres de trading en fonction de la volatilité du marché, améliorant ainsi la stabilité et la rentabilité de la stratégie.
La logique de base est basée sur des signaux de croisement entre l'EMA rapide (15 périodes) et l'EMA lente (50 périodes). Un signal long est généré lorsque la ligne rapide traverse au-dessus de la ligne lente, et un signal court lorsque la ligne rapide traverse en dessous. Pour l'optimisation de la gestion des risques, la stratégie utilise une méthode de réglage de stop-loss dynamique, en utilisant le prix d'ouverture le plus bas des 2 bougies précédentes comme le stop-loss long et le prix d'ouverture le plus élevé comme le stop-loss court.
Il s'agit d'une stratégie de croisement EMA bien structurée avec une logique claire. En combinant des méthodes d'analyse technique classiques avec des techniques modernes de gestion des risques, la stratégie atteint des caractéristiques de risque-rendement favorables. Bien qu'il y ait place à l'optimisation, le cadre de base démontre une bonne praticité et extensibilité.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-11 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Cross - Any Direction", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=30) // Input for EMAs ema_short_length = input(15, title="Short EMA Length") ema_long_length = input(50, title="Long EMA Length") // Calculate EMAs ema_short = ta.ema(close, ema_short_length) ema_long = ta.ema(close, ema_long_length) // Plot EMAs plot(ema_short, color=color.blue, title="15 EMA") plot(ema_long, color=color.red, title="50 EMA") // Entry Conditions (Any EMA Cross) cross_condition = ta.crossover(ema_short, ema_long) or ta.crossunder(ema_short, ema_long) // Determine Trade Direction is_long = ta.crossover(ema_short, ema_long) is_short = ta.crossunder(ema_short, ema_long) // Stop Loss and Take Profit long_stop_loss = ta.lowest(open[1], 2) // Lowest open of the last 2 candles short_stop_loss = ta.highest(open[1], 2) // Highest open of the last 2 candles long_take_profit = close + 2 * (close - long_stop_loss) short_take_profit = close - 2 * (short_stop_loss - close) // Execute Trades if (cross_condition) if (is_long) strategy.entry("Long", strategy.long) strategy.exit("Exit Long", "Long", stop=long_stop_loss, limit=long_take_profit) else if (is_short) strategy.entry("Short", strategy.short) strategy.exit("Exit Short", "Short", stop=short_stop_loss, limit=short_take_profit) // Plot Stop Loss and Take Profit Levels plot(long_stop_loss, color=color.orange, title="Long Stop Loss", style=plot.style_circles, linewidth=2) plot(long_take_profit, color=color.green, title="Long Take Profit", style=plot.style_circles, linewidth=2) plot(short_stop_loss, color=color.orange, title="Short Stop Loss", style=plot.style_circles, linewidth=2) plot(short_take_profit, color=color.red, title="Short Take Profit", style=plot.style_circles, linewidth=2)