Ini adalah strategi mengikuti tren yang didasarkan pada beberapa crossover EMA (Exponential Moving Average). Strategi ini memanfaatkan hubungan crossover antara EMA jangka pendek 10 periode, EMA jangka menengah 50 periode, dan EMA jangka panjang 200 periode untuk menangkap tren pasar dan mengeksekusi perdagangan panjang / pendek ketika kondisi terpenuhi.
Strategi ini menggunakan sistem crossover EMA tiga sebagai mekanisme generasi sinyalnya. 1. Menggunakan EMA 200 periode sebagai indikator tren utama, hanya mengambil posisi panjang di atasnya dan posisi pendek di bawahnya 2. Membuka posisi panjang ketika EMA jangka pendek (10 periode) melintasi di atas EMA jangka menengah (50 periode) dan harga di atas EMA jangka panjang 3. Membuka posisi pendek ketika EMA jangka pendek melintasi di bawah EMA jangka menengah dan harga di bawah EMA jangka panjang 4. Menutup posisi panjang ketika EMA jangka pendek melintasi EMA jangka menengah 5. Menutup posisi pendek ketika EMA jangka pendek melintasi EMA jangka menengah Strategi ini mencakup fitur debugging untuk memantau silang dan hubungan EMA yang abnormal.
Strategi ini adalah sistem trend berikut klasik yang memastikan penangkapan tren utama sambil menjaga pengambilan keuntungan yang tepat waktu dan stop-loss melalui penggunaan beberapa EMA. Meskipun memiliki beberapa keterlambatan yang melekat, pengaturan parameter yang wajar dan manajemen risiko masih dapat menghasilkan pengembalian yang stabil di pasar tren. Strategi ini memiliki potensi optimasi yang signifikan melalui pengenalan indikator teknis tambahan dan aturan perdagangan yang disempurnakan.
/*backtest start: 2024-12-10 00:00:00 end: 2025-01-09 00:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT","balance":49999}] */ //@version=5 strategy("EMA Crossover Strategy (Enhanced Debug)", overlay=true) // Inputs for EMA periods shortEMA = input.int(10, title="Short EMA Period") mediumEMA = input.int(50, title="Medium EMA Period") longEMA = input.int(200, title="Long EMA Period") // Calculating EMAs emaShort = ta.ema(close, shortEMA) emaMedium = ta.ema(close, mediumEMA) emaLong = ta.ema(close, longEMA) // Plot EMAs plot(emaShort, color=color.green, title="Short EMA") plot(emaMedium, color=color.blue, title="Medium EMA") plot(emaLong, color=color.red, title="Long EMA") // Conditions for entry and exit longCondition = close > emaLong and ta.crossover(emaShort, emaMedium) and emaMedium > emaLong shortCondition = close < emaLong and ta.crossunder(emaShort, emaMedium) and emaMedium < emaLong closeLongCondition = ta.crossunder(emaShort, emaMedium) closeShortCondition = ta.crossover(emaShort, emaMedium) // Debugging labels for unexpected behavior if (ta.crossover(emaShort, emaLong) and not ta.crossover(emaShort, emaMedium)) label.new(bar_index, high, "Short > Long", style=label.style_circle, color=color.red, textcolor=color.white) // Debugging EMA relationships if (emaMedium <= emaLong) label.new(bar_index, high, "Medium < Long", style=label.style_cross, color=color.orange, textcolor=color.white) // Entry logic if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // Exit logic if (closeLongCondition) strategy.close("Long") if (closeShortCondition) strategy.close("Short") // Display labels for signals plotshape(series=longCondition, style=shape.labelup, color=color.green, location=location.belowbar, title="Buy Signal") plotshape(series=shortCondition, style=shape.labeldown, color=color.red, location=location.abovebar, title="Sell Signal")