Strategi silang purata bergerak berganda

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

img

Ringkasan

Strategi ini adalah strategi crossover purata bergerak biasa yang menggunakan dua set purata bergerak, satu pantas dan satu perlahan. Apabila purata bergerak pantas melintasi purata bergerak perlahan, isyarat beli dihasilkan. Apabila purata bergerak pantas melintasi di bawah perlahan, isyarat jual dihasilkan. Strategi ini menggunakan kedua-dua EMA dan SMA untuk purata bergerak, dengan EMA sebagai garis cepat dan SMA sebagai garis perlahan. Menggunakan pelbagai purata bergerak dapat membantu menapis isyarat palsu dan meningkatkan kebolehpercayaan.

Logika Strategi

Logik teras bergantung pada persilangan antara garis purata bergerak pantas dan perlahan untuk menentukan entri dan keluar.

Khususnya, dua set purata bergerak pantas dan perlahan dikira:

  • 1st EMA Pantas, panjang 8 hari
  • 2 Fast EMA, panjang 21 hari
  • SMA perlahan pertama, panjang 50 hari
  • SMA perlahan ke-2, panjang 200 hari

Crossover kemudiannya diperiksa antara EMA pantas dan SMA perlahan:

  • Jika EMA 8 hari melintasi SMA 50 hari, isyarat salib emas
  • Jika EMA 8 hari melintasi di bawah SMA 50 hari, isyarat silang kematian

Untuk menapis isyarat palsu, persilangan EMA/SMA kedua diperlukan untuk pengesahan:

  • Hanya apabila EMA 21 hari juga melintasi SMA 50 hari, isyarat dagangan dicetuskan

Dengan memerlukan dua persilangan MA cepat / perlahan, banyak isyarat palsu dapat disaring dan kebolehpercayaan ditingkatkan.

Apabila membeli isyarat pemicu, pergi panjang. Apabila menjual isyarat pemicu, pergi pendek.

Strategi ini juga menetapkan mengambil keuntungan dan menghentikan kerugian berdasarkan peratusan input daripada harga kemasukan sekali dalam kedudukan.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Reka bentuk MA berganda menapis isyarat palsu dan meningkatkan ketepatan
  2. Gabungan EMA dan SMA menggunakan kepekaan EMA dan kelancaran SMA
  3. Mengambil keuntungan dan menghentikan kerugian mengunci keuntungan dan mengawal risiko
  4. Logik yang mudah difahami dan diubahsuai
  5. Parameter yang boleh disesuaikan sesuai dengan persekitaran pasaran yang berbeza

Analisis Risiko

Risiko strategi:

  1. Strata MA cenderung menghasilkan banyak kemenangan / kerugian kecil di pasaran yang bergelombang
  2. Boleh menghadapi kerugian besar di pasaran yang kuat
  3. Penyesuaian parameter yang buruk juga membawa kepada prestasi yang kurang

Untuk mengawal risiko:

  1. Sesuaikan parameter untuk keadaan pasaran yang berbeza
  2. Mengoptimumkan berdasarkan backtests untuk sesuai dengan pasaran sasaran
  3. Gunakan stop loss untuk mengehadkan saiz kerugian

Arahan Penambahbaikan

Strategi ini boleh dioptimumkan lagi dengan:

  1. Uji lebih banyak gabungan MA cepat/lambat untuk mencari yang terbaik
  2. Menggunakan pembelajaran mesin atau algos genetik untuk mengoptimumkan automatik
  3. Menambah penapis trend untuk mengelakkan perdagangan yang bertentangan dengan trend
  4. Menambah Stop Loss untuk mengunci keuntungan
  5. Menggabungkan penapis jumlah atau turun naik untuk mengesahkan isyarat
  6. Menggabungkan dengan strata/produk lain untuk menggunakan korelasi rendah

Kesimpulan

Ringkasnya, strategi silang MA berganda menghasilkan isyarat dengan silang MA cepat / perlahan, set mengambil keuntungan dan menghentikan kerugian untuk mengawal risiko, dan mudah, intuitif dan mudah dilaksanakan. Parameter boleh disesuaikan dan digabungkan dengan penunjuk lain untuk prestasi 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 lanjut