Cette stratégie calcule la moyenne mobile exponentielle (EMA) des périodes rapides et lentes, les trace sur le graphique et surveille les croisements en temps réel pour déterminer les inversions de tendance. Les signaux de trading sont formés en incorporant l'oscillateur RSI pour éviter de faux signaux. Un signal d'achat est généré lorsque l'EMA rapide traverse au-dessus de l'EMA lente. Un signal de vente est généré lorsque l'EMA rapide traverse au-dessous de l'EMA lente.
La stratégie a une logique claire en utilisant des croisements EMA pour déterminer l'inversion de tendance, filtrée par RSI pour capturer les tendances à moyen et long terme. Cependant, l'optimisation des paramètres EMA / RSI et le stop loss, ainsi que le risque de manquer des inversions et d'échec sur les marchés volatils demeurent. Avec des paramètres et des contrôles de risque ajustés, elle pourrait servir à identifier les points tournants et à formuler des décisions d'investissement.
/*backtest start: 2022-12-18 00:00:00 end: 2023-12-24 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend Change with EMA Entry/Exit - Intraday", overlay=true) // Define the fast and slow EMA periods fast_ema_period = input(10, title="Fast EMA Period") slow_ema_period = input(50, title="Slow EMA Period") // Calculate the EMAs ema_fast = ta.ema(close, fast_ema_period) ema_slow = ta.ema(close, slow_ema_period) // Plot the EMAs on the chart plot(ema_fast, title="Fast EMA", color=color.blue, linewidth=2) plot(ema_slow, title="Slow EMA", color=color.orange, linewidth=2) // Detect trend changes (crossovers and crossunders) is_uptrend = ta.crossover(ema_fast, ema_slow) is_downtrend = ta.crossunder(ema_fast, ema_slow) // Relative Strength Index (RSI) rsi_length = input(14, title="RSI Length") overbought_level = input(70, title="Overbought Level") oversold_level = input(30, title="Oversold Level") rsi_value = ta.rsi(close, rsi_length) // Trend Filter is_trending = ta.change(is_uptrend) != 0 or ta.change(is_downtrend) != 0 // Entry and Exit signals enter_long = is_uptrend and rsi_value < overbought_level and is_trending exit_long = is_downtrend and is_trending enter_short = is_downtrend and rsi_value > oversold_level and is_trending exit_short = is_uptrend and is_trending strategy.entry("Buy", strategy.long, when=enter_long) strategy.close("Buy", when=exit_long) strategy.entry("Sell", strategy.short, when=enter_short) strategy.close("Sell", when=exit_short)