Strategi ini adalah strategi perdagangan crossover rata-rata bergerak sederhana berdasarkan crossover rata-rata bergerak jangka pendek dan jangka panjang. Ini menggunakan rata-rata bergerak 34 periode dan 89 periode untuk mengamati crossover mereka selama sesi pagi sebagai sinyal beli dan jual. Ketika rata-rata bergerak jangka pendek melintasi di atas rata-rata bergerak jangka panjang dari bawah, sinyal beli dihasilkan. Ketika melintasi di bawah dari atas, sinyal jual dihasilkan.
Logika inti dari strategi ini didasarkan pada persilangan antara rata-rata bergerak jangka pendek dan jangka panjang sebagai sinyal perdagangan. Secara khusus, strategi mendefinisikan rata-rata bergerak sederhana jangka pendek dan jangka panjang (SMA) 34 periode dan 89 periode. Ini hanya mengamati persilangan antara kedua SMA ini selama sesi pagi (08:00 - 10:00). Ketika SMA jangka pendek melintasi SMA jangka panjang dari bawah, pasar dianggap berada dalam tren naik, sehingga menghasilkan sinyal beli. Ketika SMA jangka pendek melintasi di bawah SMA jangka panjang dari atas, pasar dianggap berada dalam tren turun, sehingga menghasilkan sinyal jual.
Setelah menerima sinyal beli atau jual, strategi akan memasuki posisi dan menetapkan kondisi untuk keluar dari posisi, yaitu mengambil keuntungan setelah memegang untuk jumlah tertentu lilin (default adalah 3 lilin) sejak masuk.
Perlu dicatat bahwa strategi hanya mengidentifikasi sinyal crossover selama sesi pagi. Ini karena kerangka waktu ini memiliki volume perdagangan yang lebih tinggi dan sinyal perubahan tren lebih dapat diandalkan. Kerangka waktu lain memiliki fluktuasi harga yang lebih besar dan lebih mudah menghasilkan sinyal palsu.
Strategi ini memiliki keuntungan berikut:
Menggunakan aturan crossover rata-rata bergerak yang sederhana dan universal, mudah dimengerti, cocok untuk pemula
Hanya mengidentifikasi sinyal selama sesi pagi di mana sinyal kualitas berlimpah, yang menyaring sinyal palsu selama kerangka waktu lainnya
Memiliki kondisi stop loss yang memungkinkan stop loss yang tepat waktu, mengunci sebagian keuntungan dan mengurangi risiko kerugian
Banyak parameter yang dapat disesuaikan yang dapat disesuaikan berdasarkan kondisi pasar dan gaya perdagangan pribadi
Mudah diperluas untuk dikombinasikan dengan indikator lain untuk merancang strategi yang lebih kompleks
Strategi ini juga memiliki beberapa risiko, terutama dari aspek berikut:
Rata-rata bergerak sendiri memiliki atribut tertinggal yang lebih besar, mungkin melewatkan titik pembalikan harga jangka pendek
Bergantung hanya pada indikator sederhana, rentan terhadap kegagalan dalam lingkungan pasar tertentu (kejutan tren, batas kisaran, dll.)
Posisi stop loss yang tidak benar dapat menyebabkan kerugian yang tidak perlu
Pengaturan parameter yang tidak benar (periode rata-rata bergerak, periode penahan, dll.) juga dapat mempengaruhi kinerja strategi.
Solusi yang sesuai:
Menggabungkan indikator utama lainnya untuk meningkatkan sensitivitas terhadap perubahan jangka pendek
Tambahkan kondisi penyaringan untuk menghindari dampak sinyal palsu selama kejutan dan pasar yang terikat rentang
Mengoptimalkan logika stop loss dan menyesuaikan rentang stop loss secara dinamis berdasarkan volatilitas pasar
Optimasi multi-parameter untuk menemukan pengaturan parameter optimal
Strategi ini juga memiliki potensi besar untuk optimalisasi, terutama dari aspek berikut:
Tambahkan kondisi penyaringan lainnya untuk menghindari sinyal palsu selama kejutan dan pasar yang terikat rentang
Masukkan indikator momentum untuk mengidentifikasi sinyal pecah yang lebih kuat
Mengoptimalkan parameter periode rata-rata bergerak untuk menemukan kombinasi parameter terbaik
Otomatis mengoptimalkan rentang stop loss berdasarkan volatilitas pasar
Cobalah untuk mengoptimalkan seluruh strategi secara otomatis berdasarkan teknik pembelajaran mesin
Mencoba untuk menggabungkan dengan strategi lain untuk merancang sistem multi-strategi yang lebih kompleks
Secara umum, strategi ini relatif sederhana dan praktis, cocok untuk pemula untuk belajar dari. Ini mewujudkan pola khas strategi crossover rata-rata bergerak dan menggunakan stop untuk mengendalikan risiko. Namun, optimasi lebih lanjut dapat dilakukan untuk meningkatkan kinerja untuk lebih banyak kondisi pasar. Investor dapat memanfaatkan kerangka dasar ini untuk merancang strategi perdagangan kuantitatif yang lebih maju.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("34 89 SMA Crossover Strategy", overlay=true) // Define the length for the SMAs short_length = input(34, title="Short SMA Length") long_length = input(89, title="Long SMA Length") exit_candles = input(3, title="Exit after how many candles?") exit_at_open = input(true, title="Exit at Open?") // Define morning session morning_session = input("0800-1000", "Morning Session") // Calculate SMAs short_sma = ta.sma(close, short_length) long_sma = ta.sma(close, long_length) // Function to check if current time is within specified session in_session(session) => session_start = na(time(timeframe.period, "0800-1000")) ? na : true session_start // Condition for buy signal (short SMA crosses over long SMA) within specified trading hours buy_signal = ta.crossover(short_sma, long_sma) // Condition for sell signal (short SMA crosses under long SMA) within specified trading hours sell_signal = ta.crossunder(short_sma, long_sma) // Function to exit the trade after specified number of candles var int trade_entry_bar = na var int trade_exit_bar = na if (buy_signal or sell_signal) trade_entry_bar := bar_index if (not na(trade_entry_bar)) trade_exit_bar := trade_entry_bar + exit_candles // Exit condition exit_condition = (not na(trade_exit_bar) and (exit_at_open ? bar_index + 1 >= trade_exit_bar : bar_index >= trade_exit_bar)) // Execute trades if (buy_signal) strategy.entry("Buy", strategy.long) if (sell_signal) strategy.entry("Sell", strategy.short) if (exit_condition) strategy.close("Buy") strategy.close("Sell") // Plot SMAs on the chart plot(short_sma, color=color.blue, linewidth=1) plot(long_sma, color=color.red, linewidth=1)