Strategi Crossover Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2024-02-27 16:21:02
Tag:

img

Gambaran umum

Strategi ini adalah strategi crossover rata-rata bergerak yang menggunakan dua set rata-rata bergerak, satu cepat dan satu lambat. Ketika rata-rata bergerak cepat melintasi rata-rata bergerak lambat, sinyal beli dihasilkan. Ketika rata-rata bergerak cepat melintasi di bawah rata-rata bergerak lambat, sinyal jual dihasilkan. Strategi ini menggunakan EMA dan SMA untuk rata-rata bergerak, dengan EMA sebagai garis cepat dan SMA sebagai garis lambat. Menggunakan beberapa rata-rata bergerak dapat membantu menyaring sinyal palsu dan meningkatkan keandalan.

Logika Strategi

Logika inti bergantung pada persilangan antara garis rata-rata bergerak cepat dan lambat untuk menentukan entri dan keluar.

Secara khusus, dua set rata-rata bergerak cepat dan lambat dihitung:

  • EMA cepat pertama, panjang 8 hari
  • 2 Fast EMA, panjang 21 hari
  • SMA lambat pertama, panjang 50 hari
  • SMA lambat ke-2, panjang 200 hari

Crossover kemudian diperiksa antara EMA cepat dan SMA lambat:

  • Jika EMA 8 hari melintasi SMA 50 hari, sinyal golden cross
  • Jika EMA 8 hari melintasi di bawah SMA 50 hari, sinyal silang mati

Untuk menyaring sinyal palsu, crossover EMA/SMA kedua diperlukan untuk konfirmasi:

  • Hanya ketika EMA 21 hari juga melintasi SMA 50 hari, sinyal perdagangan dipicu

Dengan membutuhkan dua penyeberangan MA cepat/lambat, banyak sinyal palsu dapat disaring dan keandalan ditingkatkan.

Ketika membeli sinyal pemicu, pergi panjang. Ketika menjual sinyal pemicu, pergi pendek.

Strategi ini juga menetapkan profit taking dan stop loss berdasarkan persentase input dari harga masuk sekali dalam posisi.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Desain MA ganda menyaring sinyal palsu dan meningkatkan akurasi
  2. Kombinasi EMA dan SMA memanfaatkan sensitivitas EMA dan kelancaran SMA
  3. Mengambil keuntungan dan stop loss mengunci keuntungan dan mengendalikan risiko
  4. Logika sederhana mudah dipahami dan dimodifikasi
  5. Parameter yang dapat disesuaikan sesuai dengan lingkungan pasar yang berbeda

Analisis Risiko

Risiko dari strategi:

  1. Strata MA cenderung menghasilkan banyak kemenangan/kerugian kecil di pasar yang bergolak
  2. Dapat menghadapi kerugian besar di pasar tren yang kuat
  3. Penyesuaian parameter yang buruk juga menyebabkan kinerja yang buruk

Untuk mengendalikan risiko:

  1. Sesuaikan parameter untuk kondisi pasar yang berbeda
  2. Mengoptimalkan berdasarkan backtest untuk memenuhi target pasar
  3. Gunakan stop loss untuk membatasi ukuran kerugian

Arah Peningkatan

Strategi dapat dioptimalkan lebih lanjut dengan:

  1. Mencoba lebih banyak kombinasi MA cepat/lambat untuk menemukan yang terbaik
  2. Menggunakan pembelajaran mesin atau algos genetik untuk mengoptimalkan otomatis
  3. Menambahkan filter tren untuk menghindari perdagangan yang bertentangan dengan tren
  4. Menambahkan stop loss trailing untuk mengunci keuntungan
  5. Mengintegrasikan filter volume atau volatilitas untuk mengkonfirmasi sinyal
  6. Menggabungkan dengan strata/produk lain untuk memanfaatkan korelasi rendah

Kesimpulan

Singkatnya, strategi crossover MA ganda menghasilkan sinyal dengan penyeberangan MA cepat / lambat, set mengambil keuntungan dan stop loss untuk mengendalikan risiko, dan sederhana, intuitif dan mudah diterapkan. Parameter dapat disetel dan dikombinasikan dengan indikator lain untuk kinerja yang lebih baik.


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

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © JMLSlop

//@version=4

src = close
strategy("Crossover moving averages", shorttitle="Cross MA-EMA", overlay=true, calc_on_order_fills=false)

// first fast EMA
len = input(8, "Length", type=input.integer, minval=1)
doma1 = input(true, title="EMA")
out1 = ema(src, len) 

//Second fast EMA
len2 = input(21, minval=1, title="Length")
doma2 = input(true, title="EMA")
out2 = ema(src, len2)

//First slow MA
len3 = input(50, minval=1, title="Length")
doma3 = input(true, title="SMA")
out3 = sma(src, len3)

//Second slow MA
len4 = input(200, minval=1, title="Length")
doma4 = input(true, title="SMA")
out4 = sma(src, len4)

// Profit
profit = input(8, "Profit/lost %", type=input.float, minval=1) * 0.01


plot(doma1 and out1 ? out1: na, color=color.blue, linewidth=1, title="1st EMA")
plot(doma2 and out2 ? out2: na, color=color.red, linewidth=1, title="2nd EMA")
plot(doma3 and out3 ? out3: na, color=color.green, linewidth=2, title="1st MA")
plot(doma4 and out4 ? out4: na, color=color.orange, linewidth=3, title="2nd MA")

// Orders config
takeProfitPrice =
     (strategy.position_size > 0) ? strategy.position_avg_price + open*profit : (strategy.position_size < 0) ? strategy.position_avg_price - (open*profit) : na

longStopPrice  = strategy.position_avg_price * (1 - profit)
shortStopPrice = strategy.position_avg_price * (1 + profit)

longCondition2 = (out2>out3 and (crossover(out1, out4) or crossover(out1[1], out4[1]) or crossover(out1[2], out4[2]) or (crossover(out1[3], out4[3]))) or (out2>out3 and (crossover(out1, out3) or crossover(out1[1], out3[1]) or crossover(out1[2], out3[2]) or crossover(out1[3], out3[3]))))
if (longCondition2)
    strategy.entry("Enter L", strategy.long)

shortCondition2 = (out2<out3 and (crossunder(out1, out4) or crossunder(out1[1], out4[1]) or crossunder(out1[2], out4[2]) or crossunder(out1[3], out4[3]))) or (out2<out3 and (crossunder(out1, out3) or crossunder(out1[1], out3[1]) or crossunder(out1[2], out3[2]) or crossunder(out1[3], out3[3])))
if (shortCondition2)
    strategy.entry("Enter S", strategy.short)


if (strategy.position_size > 0)
    strategy.exit("Exit L", limit=takeProfitPrice, stop=longStopPrice)

if (strategy.position_size < 0)
    strategy.exit("Exit S", limit=takeProfitPrice, stop=shortStopPrice)


Lebih banyak