EMA Crossover Trend Mengikut Strategi

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

img

Ringkasan

Strategi ini menggunakan persilangan EMA untuk mengesan trend harga. Ia pergi lama apabila EMA cepat melintasi di atas EMA perlahan, dan menutup kedudukan apabila EMA cepat melintasi di bawah EMA perlahan. Terutamanya sesuai untuk produk dengan trend yang jelas, dengan berkesan mengikuti trend dan memperoleh pulangan yang berlebihan.

Logika Strategi

Penunjuk teras strategi ini ialah EMA. Rumus EMA adalah:

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

Di mana t adalah tik semasa, C ((t) adalah harga penutupan semasa, dan n adalah nilai parameter N. EMA adalah teknik purata bergerak dengan faktor tertimbang, memberikan lebih banyak berat kepada harga baru-baru ini, sehingga bertindak balas lebih cepat terhadap perubahan harga terkini.

Strategi ini membina EMA pantas dan perlahan dan mengambil EMA cepat melintasi di atas EMA perlahan sebagai isyarat beli, dan EMA pantas melintasi di bawah EMA perlahan sebagai isyarat jual.

Analisis Kelebihan

Kelebihan strategi ini ialah:

  1. Logiknya mudah dan mudah difahami dan dilaksanakan;
  2. Menggunakan EMA yang mudah dan praktikal untuk menilai trend harga, mengelakkan kehilangan trend utama;
  3. Beberapa parameter untuk menyesuaikan dan mengoptimumkan, terutamanya bergantung kepada EMA cepat dan perlahan;
  4. Mampu mengikuti trend menaik selepas membeli;
  5. Mampu mengelakkan penarikan balik selepas penjualan, mengurangkan risiko;
  6. Data backtest yang mencukupi dengan kebolehpercayaan yang tinggi.

Analisis Risiko

Risiko utama ialah:

  1. Kemungkinan tinggi isyarat palsu dari EMA;
  2. Isyarat kerap apabila pasaran adalah pelbagai sebagai EMAs crossover mudah;
  3. Tidak dapat menghentikan kerugian tepat pada masanya apabila peristiwa tiba-tiba menyebabkan perubahan arah yang mendadak;
  4. Ruang pengoptimuman terhad bahawa prestasi sebenar mungkin kurang daripada hasil backtest.

Untuk mengurangkan risiko di atas, langkah-langkah pengoptimuman berikut boleh diambil:

  1. Menambah keadaan penapis dengan penunjuk lain untuk mengelakkan isyarat palsu;
  2. Penyesuaian parameter untuk mengurangkan frekuensi isyarat;
  3. Menambah strategi stop loss untuk mengawal kerugian tunggal;
  4. Uji parameter tempoh masa yang berbeza untuk mencari yang optimum.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dari aspek berikut:

  1. Penunjuk komposit di pelbagai jangka masa, contohnya menggabungkan trend mingguan atau bulanan;
  2. Menambah keadaan penapis untuk mengelakkan pecah palsu, contohnya jumlah, Bollinger Bands dan lain-lain;
  3. Penyesuaian dinamik parameter mengikut perubahan pasaran masa nyata;
  4. Menggabungkan penunjuk lain untuk membina model, contohnya grid, algoritma regresi.

Ringkasan

Kesimpulannya, ini adalah strategi trend berikut yang mudah dan praktikal menggunakan EMA untuk menilai trend harga. Logiknya jelas dan mudah dilaksanakan. Kelebihannya terletak pada kesederhanaan untuk menyesuaikan parameter dan mengikuti trend dengan berkesan. Kelemahannya terdedah kepada isyarat palsu dan prestasi sebenar mungkin kurang baik daripada backtest. Langkah seterusnya pengoptimuman boleh memberi tumpuan kepada penambahan penapis, parameter dinamik, pembinaan model untuk menjadikan strategi lebih mantap.


/*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 lanjut