Strategi ini mengira purata bergerak eksponensial (EMA) tempoh cepat dan perlahan, memetakan mereka pada carta, dan memantau persilangan dalam masa nyata untuk menentukan pembalikan trend. Isyarat perdagangan dibentuk dengan menggabungkan osilator RSI untuk mengelakkan isyarat palsu. Isyarat beli dihasilkan apabila EMA cepat melintasi di atas EMA perlahan. Isyarat jual dihasilkan apabila EMA pantas melintasi di bawah EMA perlahan.
Strategi ini mempunyai logik yang jelas menggunakan persilangan EMA untuk menentukan pembalikan trend, disaring oleh RSI untuk menangkap trend jangka menengah hingga panjang. Walau bagaimanapun, pengoptimuman parameter EMA / RSI dan stop loss, serta risiko pembalikan yang hilang dan kegagalan di pasaran yang tidak menentu tetap ada. Dengan parameter dan kawalan risiko yang disesuaikan, ia boleh digunakan untuk mengenal pasti titik perubahan dan merumuskan keputusan pelaburan.
/*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)