Strategi ini menghasilkan isyarat perdagangan berdasarkan persilangan dua purata bergerak (EMA). Apabila EMA jangka pendek (20 hari) melintasi di atas EMA jangka panjang (50 hari), isyarat beli dicetuskan; apabila EMA jangka pendek melintasi di bawah EMA jangka panjang, isyarat jual dicetuskan. Di samping itu, strategi ini memetakan EMA 200 hari sebagai rujukan untuk trend jangka panjang. Idea utama di sebalik strategi ini adalah untuk menangkap perubahan dalam trend pasaran dengan menggunakan persilangan purata bergerak dengan tempoh yang berbeza.
EMA Double Moving Average Crossover Strategy adalah strategi perdagangan yang mudah dan mudah digunakan untuk pasaran trend. Ia menggunakan persilangan purata bergerak jangka pendek dan jangka panjang untuk menangkap perubahan dalam trend pasaran sambil menggabungkan rujukan trend jangka panjang. Walaupun strategi ini mempunyai beberapa batasan, seperti prestasi suboptimal di pasaran yang bergolak dan kelewatan purata bergerak, ia boleh ditingkatkan dengan menggabungkan penunjuk tambahan, mengoptimumkan parameter, melaksanakan langkah pengurusan risiko, dan mengesahkan trend. pengoptimuman ini dapat meningkatkan kekuatan dan keuntungan 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")