
Ini adalah strategi perdagangan kuantitatif yang menggabungkan crossover SMA dan penapis kadar turun naik. Strategi ini menggunakan crossover SMA jangka pendek dan jangka panjang untuk menghasilkan isyarat perdagangan, sambil menggunakan penunjuk rata-rata gelombang sebenar (ATR) sebagai penapis kadar turun naik untuk mengurangkan isyarat palsu.
Isyarat persilangan garis rata: strategi menggunakan persilangan jangka pendek ((10 hari) dan jangka panjang ((200 hari) SMA untuk menghasilkan isyarat membeli dan menjual. Isyarat melakukan banyak dihasilkan apabila SMA jangka pendek melintasi SMA jangka panjang, dan isyarat kosong dihasilkan apabila SMA melintasi.
Penapisan kadar turun naik: menggunakan ATR 14 hari sebagai penunjuk kadar turun naik. Isyarat dagangan dijalankan hanya apabila ATR semasa lebih tinggi daripada kelipatan tertentu daripada rata-rata 14 hari (yang ditentukan oleh ATR yang ditetapkan oleh pengguna). Ini membantu menapis isyarat palsu yang berpotensi dalam tempoh turun naik rendah.
Hentian dinamik: Strategi menggunakan 200 hari SMA sebagai penanda aras hentian dinamik. Hentian kerugian untuk kedudukan berbilang kepala ditetapkan pada 99.9% daripada 200 hari SMA, dan hentian kerugian untuk kedudukan kosong ditetapkan pada 100.1% daripada 200 hari SMA.
Matlamat keuntungan tetap: Strategi menetapkan sasaran keuntungan tetap untuk setiap urus niaga. Matlamat keuntungan untuk urus niaga berbilang adalah harga masuk ditambah 7.5 unit harga, dan urus niaga kosong adalah harga masuk dikurangkan 7.5 unit harga.
Pengesahan pelbagai isyarat: Strategi ini mengurangkan risiko isyarat palsu dan meningkatkan kebolehpercayaan perdagangan dengan menggabungkan persilangan rata-rata dan penapisan kadar turun naik.
Pengurusan risiko dinamik: menggunakan berhenti dinamik berdasarkan 200 hari SMA, membolehkan strategi menyesuaikan diri dengan perubahan keadaan pasaran, memberikan kawalan risiko yang lebih fleksibel.
Matlamat keuntungan yang jelas: Matlamat keuntungan yang tetap membantu melindungi keuntungan yang telah dicapai dan mencegah penarikan balik yang disebabkan oleh keserakahan yang berlebihan.
Kebolehan beradaptasi: parameter strategi boleh disesuaikan dengan pasaran dan jenis perdagangan yang berbeza, meningkatkan kepelbagaian strategi.
visual: Strategi ini memetakan pelbagai garis SMA, sasaran stop loss dan profit pada carta, memberikan alat analisis pasaran yang intuitif kepada peniaga.
Garis purata ketinggalan: SMA pada dasarnya adalah penunjuk ketinggalan, yang mungkin menghasilkan isyarat kelewatan dalam pasaran yang berubah dengan cepat, yang menyebabkan masuk atau keluar tidak tepat pada masanya.
Overtrading: Dalam pasaran yang bergelombang tinggi tetapi tidak mempunyai trend yang jelas, strategi mungkin menghasilkan terlalu banyak isyarat perdagangan, meningkatkan kos perdagangan.
Batasan untuk sasaran keuntungan tetap: Matlamat keuntungan tetap mungkin tergesa-gesa dalam trend yang kuat, mengehadkan potensi keuntungan.
Ketergantungan kepada keadaan pasaran tertentu: strategi ini berfungsi dengan baik dalam pasaran yang jelas bercandar, tetapi mungkin tidak berfungsi dengan baik dalam pasaran yang berlainan arah atau berbalik dengan cepat.
Sensitiviti parameter: Prestasi strategi sangat bergantung kepada parameter yang dipilih, dan parameter yang tidak betul boleh menyebabkan prestasi strategi yang buruk.
Penyesuaian parameter dinamik: Anda boleh mempertimbangkan untuk menyesuaikan kitaran SMA dan pengganda ATR mengikut keadaan pasaran yang dinamik untuk menyesuaikan diri dengan keadaan pasaran yang berbeza.
Menambah penapis kekuatan trend: memperkenalkan penunjuk kekuatan trend tambahan (seperti ADX) untuk memastikan perdagangan hanya berlaku di pasaran yang sedang bertukar.
Mengoptimumkan sasaran keuntungan: Pertimbangkan untuk menggunakan sasaran keuntungan yang dinamik, seperti berdasarkan ATR atau jangkauan turun naik harga baru-baru ini, untuk lebih menyesuaikan diri dengan turun naik pasaran.
Memperkenalkan mekanisme penutupan separa: melakukan penutupan separa apabila mencapai tahap keuntungan tertentu, yang dapat mengunci sebahagian keuntungan dan membiarkan baki kedudukan terus mendapat keuntungan.
Menambah pengenalan rejim pasaran: membangunkan algoritma untuk mengenal pasti keadaan pasaran yang berbeza (seperti trend, julat, turun naik tinggi, dan lain-lain) dan menyesuaikan parameter strategi atau menangguhkan perdagangan.
Mekanisme penangguhan yang dioptimumkan: pertimbangkan untuk menggunakan trailing stop atau berhenti berdasarkan tahap sokongan / rintangan untuk memberikan pengurusan risiko yang lebih fleksibel.
Strategi ini menggabungkan unsur-unsur klasik dalam analisis teknikal dan teknik pengurusan risiko moden. Dengan menggabungkan isyarat silang SMA, penapisan kadar turun naik ATR, hentian kerugian dinamik dan sasaran keuntungan tetap, strategi ini bertujuan untuk menangkap trend pasaran sambil mengawal risiko. Walaupun terdapat beberapa batasan yang melekat, strategi ini mempunyai potensi untuk menjadi sistem perdagangan yang kuat dengan pengoptimuman berterusan dan penyesuaian adaptif.
/*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")