Strategi Crossover EMA Dual

Penulis:ChaoZhang, Tanggal: 2023-10-16 16:15:38
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan silang EMA ganda berdasarkan indikator EMA cepat dan EMA lambat. Strategi ini menghasilkan sinyal panjang ketika EMA cepat melintasi di atas EMA lambat, dan menutup posisi panjang ketika EMA cepat melintasi di bawah EMA lambat. Strategi ini sederhana dan praktis untuk perdagangan jangka menengah.

Logika Strategi

Strategi ini terutama diimplementasikan dengan indikator EMA ganda. EMA cepat memiliki periode yang lebih pendek untuk mencerminkan perubahan harga secara sensitif, sedangkan EMA lambat memiliki periode yang lebih lama untuk menunjukkan tren jangka panjang.

Ketika EMA cepat melintasi di atas EMA lambat, sebuah salib emas terbentuk, yang menunjukkan momentum harga naik dalam jangka pendek untuk pergi panjang.

Secara khusus, strategi ini mencakup:

  1. Parameter input untuk EMA cepat dan lambat, termasuk periode, sumber, dll.

  2. Menghitung EMA cepat dan EMA lambat.

  3. Mendefinisikan golden cross ketika EMA cepat melintasi EMA lambat.

  4. Definisi death cross ketika EMA cepat melintasi di bawah EMA lambat.

  5. Berjalan panjang dengan salib emas.

  6. Posisi dekat pada salib kematian.

  7. Opsi untuk shorting dan stop loss/profit taking.

  8. Output pembelian dan penjualan pemberitahuan.

Dengan sistem crossover EMA ganda yang sederhana ini, strategi dapat menangkap tren jangka pendek untuk keuntungan.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Logikanya sederhana dan jelas, mudah dipahami.

  2. Hanya menggunakan EMA ganda, mudah diterapkan.

  3. Dapat menangkap tren jangka pendek untuk keuntungan swing.

  4. Periode EMA yang dapat disesuaikan untuk pasar yang berbeda.

  5. Opsi untuk shorting untuk mengontrol risiko.

  6. Opsi untuk stop loss / profit taking.

  7. Pemberitahuan pembelian/penjualan untuk pemantauan.

  8. Mudah untuk mengoptimalkan parameter EMA untuk keuntungan yang lebih baik.

Analisis Risiko

Ada juga beberapa risiko:

  1. EMA ganda dapat menghasilkan sinyal palsu yang menyebabkan kerugian yang tidak perlu.

  2. Pengaturan stop loss yang tidak tepat dapat memperbesar kerugian.

  3. Frekuensi perdagangan yang tinggi meningkatkan biaya dan risiko slip.

  4. Parameter EMA tetap tidak dapat beradaptasi dengan perubahan pasar.

  5. cenderung mengejar momentum, kehilangan penilaian yang tenang.

  6. Tidak dapat mengidentifikasi pembalikan tren, mungkin membuka posisi terbalik.

Langkah-langkah manajemen risiko yang sesuai:

  1. Mengoptimalkan parameter EMA untuk mengurangi sinyal palsu.

  2. Atur stop loss yang tepat untuk membatasi kerugian per perdagangan.

  3. Mengoptimalkan periode EMA untuk mengurangi frekuensi.

  4. Sesuaikan EMA secara dinamis untuk tahap pasar yang berbeda.

  5. Tambahkan indikator tren untuk menghindari mengejar momentum.

  6. Mengidentifikasi arah tren utama dengan alat tren.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Optimalisasi dinamis parameter EMA untuk pasar yang berbeda.

  2. Tambahkan filter stok untuk meningkatkan akurasi.

  3. Menggabungkan indeks volatilitas untuk mengurangi posisi dalam lingkungan volatilitas rendah.

  4. Tambahkan konfirmasi volume untuk sinyal.

  5. Tetapkan level harga, seperti 20SMA sebelum mengambil sinyal.

  6. Meningkatkan strategi stop loss dan take profit.

  7. Tambahkan analisis tren utama untuk menghindari perdagangan melawan tren.

  8. Terus-menerus mengoptimalkan strategi dengan algoritma pembelajaran mesin.

Ringkasan

Singkatnya, strategi crossover EMA ganda memiliki logika yang sederhana dan jelas untuk menangkap tren jangka pendek, tetapi juga memiliki beberapa risiko keuntungan. Kita dapat mengelola risiko dengan mengoptimalkan parameter, menerapkan stop loss / profit taking, menyaring saham, menilai tren utama, dll, untuk terus mendapatkan pengembalian yang memuaskan. Strategi dapat ditingkatkan secara bertahap dengan penelitian dan peningkatan berkelanjutan.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// invert trade direction
shorting = input(defval=false, title="Allow Shorting?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_buy  = input("Buy message", title="Buy Alert Message")
message_sell   = input("Sell message", title="Sell Alert Message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell)

// Shorting if using
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)



Lebih banyak