Эта стратегия рассчитывает экспоненциальную скользящую среднюю (EMA) быстрых и медленных периодов, графики их на графике, и отслеживает перекрестки в режиме реального времени, чтобы определить обратные тенденции.
Стратегия имеет четкую логику с использованием перекресток EMA для определения обратного тренда, отфильтрованного по RSI для улавливания средне- и долгосрочных тенденций. Однако оптимизация параметров EMA / RSI и стоп-лосс, а также риск пропущенных обратных сдвигов и неудач на волатильных рынках остаются. С настройкой параметров и контроля рисков он может служить для выявления поворотных точек и формулирования инвестиционных решений.
/*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)