Ini adalah strategi trend berikut berdasarkan pelbagai persilangan Exponential Moving Average (EMA). Strategi ini menggunakan hubungan persilangan antara EMA jangka pendek 10 tempoh, EMA jangka menengah 50 tempoh, dan EMA jangka panjang 200 tempoh untuk menangkap trend pasaran dan melaksanakan perdagangan panjang / pendek apabila syarat dipenuhi.
Strategi ini menggunakan sistem silang tiga EMA sebagai mekanisme penjanaan isyaratnya. 1. Menggunakan EMA 200 tempoh sebagai penunjuk trend utama, hanya mengambil kedudukan panjang di atasnya dan kedudukan pendek di bawahnya 2. Membuka kedudukan panjang apabila EMA jangka pendek (10 tempoh) melintasi di atas EMA jangka sederhana (50 tempoh) dan harga di atas EMA jangka panjang 3. Membuka kedudukan pendek apabila EMA jangka pendek melintasi di bawah EMA jangka sederhana dan harga di bawah EMA jangka panjang 4. Menutup kedudukan panjang apabila EMA jangka pendek melintasi di bawah EMA jangka sederhana 5. Menutup kedudukan pendek apabila EMA jangka pendek melintasi di atas EMA jangka sederhana Strategi ini termasuk ciri debugging untuk memantau persilangan dan hubungan EMA yang tidak normal.
Strategi ini adalah sistem trend berikut klasik yang memastikan penangkapan trend utama sambil mengekalkan pengambilan keuntungan dan stop-loss tepat pada masanya melalui penggunaan pelbagai EMA. Walaupun ia mempunyai beberapa kelewatan yang melekat, tetapan parameter yang munasabah dan pengurusan risiko masih dapat menjana pulangan yang stabil di pasaran trend. Strategi ini mempunyai potensi pengoptimuman yang signifikan melalui pengenalan penunjuk teknikal tambahan dan peraturan perdagangan yang halus.
/*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")