- Persegi
- Strategi Pembalikan Tren Berdasarkan EMA dan SMA Crossover
Strategi Pembalikan Tren Berdasarkan EMA dan SMA Crossover
Penulis:
ChaoZhang, Tanggal: 2024-01-04 17:59:04
Tag:
Gambaran umum
Tujuan dari strategi ini adalah untuk mengidentifikasi titik-titik pembalikan tren potensial dengan mengamati persilangan antara Rata-rata Bergerak Eksponensial (EMA) 20 periode dan Rata-rata Bergerak Sederhana (SMA) 20 periode.
Logika Strategi
- Ketika EMA 20 periode melintasi SMA 20 periode dan harga penutupan berada di atas EMA 20 periode, pergi panjang.
- Ketika EMA 20 periode melintasi di bawah SMA 20 periode dan harga penutupan di bawah EMA 20 periode, pergi pendek.
- Untuk posisi panjang, tutup perdagangan ketika EMA 20 periode melintasi di bawah SMA 20 periode.
- Untuk posisi pendek, tutup perdagangan ketika EMA 20 periode melintasi SMA 20 periode.
Strategi ini menggunakan fungsi crossover dan crossunder dari perpustakaan ta untuk mendeteksi crossover rata-rata bergerak.
Analisis Keuntungan
Strategi ini menggabungkan kemampuan mengikuti tren rata-rata bergerak dan generasi sinyal dari peristiwa silang, memiliki keuntungan berikut:
- Rata-rata bergerak dapat secara efektif menyaring beberapa kebisingan pasar dan mengidentifikasi tren jangka menengah hingga panjang.
- Crossover mudah dioperasikan dan dengan jelas mengidentifikasi perubahan momentum pasar.
- Parameter 20 periode bekerja dengan baik untuk sebagian besar saham dan kerangka waktu tanpa perlu sering disesuaikan.
- Menggunakan harga penutupan dalam kaitannya dengan EMA menghindari beberapa sinyal palsu.
- Aturan sederhana dan mudah dimengerti, cocok untuk investor yang kurang canggih.
Analisis Risiko
Strategi ini juga memiliki risiko berikut:
- Rata-rata bergerak memiliki keterlambatan dan mungkin melewatkan pembalikan tren jangka pendek yang tiba-tiba.
- Crossover dapat menghasilkan sinyal bising, mempengaruhi stabilitas.
- Parameter 20 periode tetap mungkin tidak bekerja dengan baik untuk beberapa saham, yang membutuhkan penyesuaian.
- Tidak ada stop loss, yang memungkinkan perdagangan kehilangan besar.
Solusi:
- Memperpendek periode rata-rata bergerak untuk meningkatkan respon.
- Tambahkan filter untuk menghindari sinyal palsu.
- Uji dan optimalkan parameter dan kategori stok.
- Menggabungkan stop loss untuk mengendalikan risiko.
Arahan Optimasi
Strategi ini juga dapat ditingkatkan dalam aspek berikut:
- Tambahkan indikator lain untuk membangun strategi komposit, misalnya volume, RSI.
- Uji dan optimalkan periode dan simbol, atur parameter adaptif.
- Membangun mekanisme keluar yang dinamis seperti stop loss, stop loss berbasis waktu.
- Tambahkan kemampuan perdagangan algoritmik untuk otomatisasi.
- Masukkan pembelajaran mesin untuk optimasi adaptif.
Ringkasan
Strategi ini relatif sederhana dan praktis secara keseluruhan, mengidentifikasi titik pembalikan tren potensial melalui teori crossover rata-rata bergerak. tetapi juga ada ruang untuk perbaikan melalui indikator tambahan, parameter dinamis, stop loss, perdagangan algoritmik dll untuk membuat strategi lebih kuat, andal dan otomatis.
/*backtest
start: 2022-12-28 00:00:00
end: 2024-01-03 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy("EMA-SMA Crossover Strategy", overlay=true)
// Define the length of the moving averages
emaLength = 20
smaLength = 20
// Calculate moving averages
emaValue = ta.ema(close, emaLength)
smaValue = ta.sma(close, smaLength)
// Buy condition
buyCondition = ta.crossover(emaValue, smaValue) and close > emaValue
// Short sell condition
sellCondition = ta.crossunder(emaValue, smaValue) and close < emaValue
// Exit conditions for both Buy and Short sell
exitBuyCondition = ta.crossunder(emaValue, smaValue)
exitSellCondition = ta.crossover(emaValue, smaValue)
// Strategy logic
if (buyCondition)
strategy.entry("Buy", strategy.long)
if (sellCondition)
strategy.entry("Sell", strategy.short)
if (exitBuyCondition)
strategy.close("Buy")
if (exitSellCondition)
strategy.close("Sell")
// Plot the moving averages
plot(emaValue, color=color.blue, title="20 EMA")
plot(smaValue, color=color.red, title="20 SMA")
Lebih banyak