Dual EMA Crossover adalah strategi yang menggunakan dua garis EMA dari periode yang berbeda dan menghasilkan sinyal perdagangan berdasarkan crossover mereka. Ketika EMA yang lebih cepat melintasi di atas EMA yang lebih lambat, sinyal beli akan dihasilkan. Ketika EMA yang lebih cepat melintasi di bawah EMA yang lebih lambat, sinyal jual akan dihasilkan. Strategi ini dapat melacak tren jangka menengah dan panjang dan menangkap peluang perdagangan di tahap inisiasi tren.
Komponen utama dari strategi ini adalah:
Tentukan panjang untuk EMA yang lebih cepat dan EMA yang lebih lambat.
EMA yang lebih cepat bereaksi lebih cepat sementara EMA yang lebih lambat lebih stabil.
Menentukan situasi silang EMA untuk menghasilkan sinyal perdagangan. Ketika EMA yang lebih cepat melintasi di atas EMA yang lebih lambat, sinyal beli dihasilkan. Ketika EMA yang lebih cepat melintasi di bawah EMA yang lebih lambat, sinyal jual dihasilkan.
Memasuki perdagangan berdasarkan sinyal. Ketika pergi panjang, posisi pendek yang ada ditutup terlebih dahulu sebelum membuka posisi panjang.
Saat trading long, stop loss akan diaktifkan jika harga turun di bawah level terendah sebelumnya dengan persentase tertentu.
Eksit perdagangan berdasarkan sinyal. Posisi panjang ditutup ketika EMA yang lebih cepat melintasi di bawah EMA yang lebih lambat. Posisi pendek ditutup ketika EMA yang lebih cepat melintasi di atas EMA yang lebih lambat.
Logika ini sederhana dan intuitif. EMA crossover menentukan arah tren dan kekuatan. EMA yang lebih cepat bereaksi terhadap perubahan harga jangka pendek dengan cepat sementara EMA yang lebih lambat merespons tren jangka panjang secara stabil. Crossover dari dua garis adalah cara klasik untuk mendeteksi perubahan tren.
Keuntungan dari strategi ini adalah:
EMA dan crossover diakui sebagai indikator dan sinyal yang efektif.
Dapat secara efektif melacak tren jangka menengah dan panjang dan menangkap peluang lebih awal.
Pengaturan EMA ganda menghindari kebisingan dari fluktuasi pasar jangka pendek.
Memiliki aturan masuk yang jelas, aturan keluar dan aturan stop loss.
Hanya membutuhkan beberapa parameter, tidak rentan terhadap overfitting.
Hasil backtest yang baik, layak untuk perdagangan langsung. dapat digunakan sendiri atau dikombinasikan dengan strategi lain.
Beberapa risiko dari strategi ini:
Dual EMA crossover cenderung menghasilkan sinyal palsu dan whipsaws. Parameter perlu disetel untuk menyaring sinyal yang tidak valid.
Tidak bisa menangani situasi rentang dan pembalikan tren dengan baik. Butuh konfirmasi dari indikator lain.
Strategi EMA ganda cenderung mengejar puncak dan menjual terendah. ukuran posisi dan mengambil keuntungan harus dikendalikan.
Hasil uji balik mungkin terlalu banyak. Sensitivitas parameter harus diuji untuk keandalan.
Tidak ada stop loss yang tepat waktu dapat menyebabkan kerugian besar.
Biaya transaksi dapat mempengaruhi profitabilitas yang sebenarnya. Faktor komisi untuk produk yang berbeda harus dipertimbangkan.
Beberapa cara untuk meningkatkan strategi:
Mengoptimalkan parameter periode EMA untuk menemukan kombinasi terbaik, menggunakan optimasi berjalan maju dan pembelajaran mesin.
Tambahkan indikator filter tren seperti ADX, CCI dll untuk menghindari perdagangan dalam tren yang tidak pasti.
Tambahkan indikator volume seperti volume perdagangan, pada volume saldo untuk memastikan perdagangan nyata adalah sinyal pendorong.
Mengimplementasikan stop loss dinamis untuk menyesuaikan stop secara otomatis berdasarkan volatilitas pasar.
Menggabungkan produk korelasi untuk memanfaatkan korelasi untuk manajemen risiko.
Memperkenalkan pembelajaran mesin untuk optimasi parameter, rekayasa fitur, penyaringan sinyal dll.
Pertimbangkan biaya transaksi, sesuaikan stop dan ukuran untuk mengurangi frekuensi perdagangan.
Sesuaikan parameter berdasarkan karakteristik produk untuk meningkatkan kemampuan beradaptasi.
Merancang kerangka strategi komposit, menggabungkan dengan strategi lain untuk meningkatkan ketahanan.
Peningkatan ini dapat membuat strategi lebih kuat dan menguntungkan untuk perdagangan langsung.
Strategi ini menggunakan crossover EMA ganda untuk menghasilkan sinyal perdagangan dan dapat secara efektif melacak tren jangka menengah dan panjang. Keuntungannya terletak pada kesederhanaan dan hasil backtest yang baik, membuatnya mudah digunakan oleh pemula. Tetapi risiko ada dan harus dikelola melalui optimasi parameter, menambahkan indikator, berhenti dinamis, mengoptimalkan biaya perdagangan dll. Strategi dapat digunakan secara mandiri atau dikombinasikan dengan yang lain untuk kepraktisan tambahan.
/*backtest start: 2022-10-23 00:00:00 end: 2023-10-29 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "EMA Cross Strategy", shorttitle = "EMA Cross",calc_on_order_fills=true,calc_on_every_tick =true, initial_capital=21000,commission_value=.25,overlay = true,default_qty_type = strategy.percent_of_equity, default_qty_value = 100) StartYear = input(2018, "Backtest Start Year") StartMonth = input(1, "Backtest Start Month") StartDay = input(1, "Backtest Start Day") UseStopLoss = input(true,"UseStopLoss") window() => time >= timestamp(StartYear, StartMonth, StartDay,00,00) ? true : false stopLoss = input(20, title = "Stop loss percentage(0.1%)") maFastSource = input(defval = open, title = "Fast MA Source") maFastLength = input(defval = 12, title = "Fast MA Period", minval = 1) // long ma maSlowSource = input(defval = open, title = "Slow MA Source") maSlowLength = input(defval = 26, title = "Slow MA Period", minval = 1) maFast = ema(maFastSource, maFastLength) maSlow = ema(maSlowSource, maSlowLength) fast = plot(maFast, title = "Fast MA", color = #7a8598, linewidth = 2, style = line, transp = 50) slow = plot(maSlow, title = "Slow MA", color = #e08937, linewidth = 2, style = line, transp = 50) longEMA = crossover(maFast, maSlow) exitLong = crossunder(maFast, maSlow) shortEMA = crossover(maSlow, maFast) exitShort = crossover(maFast, maSlow) if (longEMA) strategy.entry("LongId", strategy.long, when=window()) if (shortEMA) strategy.entry("ShortId", strategy.short, when=window()) if (UseStopLoss) strategy.exit("StopLoss", "LongId", loss = close * stopLoss / 1000 / syminfo.mintick) strategy.exit("StopLoss", "ShortId", loss = close * stopLoss / 1000 / syminfo.mintick)