Ini adalah strategi perdagangan kuantitatif yang menggabungkan persilangan purata bergerak mudah (SMA) pelbagai tempoh dengan penapis turun naik. Strategi ini menggunakan persilangan SMA jangka pendek dan jangka panjang untuk menjana isyarat perdagangan, sambil menggunakan penunjuk Julat Benar Purata (ATR) sebagai penapis turun naik untuk mengurangkan isyarat palsu. Strategi ini juga menggabungkan tahap stop-loss dinamik berdasarkan purata bergerak 200 hari dan sasaran keuntungan tetap, bertujuan untuk mengoptimumkan pengurusan risiko dan meningkatkan keuntungan.
Sinyal Crossover Purata Bergerak: Strategi ini menggunakan silang SMA jangka pendek (10 hari) dan jangka panjang (200 hari) untuk menjana isyarat beli dan jual. Isyarat panjang dihasilkan apabila SMA jangka pendek melintasi di atas SMA jangka panjang, dan isyarat pendek apabila melintasi di bawah.
Penapis Volatiliti: ATR 14 hari digunakan sebagai penunjuk volatiliti. Isyarat perdagangan hanya dilaksanakan apabila ATR semasa melebihi kelipatan tertentu (ditentukan oleh pengganda ATR yang ditakrifkan oleh pengguna) daripada purata 14 hari. Ini membantu menapis isyarat palsu yang berpotensi semasa tempoh turun naik yang rendah.
Stop-Loss Dinamis: Strategi ini menggunakan SMA 200 hari sebagai penanda aras untuk paras stop-loss dinamik. Stop-loss untuk kedudukan panjang ditetapkan pada 99.9% dari SMA 200 hari, manakala untuk kedudukan pendek, ia ditetapkan pada 100.1% dari SMA 200 hari.
Sasaran Keuntungan Tetap: Strategi menetapkan sasaran keuntungan tetap untuk setiap perdagangan. Sasaran keuntungan untuk perdagangan panjang adalah harga kemasukan ditambah 7.5 unit harga, manakala untuk perdagangan pendek, ia adalah harga kemasukan dikurangkan 7.5 unit harga.
Pengesahan Sinyal Berbilang: Dengan menggabungkan persilangan purata bergerak dengan penapisan turun naik, strategi mengurangkan risiko isyarat palsu dan meningkatkan kebolehpercayaan perdagangan.
Pengurusan Risiko Dinamik: Penggunaan stop-loss dinamik berdasarkan SMA 200 hari membolehkan strategi menyesuaikan diri dengan keadaan pasaran yang berubah, menyediakan kawalan risiko yang lebih fleksibel.
Matlamat Keuntungan yang Jelas: Matlamat keuntungan tetap membantu melindungi keuntungan yang dicapai dan mencegah pengurangan yang disebabkan oleh keserakahan yang berlebihan.
Kebolehsesuaian yang tinggi: Parameter strategi boleh diselaraskan untuk pasaran dan instrumen perdagangan yang berbeza, meningkatkan fleksibiliti strategi.
Bantuan Visual: Strategi merangkumi pelbagai garis SMA, paras stop-loss, dan sasaran keuntungan pada carta, menyediakan peniaga dengan alat analisis pasaran yang intuitif.
Lag dalam Purata Bergerak: SMA secara semula jadi merupakan penunjuk yang tertinggal, yang boleh menghasilkan isyarat tertunda dalam pasaran yang berubah dengan cepat, yang membawa kepada kemasukan atau keluar yang tidak tepat pada masanya.
Overtrading: Dalam pasaran yang sangat tidak menentu tanpa trend yang jelas, strategi boleh menghasilkan terlalu banyak isyarat perdagangan, meningkatkan kos transaksi.
Batasan Sasaran Keuntungan Tetap: Sasaran keuntungan tetap boleh menyebabkan penutupan kedudukan lebih awal semasa trend yang kuat, mengehadkan potensi keuntungan.
Ketergantungan pada Keadaan Pasaran Khas: Strategi ini berprestasi baik di pasaran yang sedang berkembang tetapi mungkin kurang berprestasi di pasaran yang berkisar atau berbalik dengan cepat.
Sensitiviti Parameter: Prestasi strategi sangat bergantung kepada parameter yang dipilih; tetapan parameter yang tidak betul boleh menyebabkan prestasi strategi yang buruk.
Penyesuaian Parameter Dinamik: Pertimbangkan penyesuaian dinamik tempoh SMA dan pengganda ATR berdasarkan keadaan pasaran untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza.
Tambah Penapis Kekuatan Trend: Memperkenalkan penunjuk kekuatan trend tambahan (seperti ADX) untuk memastikan perdagangan hanya di pasaran trend yang kuat.
Mengoptimumkan Sasaran Keuntungan: Pertimbangkan untuk menggunakan sasaran keuntungan dinamik, seperti yang berdasarkan ATR atau julat turun naik harga baru-baru ini, untuk menyesuaikan diri dengan lebih baik dengan turun naik pasaran.
Memperkenalkan Penutupan Posisi Sebahagian: Melaksanakan penutupan kedudukan separa pada tahap keuntungan tertentu untuk mengunci keuntungan separa dan membenarkan kedudukan yang tersisa untuk terus mendapat keuntungan.
Menggabungkan Pengiktirafan Rejim Pasar: Membangunkan algoritma untuk mengenal pasti keadaan pasaran yang berbeza (contohnya, trend, julat, turun naik yang tinggi) dan menyesuaikan parameter strategi atau menghentikan perdagangan dengan sewajarnya.
Mempertingkatkan mekanisme Stop-Loss: Pertimbangkan untuk menggunakan stop trailing atau stop-loss berdasarkan tahap sokongan / rintangan untuk menyediakan pengurusan risiko yang lebih fleksibel.
Strategi crossover purata bergerak berbilang tempoh ini dengan penapis turun naik dinamik menggabungkan unsur-unsur klasik analisis teknikal dengan teknik pengurusan risiko moden. Dengan mengintegrasikan isyarat crossover SMA, penapis turun naik ATR, stop-loss dinamik, dan sasaran keuntungan tetap, strategi ini bertujuan untuk menangkap trend pasaran sambil mengawal risiko. Walaupun terdapat beberapa batasan yang melekat, melalui pengoptimuman berterusan dan penyesuaian adaptif, strategi ini berpotensi menjadi sistem perdagangan yang kukuh. Pedagang yang menggunakan strategi ini harus memberi perhatian kepada pemilihan parameter dan pengujian belakang, dan menyesuaikannya mengikut keadaan pasaran tertentu dan pilihan risiko peribadi.
/*backtest start: 2024-06-30 00:00:00 end: 2024-07-30 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("SMA Crossover Strategy with Volatility Filter", overlay=true) // Define input parameters shortSMA = input.int(10, title="Short SMA Length", minval=1) longSMA = input.int(200, title="Long SMA Length", minval=1) sma200Length = 200 atrLength = input.int(14, title="ATR Length", minval=1) atrMultiplier = input.float(1.0, title="ATR Multiplier", minval=0.1) // Calculate SMAs smaShort = ta.sma(close, shortSMA) smaLong = ta.sma(close, longSMA) sma200 = ta.sma(close, sma200Length) // Calculate ATR for volatility atr = ta.atr(atrLength) // Plot SMAs plot(smaShort, color=color.blue, title="Short SMA") plot(smaLong, color=color.red, title="Long SMA") plot(sma200, color=color.green, title="200 SMA") // Calculate stop loss levels stopLossLong = sma200 * 0.999 stopLossShort = sma200 * 1.001 // Initialize take profit levels var float takeProfitLong = na var float takeProfitShort = na // Generate buy/sell signals longCondition = ta.crossover(smaShort, smaLong) and atr > atrMultiplier * ta.sma(atr, atrLength) shortCondition = ta.crossunder(smaShort, smaLong) and atr > atrMultiplier * ta.sma(atr, atrLength) // Execute trades with stop loss and take profit if (longCondition) strategy.entry("Long", strategy.long) takeProfitLong := close + 7.5 strategy.exit("Long Exit", "Long", stop=stopLossLong, limit=takeProfitLong) if (shortCondition) strategy.entry("Short", strategy.short) takeProfitShort := close - 7.5 strategy.exit("Short Exit", "Short", stop=stopLossShort, limit=takeProfitShort) // Plot stop loss and take profit levels on chart plot(strategy.position_size > 0 ? stopLossLong : na, style=plot.style_cross, color=color.red, title="Stop Loss Long") plot(strategy.position_size > 0 ? takeProfitLong : na, style=plot.style_cross, color=color.green, title="Take Profit Long") plot(strategy.position_size < 0 ? stopLossShort : na, style=plot.style_cross, color=color.red, title="Stop Loss Short") plot(strategy.position_size < 0 ? takeProfitShort : na, style=plot.style_cross, color=color.green, title="Take Profit Short")