
Ini adalah strategi perdagangan kuantitatif yang menggabungkan crossover SMA dan filter volatilitas. Strategi ini memanfaatkan crossover SMA jangka pendek dan jangka panjang untuk menghasilkan sinyal perdagangan, sambil menggunakan indikator rata-rata true range (ATR) sebagai filter volatilitas untuk mengurangi sinyal palsu. Strategi ini juga menyertakan stop loss dan target profit tetap yang dinamis berdasarkan rata-rata 200 hari untuk mengoptimalkan manajemen risiko dan meningkatkan profitabilitas.
Sinyal persilangan rata-rata: strategi menggunakan persilangan SMA jangka pendek (10 hari) dan SMA jangka panjang (200 hari) untuk menghasilkan sinyal beli dan jual. Sinyal do muncul saat SMA jangka pendek melewati SMA jangka panjang, dan sinyal do muncul saat SMA panjang melewati.
Filtrasi tingkat fluktuasi: menggunakan ATR 14 hari sebagai indikator tingkat fluktuasi. Sinyal perdagangan hanya dijalankan ketika ATR saat ini lebih tinggi dari kelipatan tertentu dari rata-rata 14 hari (ditentukan oleh kelipatan ATR yang ditetapkan oleh pengguna). Ini membantu memfilter sinyal palsu potensial selama periode fluktuasi rendah.
Stop loss dinamis: strategi menggunakan SMA 200 hari sebagai basis stop loss dinamis. Stop loss untuk posisi multihead ditetapkan pada 99,9% dari SMA 200 hari, dan stop loss untuk posisi kosong ditetapkan pada 100,1% dari SMA 200 hari.
Target profit tetap: Strategi menetapkan target profit yang tetap untuk setiap transaksi. Tujuan profit untuk perdagangan multihead adalah harga masuk ditambah 7.5 unit harga, dan perdagangan kosong adalah harga masuk dikurangi 7.5 unit harga.
Multi-Signal Confirmation: Strategi ini mengurangi risiko sinyal palsu dan meningkatkan reliabilitas perdagangan dengan menggabungkan crossover rata-rata dan penyaringan tingkat fluktuasi.
Manajemen risiko dinamis: menggunakan stop loss dinamis berdasarkan SMA 200 hari, memungkinkan strategi untuk beradaptasi dengan perubahan kondisi pasar, memberikan kontrol risiko yang lebih fleksibel.
Tujuan profit yang jelas: Tujuan profit yang tetap membantu melindungi keuntungan yang telah dicapai dan mencegah penarikan yang disebabkan oleh keserakahan.
Adaptabilitas: Parameter strategi dapat disesuaikan dengan pasar dan jenis perdagangan yang berbeda, meningkatkan versatilitas strategi.
Visual Assist: Strategi memetakan berbagai garis SMA, stop loss dan profit target pada grafik, memberikan alat analisis pasar yang intuitif bagi pedagang.
Rata-rata ketertinggalan: SMA pada dasarnya merupakan indikator ketertinggalan, yang dapat menghasilkan sinyal keterlambatan di pasar yang berubah dengan cepat, yang menyebabkan masuk atau keluar tidak tepat waktu.
Overtrading: Dalam pasar yang sangat berfluktuasi tetapi tidak memiliki tren yang jelas, strategi dapat menghasilkan terlalu banyak sinyal perdagangan, meningkatkan biaya perdagangan.
Keterbatasan untuk target profit tetap: Target profit tetap dapat dihapus terlalu dini dalam tren yang kuat, membatasi potensi keuntungan.
Ketergantungan pada kondisi pasar tertentu: strategi dapat bekerja dengan baik di pasar dengan tren yang jelas, tetapi dapat bekerja dengan buruk di pasar yang berlawanan arah atau berbalik dengan cepat.
Sensitivitas parameter: kinerja kebijakan sangat bergantung pada parameter yang dipilih, pengaturan parameter yang tidak tepat dapat menyebabkan kinerja kebijakan yang buruk.
Penyesuaian parameter dinamis: Anda dapat mempertimbangkan untuk menyesuaikan siklus SMA dan perkalian ATR secara dinamis sesuai dengan kondisi pasar untuk menyesuaikan diri dengan lingkungan pasar yang berbeda.
Meningkatkan penyaringan kekuatan tren: memperkenalkan indikator kekuatan tren tambahan (seperti ADX) untuk memastikan perdagangan hanya di pasar tren yang kuat.
Optimalkan target profit: Pertimbangkan untuk menggunakan target profit yang dinamis, seperti yang didasarkan pada ATR atau pengaturan rentang fluktuasi harga baru-baru ini, untuk lebih menyesuaikan diri dengan fluktuasi pasar.
Memperkenalkan mekanisme penutupan sebagian: melakukan penutupan sebagian ketika mencapai tingkat keuntungan tertentu, dapat mengunci sebagian dari keuntungan, tetapi dapat membiarkan posisi yang tersisa tetap menguntungkan.
Meningkatkan identifikasi rezim pasar: mengembangkan algoritma untuk mengidentifikasi berbagai kondisi pasar (seperti tren, interval, volatilitas tinggi, dll.) dan menyesuaikan parameter strategi atau menghentikan perdagangan sesuai.
Optimalkan mekanisme stop loss: pertimbangkan untuk menggunakan trailing stop atau stop loss berdasarkan level support/resistance untuk memberikan manajemen risiko yang lebih fleksibel.
Strategi ini menggabungkan elemen klasik dalam analisis teknis dan teknik manajemen risiko modern. Dengan mengintegrasikan sinyal silang SMA, penyaringan tingkat fluktuasi ATR, stop loss dinamis dan target profit tetap, strategi ini bertujuan untuk menangkap tren pasar sambil mengendalikan risiko. Meskipun ada beberapa keterbatasan yang melekat, strategi ini memiliki potensi untuk menjadi sistem perdagangan yang kuat dengan pengoptimalan dan penyesuaian yang berkelanjutan.
/*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")