Strategi ini menghasilkan sinyal perdagangan dengan menghitung crossover antara rata-rata bergerak eksponensial 5 hari (EMA) dan rata-rata bergerak sederhana 20 hari (SMA).
Rata-rata bergerak eksponensial ganda adalah indikator teknis yang banyak digunakan. EMA 5 hari mewakili tren harga baru-baru ini sementara SMA 20 hari menunjukkan pergerakan harga jangka menengah. Ketika MA jangka pendek melintasi di atas MA jangka panjang, itu menandakan perpecahan ke atas dan tren harga ke atas, menunjukkan waktu yang baik untuk pergi panjang. Sebaliknya, penyeberangan ke bawah menyiratkan pembalikan harga potensial dan harus mempertimbangkan keluar dari posisi.
Strategi ini menetapkan EMA 5 hari dan SMA 20 hari sebagai sinyal perdagangan. Ini menjadi panjang ketika EMA 5 hari melintasi SMA 20 hari dan menutup posisi ketika perubahan harga mencapai 5% atau -5%.
Langkah-langkahnya adalah:
Strategi ini memanfaatkan penyeberangan emas antara dua MA dan memiliki keuntungan berikut:
Secara umum, strategi ini memiliki aturan yang sederhana, memanfaatkan indikator teknis yang matang seperti MA crossover, dan memiliki pengukuran kontrol risiko yang relatif komprehensif.
Masih ada beberapa risiko dalam strategi ini:
Perbaikan yang disarankan adalah:
Jadi ada ruang untuk optimasi lebih lanjut.
Strategi ini dapat ditingkatkan dari aspek berikut:
Optimalkan parameter MA dengan menguji kombinasi EMA dan SMA yang lebih pendek/panjang untuk menemukan pasangan yang optimal.
Tambahkan indikator lain seperti MACD, KDJ untuk menyaring sinyal palsu.
Menggunakan algoritma pembelajaran mesin untuk menemukan parameter yang lebih baik melalui pemodelan data historis dan statistik.
Atur stop loss/take profit dinamis berdasarkan volatilitas pasar dan karakteristik instrumen untuk mengendalikan risiko dengan lebih baik.
Perluas strategi ini ke produk lain seperti forex, cryptocurrency.
Melalui peningkatan di atas, stabilitas dan profitabilitas strategi ini dapat ditingkatkan secara substansial.
Sebagai kesimpulan, ini adalah strategi crossover MA ganda yang mudah dimengerti dan diimplementasikan. Ini memanfaatkan sinyal MA dan menggunakan TII untuk menyaring kesalahan. Ini mengendalikan risiko dengan stop loss / take profit. Strategi ini cocok untuk pemula untuk belajar dan juga memiliki ruang besar untuk optimasi. Peningkatan lebih lanjut pada penyesuaian parameter, penyaringan sinyal dan stop loss dinamis dapat mengubahnya menjadi strategi perdagangan yang praktis dan kuat.
/*backtest start: 2024-01-02 00:00:00 end: 2024-02-01 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("EMA-SMA Crossover Strategy", shorttitle="EMA-SMA Cross", overlay=true) // Define the moving averages ema5 = ta.ema(close, 5) sma20 = ta.sma(close, 20) smaVolume10 = ta.sma(volume, 50) majorLength = input(60, title="Major Length") minorLength = input(30, title="Minor Length") src = input(close, title="Source") smaValue = ta.sma(src, majorLength) positiveSum = 0.0 negativeSum = 0.0 for i = 0 to minorLength - 1 price = na(src[i]) ? 0 : src[i] avg = na(smaValue[i]) ? 0 : smaValue[i] positiveSum := positiveSum + (price > avg ? price - avg : 0) negativeSum := negativeSum + (price > avg ? 0 : avg - price) tii = 100 * positiveSum / (positiveSum + negativeSum) // Buy condition: 5 EMA crosses above 20 SMA buyCondition = ta.crossover(ema5, sma20) and tii > 0 and tii >= tii[1] //and volume > smaVolume10 // // Track entry price var entryPrice = 0.0 if (buyCondition) entryPrice := close // Calculate percentage change from entry price priceChange = close / entryPrice - 1 // Plotting the moving averages on the chart plot(ema5, color=color.blue, title="5 EMA") plot(sma20, color=color.red, title="20 SMA") // Highlighting buy signals and exit signals on the chart // plotshape(series=buyCondition, title="Buy Signal", location=location.belowbar, color=color.green, size=size.small, style=shape.labelup, text="Buy") // Strategy entry and exit if (buyCondition) strategy.entry("Buy", strategy.long) // Exit conditions if (strategy.opentrades > 0) if (priceChange >= 0.05 or priceChange <= -0.05) strategy.close("Buy")