Strategi ini menghasilkan sinyal perdagangan berdasarkan persilangan dua moving average (EMA). Ketika EMA jangka pendek (20 hari) melintasi di atas EMA jangka panjang (50 hari), sinyal beli dipicu; ketika EMA jangka pendek melintasi di bawah EMA jangka panjang, sinyal jual dipicu. Selain itu, strategi ini memetakan EMA 200 hari sebagai referensi untuk tren jangka panjang. Ide utama di balik strategi ini adalah menangkap pergeseran tren pasar dengan memanfaatkan persilangan rata-rata bergerak dengan periode yang berbeda.
EMA Double Moving Average Crossover Strategy adalah strategi trading yang sederhana dan langsung yang cocok untuk pasar tren. Strategi ini memanfaatkan crossover rata-rata bergerak jangka pendek dan jangka panjang untuk menangkap pergeseran tren pasar sambil menggabungkan referensi tren jangka panjang. Meskipun strategi ini memiliki beberapa keterbatasan, seperti kinerja suboptimal di pasar yang bergolak dan lag rata-rata bergerak, strategi ini dapat ditingkatkan lebih lanjut dengan menggabungkan indikator tambahan, mengoptimalkan parameter, menerapkan langkah-langkah manajemen risiko, dan mengkonfirmasi tren. Optimasi ini dapat meningkatkan kekuatan dan profitabilitas strategi.
/*backtest start: 2023-03-23 00:00:00 end: 2024-03-28 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover Strategy by Peter Gangmei", overlay=true) // Define the length for moving averages short_ma_length = input.int(20, "Short MA Length") long_ma_length = input.int(50, "Long MA Length") long_ma_200_length = input.int(200, "Long MA 200 Length") // Define start time for testing start_time = timestamp(2024, 01, 01, 00, 00) // Calculate current date and time current_time = timenow // Calculate moving averages ema20 = ta.ema(close, short_ma_length) ema50 = ta.ema(close, long_ma_length) ema200 = ta.ema(close, long_ma_200_length) // Crossing conditions crossed_above = ta.crossover(ema20, ema50) crossed_below = ta.crossunder(ema20, ema50) // Entry and exit conditions within the specified time frame if true if (crossed_above) strategy.entry("Buy", strategy.long) alert("Buy Condition", alert.freq_once_per_bar_close) if (crossed_below) strategy.entry("Sell", strategy.short) alert("Sell Condition", alert.freq_once_per_bar_close) // Plotting moving averages for visualization plot(ema20, color=color.green, title="EMA20") plot(ema50, color=color.red, title="EMA50") plot(ema200, color=color.blue, title="EMA200") // Placing buy and sell markers plotshape(series=crossed_above, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Buy Signal") plotshape(series=crossed_below, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Sell Signal")