Strategi ini menggunakan persilangan EMA cepat dan EMA lambat sebagai sinyal beli dan jual untuk menerapkan perdagangan otomatis berdasarkan persilangan EMA. Garis EMA cepat mengikuti aksi harga secara erat sementara garis EMA lambat meluruskan aksi harga. Ketika garis EMA cepat melintasi di atas garis EMA lambat dari bawah, sinyal beli dihasilkan. Ketika garis EMA cepat melintasi di bawah garis EMA lambat dari atas, sinyal jual dihasilkan. Strategi ini fleksibel dan dapat disesuaikan dengan menyesuaikan parameter EMA cepat dan lambat untuk mendefinisikan titik sinyal kustom untuk entri dan keluar.
Strategi ini terutama menghasilkan sinyal perdagangan dengan menghitung garis EMA cepat dan lambat dan membandingkan hubungan mereka.
Pertama, periode EMA cepat emaFast ditetapkan menjadi 1 dalam parameter input sehingga dapat mengikuti perubahan harga secara dekat. Pada saat yang sama, periode EMA lambat ditetapkan - emaSlowBuy untuk menghasilkan sinyal beli dan emaSlowSell untuk sinyal jual.
Kemudian, EMA cepat dan EMA lambat dihitung sesuai dengan periode input. EMA cepat memiliki periode tetap 1 untuk mengikuti harga dengan cermat sementara EMA lambat adalah parameter yang dapat disesuaikan untuk data harga yang halus.
Selanjutnya, hubungan antara EMA cepat dan EMA lambat dibandingkan untuk menentukan crossover. Jika EMA cepat melintasi di atas EMA lambat, membentuk silang emas, kondisi beli terpenuhi. Jika EMA cepat melintasi di bawah EMA lambat, membentuk silang kematian, kondisi jual terpenuhi.
Akhirnya, perintah masuk dan keluar dieksekusi ketika kondisi beli dan jual terpenuhi untuk menyelesaikan perdagangan. Sementara itu, ia memeriksa bahwa waktu saat ini berada dalam kisaran tanggal backtest untuk menghindari perdagangan yang salah di luar kisaran tanggal.
Peningkatan yang mungkin untuk mengurangi risiko:
Tambahkan filter menggunakan indikator lain untuk memvalidasi sinyal silang EMA dan menghindari sinyal palsu
Sesuaikan periode EMA berdasarkan volatilitas pasar untuk mengurangi frekuensi perdagangan
Menggabungkan stop loss dan mengambil keuntungan untuk mengendalikan risiko
Mengoptimalkan periode EMA cepat untuk kinerja yang lebih baik dalam kondisi pasar tertentu
Tambahkan penentuan tren untuk menghindari perdagangan berlebihan di pasar yang berbeda
Beberapa cara strategi dapat dioptimalkan lebih lanjut:
Mengoptimalkan parameter EMA dengan menguji kombinasi periode yang berbeda untuk menemukan pengaturan optimal
Tambahkan filter menggunakan indikator lain seperti MACD, KDJ, Bollinger Bands untuk memvalidasi sinyal
Masukkan metrik tren seperti ATR untuk menghindari pasar yang bervariasi
Mengoptimalkan strategi stop loss dan mengambil keuntungan untuk risiko dan profitabilitas yang lebih baik
Uji kombinasi EMA lainnya seperti EMA ganda atau tiga untuk menemukan parameter yang lebih baik
Sesuaikan parameter secara dinamis untuk siklus pasar yang berbeda seperti EMA yang lebih cepat untuk tren dan EMA yang lebih lambat untuk pasar bergolak
Strategi EMA crossover memiliki logika yang jelas dan mudah dimengerti menggunakan indikator teknis yang mapan untuk menentukan entri dan keluar. Strategi ini sangat dapat disesuaikan melalui penyesuaian parameter EMA untuk optimasi di berbagai kondisi pasar. Namun, sinyal EMA memiliki keterlambatan dan pengujian ekstensif diperlukan untuk menemukan parameter terbaik. Selain itu, peningkatan lebih lanjut diperlukan untuk mengurangi risiko dengan menambahkan filter sinyal, mengoptimalkan stop, dan menghindari pasar berkisar. Dengan optimasi dan pengujian berkelanjutan, strategi ini memiliki potensi untuk kinerja perdagangan yang kuat.
/*backtest start: 2023-10-10 00:00:00 end: 2023-11-09 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy( "EMA Cross Strategy with Custom Buy/Sell Conditions", overlay=true ) // INPUT: // Options to enter fast Exponential Moving Average (EMA) value emaFast = 1 // Options to enter slow EMAs for buy and sell signals slowEMABuy = input(title="Slow EMA for Buy Signals", defval=20, minval=1, maxval=9999) slowEMASell = input(title="Slow EMA for Sell Signals", defval=30, minval=1, maxval=9999) // Option to select trade directions tradeDirection = input(title="Trade Direction", options=["Long", "Short", "Both"], defval="Both") // Options that configure the backtest date range startDate = input(title="Start Date", type=input.time, defval=timestamp("01 Jan 2018 00:00")) endDate = input(title="End Date", type=input.time, defval=timestamp("31 Dec 2025 23:59")) // CALCULATIONS: // Use a fixed fast EMA of 1 and calculate slow EMAs for buy and sell signals fastEMA = ema(close, emaFast) slowEMABuyValue = ema(close, slowEMABuy) slowEMASellValue = ema(close, slowEMASell) // PLOT: // Draw the EMA lines on the chart plot(series=fastEMA, color=color.orange, linewidth=2) plot(series=slowEMABuyValue, color=color.blue, linewidth=2, title="Slow EMA for Buy Signals") plot(series=slowEMASellValue, color=color.red, linewidth=2, title="Slow EMA for Sell Signals") // CONDITIONS: // Check if the close time of the current bar falls inside the date range inDateRange = true // Translate input into trading conditions for buy and sell signals buyCondition = crossunder(slowEMABuyValue, fastEMA) sellCondition = crossover(slowEMASellValue, fastEMA) // Translate input into overall trading conditions longOK = (tradeDirection == "Long") or (tradeDirection == "Both") shortOK = (tradeDirection == "Short") or (tradeDirection == "Both") // ORDERS: // Submit entry (or reverse) orders based on buy and sell conditions if (buyCondition and inDateRange) strategy.entry("Buy", strategy.long) if (sellCondition and inDateRange) strategy.close("Buy") // Submit exit orders based on opposite trade conditions if (strategy.position_size > 0 and sellCondition) strategy.close("Sell") if (strategy.position_size < 0 and buyCondition) strategy.close("Sell")