Ini adalah strategi perdagangan kuantitatif yang menggabungkan crossover Exponential Moving Average (EMA) dengan filter Average True Range (ATR). Strategi ini bertujuan untuk mengidentifikasi tren yang kuat dan melakukan perdagangan dalam kondisi pasar yang sangat volatilitas, secara efektif meningkatkan rasio Sharpe dan kinerja keseluruhan.
Untuk menentukan tren, strategi ini menggunakan EMA 50 periode sebagai garis cepat dan EMA 200 periode sebagai garis lambat, menghasilkan sinyal panjang ketika garis cepat melintasi di atas garis lambat dan sinyal pendek ketika melintasi di bawah. Untuk penyaringan volatilitas, strategi menghitung nilai ATR 14 periode dan mengubahnya menjadi persentase harga, hanya memungkinkan posisi ketika persentase ATR melebihi ambang batas yang telah ditetapkan (default 2%).
Strategi ini menggabungkan indikator teknis klasik dengan konsep manajemen risiko modern. Dengan menggunakan EMA crossover untuk menangkap tren sambil menggunakan filter ATR untuk mengontrol waktu perdagangan, strategi ini mempertahankan kesederhanaan sambil mencapai kepraktisan yang kuat. Sementara beberapa risiko yang melekat ada, strategi ini masih memiliki nilai aplikasi yang baik melalui optimasi yang tepat dan langkah-langkah manajemen risiko. Pedagang disarankan untuk menyesuaikan parameter sesuai dengan karakteristik pasar tertentu dan preferensi risiko mereka sendiri dalam aplikasi praktis.
/*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)