Ini adalah strategi dagangan kuantitatif yang menggabungkan persimpangan purata bergerak eksponen (EMA) dengan penapis Julat Benar Purata (ATR). Strategi ini bertujuan untuk mengenal pasti trend yang kuat dan melaksanakan dagangan dalam keadaan pasaran yang sangat turun naik, dengan berkesan meningkatkan nisbah Sharpe dan prestasi keseluruhan. Ia menggunakan EMA 50 tempoh dan 200 tempoh untuk menangkap trend jangka menengah hingga panjang, sementara menggunakan penunjuk ATR untuk menilai turun naik pasaran, hanya berdagang apabila turun naik melebihi ambang tertentu.
Logik terasnya terdiri daripada dua komponen utama: penentuan trend dan penapisan turun naik. Untuk penentuan trend, strategi menggunakan EMA 50 tempoh sebagai garis pantas dan EMA 200 tempoh sebagai garis perlahan, menghasilkan isyarat panjang apabila garis pantas melintasi di atas garis perlahan dan isyarat pendek apabila melintasi di bawah. Untuk penapisan turun naik, strategi mengira nilai ATR 14 tempoh dan menukarnya kepada peratusan harga, hanya membenarkan kedudukan apabila peratusan ATR melebihi ambang yang telah ditetapkan (default 2%). Reka bentuk ini memastikan bahawa strategi hanya berdagang di pasaran dengan kadar turun naik yang mencukupi, dengan berkesan mengurangkan isyarat palsu di pasaran berkisar.
Strategi ini menggabungkan penunjuk teknikal klasik dengan konsep pengurusan risiko moden. Dengan menggunakan persilangan EMA untuk menangkap trend sambil menggunakan penapis ATR untuk mengawal masa perdagangan, strategi ini mengekalkan kesederhanaan sambil mencapai kepraktisan yang kuat. Walaupun terdapat beberapa risiko yang melekat, strategi ini masih mempunyai nilai aplikasi yang baik melalui pengoptimuman dan langkah pengurusan risiko yang betul.
/*backtest start: 2019-12-23 08:00:00 end: 2024-11-27 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA Crossover with ATR Filter", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=10) // Inputs for Moving Averages fastLength = input.int(50, title="Fast EMA Length") slowLength = input.int(200, title="Slow EMA Length") // Inputs for ATR Filter atrLength = input.int(14, title="ATR Length") atrMultiplier = input.float(1.5, title="ATR Multiplier") atrThreshold = input.float(0.02, title="ATR Threshold (%)") // Calculate EMAs fastEMA = ta.ema(close, fastLength) slowEMA = ta.ema(close, slowLength) // Calculate ATR atr = ta.atr(atrLength) // Convert ATR to a percentage of price atrPct = atr / close // Define Long Condition (Cross and ATR filter) longCondition = ta.crossover(fastEMA, slowEMA) and atrPct > atrThreshold / 100 // Define Short Condition shortCondition = ta.crossunder(fastEMA, slowEMA) and atrPct > atrThreshold / 100 // Define Exit Conditions exitConditionLong = ta.crossunder(fastEMA, slowEMA) exitConditionShort = ta.crossover(fastEMA, slowEMA) // Long Entry if (longCondition) strategy.entry("Long", strategy.long) // Short Entry if (shortCondition) strategy.entry("Short", strategy.short) // Long Exit if (exitConditionLong) strategy.close("Long") // Short Exit if (exitConditionShort) strategy.close("Short") // Plot EMAs for visual reference plot(fastEMA, title="50 EMA", color=color.blue) plot(slowEMA, title="200 EMA", color=color.red) // Plot ATR for reference plot(atrPct, title="ATR Percentage", color=color.orange, style=plot.style_line) hline(atrThreshold / 100, "ATR Threshold", color=color.green)