EMA Crossover Trend Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2023-12-27 16:31:15
Tag:

img

Gambaran umum

Strategi ini mengadopsi EMA crossover untuk melacak tren harga. Ini pergi panjang ketika EMA cepat melintasi di atas EMA lambat, dan menutup posisi ketika EMA cepat melintasi di bawah EMA lambat. Terutama cocok untuk produk dengan tren yang jelas, secara efektif mengikuti tren dan mendapatkan keuntungan berlebih.

Logika Strategi

Indikator inti dari strategi ini adalah EMA.

EMA (t) = C (t) ×2/ (n+1) + EMA (t-1) × (n-1) / (n+1)

Di mana t adalah tick saat ini, C(t) adalah harga penutupan saat ini, dan n adalah nilai parameter N. EMA adalah teknik rata-rata bergerak dengan faktor tertimbang, memberikan lebih banyak bobot pada harga terbaru, sehingga bereaksi lebih cepat terhadap perubahan harga terbaru.

Strategi ini membangun EMA cepat dan lambat dan mengambil EMA cepat melintasi di atas EMA lambat sebagai sinyal beli, dan EMA cepat melintasi di bawah EMA lambat sebagai sinyal jual.

Analisis Keuntungan

Keuntungan dari strategi ini adalah:

  1. Logika sederhana dan mudah dipahami dan diterapkan;
  2. Menggunakan EMA yang sederhana dan praktis untuk menilai tren harga, menghindari kehilangan tren utama;
  3. Beberapa parameter untuk disesuaikan dan dioptimalkan, terutama bergantung pada EMA cepat dan lambat;
  4. Mampu mengikuti tren naik setelah membeli;
  5. Mampu menghindari penarikan kembali setelah penjualan, mengurangi risiko;
  6. Cukup data backtest dengan keandalan tinggi.

Analisis Risiko

Risiko utama adalah:

  1. Kemungkinan tinggi sinyal palsu dari EMA;
  2. Sinyal sering ketika pasar berkisar sebagai EMA dengan mudah bersilang;
  3. Tidak dapat menghentikan kerugian tepat waktu ketika peristiwa tiba-tiba menyebabkan perubahan arah yang tajam;
  4. Ruang pengoptimalan terbatas yang kinerja sebenarnya mungkin kurang dari hasil backtest.

Untuk mengurangi risiko di atas, langkah-langkah optimalisasi berikut dapat diadopsi:

  1. Menambahkan kondisi filter dengan indikator lain untuk menghindari sinyal palsu;
  2. Pengaturan parameter untuk mengurangi frekuensi sinyal;
  3. Menambahkan strategi stop loss untuk mengendalikan kerugian tunggal;
  4. Mencoba parameter periode waktu yang berbeda untuk menemukan yang optimal.

Arahan Optimasi

Strategi dapat dioptimalkan dari aspek berikut:

  1. Indikator komposit di beberapa kerangka waktu, misalnya menggabungkan tren mingguan atau bulanan;
  2. Menambahkan kondisi filter untuk menghindari kebocoran palsu, misalnya volume, Bollinger Bands dll;
  3. Penyesuaian dinamis parameter sesuai dengan perubahan pasar secara real time;
  4. Menggabungkan indikator lain untuk membangun model, misalnya grid, algoritma regresi.

Ringkasan

Secara singkat, ini adalah strategi tren sederhana dan praktis yang menggunakan EMA untuk menilai tren harga. Logika jelas dan mudah diterapkan. Keuntungannya terletak pada kesederhanaan untuk menyesuaikan parameter dan secara efektif mengikuti tren. Kelemahannya cenderung sinyal palsu dan kinerja aktual mungkin kurang baik dari backtest. Langkah selanjutnya dari optimasi dapat berfokus pada penambahan filter, parameter dinamis, membangun model untuk membuat strategi lebih kuat.


/*backtest
start: 2022-12-20 00:00:00
end: 2023-12-26 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("EMA交叉策略by GPT",
     format = format.inherit,
     overlay = true,
     default_qty_type= strategy.percent_of_equity,
     default_qty_value = 100,
     currency = currency.USD,
     initial_capital = 1000000)


// 定義回測交易開始和結束時間的變數
start_time = input(title="開始時間", type=input.time, defval=timestamp("01 Jan 2020 00:00 +0000"))
end_time = input(title="結束時間", type=input.time, defval=timestamp("31 Dec 2050 23:59 +0000"))


// 判斷是否在回測交易時間範圍內
in_range = true


// Define input variables
fast_length = input(title="Fast EMA Length", type=input.integer, defval=5)
slow_length = input(title="Slow EMA Length", type=input.integer, defval=20)


// Define EMAs
fast_ema = ema(close, fast_length)
slow_ema = ema(close, slow_length)


// Define buy and sell signals
buy_signal = crossover(fast_ema, slow_ema)
sell_signal = crossunder(fast_ema, slow_ema)


// Buy signal
if in_range and buy_signal
    strategy.entry("Buy", strategy.long, when=in_range)
   
// Sell signal
if in_range and sell_signal
    strategy.close("Buy", when=sell_signal)

Lebih banyak