Strategi ini adalah sistem perdagangan mengikut trend berdasarkan pelbagai Exponential Moving Averages (EMA) dan Average True Range (ATR). Ia mengesahkan hala tuju trend melalui pelbagai penyelarasan EMA, mencari peluang pulback dalam trend menaik, dan menggunakan ATR untuk sasaran stop-loss dan keuntungan dinamik. Pendekatan ini memastikan kestabilan trend mengikuti sambil menyesuaikan diri dengan turun naik pasaran secara dinamik.
Logik teras merangkumi elemen utama berikut:
Ini adalah strategi trend yang terstruktur dengan baik dan secara logik ketat. Gabungan pengesahan trend EMA berganda, entri pulback, dan pengurusan risiko dinamik berasaskan ATR memastikan kedua-dua ketahanan dan kebolehan beradaptasi. Walaupun terdapat risiko yang melekat, pengoptimuman yang dicadangkan dapat meningkatkan kestabilan dan keuntungan strategi. Strategi ini sangat sesuai untuk mengesan trend jangka menengah hingga panjang dan merupakan pilihan yang kukuh untuk peniaga yang mencari pulangan yang konsisten di pasaran trend.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 00:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover and ATR Target Strategy", overlay=true) // Input parameters emaShortLength = 20 emaMidLength1 = 50 emaMidLength2 = 100 emaLongLength = 200 atrLength = 14 // Calculate EMAs ema20 = ta.ema(close, emaShortLength) ema50 = ta.ema(close, emaMidLength1) ema100 = ta.ema(close, emaMidLength2) ema200 = ta.ema(close, emaLongLength) ema21 = ta.ema(close, 21) // Calculate ATR atr = ta.atr(atrLength) // Conditions for the strategy emaCondition = ema20 > ema50 and ema50 > ema100 and ema100 > ema200 pullbackCondition = close <= ema21 and close >= ema50 //and close >= ema21 * 0.99 // Near 21 EMA (within 1%) // Initialize variables for stop loss and take profitss var float stopLossLevel = na var float takeProfitLevel = na // Check conditions on each bar close if (bar_index > 0) // Ensures there is data to check if emaCondition and pullbackCondition and strategy.position_size == 0 // Only buy if no open position stopLossLevel := close - (1.5 * atr) // Set stop loss based on ATR at buy price takeProfitLevel := close + (3.5 * atr) // Set take profit based on ATR at buy price strategy.entry("Buy", strategy.long) // Set stop loss and take profit for the active trade if strategy.position_size > 0 strategy.exit("Take Profit", from_entry="Buy", limit=takeProfitLevel, stop=stopLossLevel) // Plot EMAs for visualizationn plot(ema20, color=color.blue, title="20 EMA") plot(ema50, color=color.red, title="50 EMA") plot(ema100, color=color.green, title="100 EMA") plot(ema200, color=color.orange, title="200 EMA") plot(ema21, color=color.purple, title="21 EMA")