Strategi Kuantitatif Penjejakan Momentum Momentum Purata Pergerakan Berganda

MA SMA EMA SMMA RMA WMA VWMA
Tarikh penciptaan: 2024-11-27 15:06:57 Akhirnya diubah suai: 2024-11-27 15:06:57
Salin: 1 Bilangan klik: 478
1
fokus pada
1617
Pengikut

Strategi Kuantitatif Penjejakan Momentum Momentum Purata Pergerakan Berganda

Gambaran keseluruhan

Ini adalah strategi perdagangan kuantitatif berdasarkan isyarat silang dua garis rata. Strategi ini menggunakan dua rata-rata bergerak, satu sebagai isyarat utama dan yang lain sebagai isyarat licin. Strategi ini menghasilkan isyarat perdagangan dengan memantau persilangan harga dan isyarat licin.

Prinsip Strategi

Strategi menggunakan dua tahap pengiraan rata-rata bergerak. Pertama, satu rata-rata bergerak asas dikira ((kelayakan lalai adalah 9) dan kemudian dua kali perlakuan rata-rata di atas rata-rata ini ((kelayakan lalai adalah 5). Strategi menyediakan pilihan pelbagai kaedah pengiraan rata-rata, termasuk purata bergerak sederhana (SMA), purata bergerak indeks (EMA), purata bergerak rata-rata (SMMA), purata bergerak berat (WMA) dan purata bergerak berat (VWMA).

Kelebihan Strategik

  1. Mekanisme penjanaan isyarat jelas dan mudah difahami dan dilaksanakan
  2. Pengolahan halus kedua, berkesan mengurangkan penjanaan isyarat palsu
  3. Pelbagai kaedah pengiraan rata-rata yang boleh dipilih secara fleksibel mengikut ciri-ciri pasaran yang berbeza
  4. Konfigurasi parameter yang fleksibel, boleh dioptimumkan mengikut kitaran pasaran yang berbeza
  5. Struktur kod jelas, mudah dijaga dan diperluaskan
  6. Pemantauan trend yang baik

Risiko Strategik

  1. Isyarat dagangan yang kerap mungkin dijana dalam pasaran yang tidak menentu, meningkatkan kos transaksi
  2. Terdapat ketinggalan, mungkin terlepas titik permulaan
  3. Kemunduran yang lebih besar mungkin berlaku dalam keadaan perubahan pesat.
  4. Strategi penunjuk teknikal tunggal, kekurangan penilaian keadaan pasaran
  5. Parameter yang terlalu optimum boleh menyebabkan risiko overfit

Arah pengoptimuman strategi

  1. Memperkenalkan mekanisme penilaian keadaan pasaran, menggunakan konfigurasi parameter yang berbeza dalam keadaan pasaran yang berbeza
  2. Menambah mekanisme penangguhan kerugian untuk mengawal risiko
  3. Menambah penapis jumlah transaksi untuk mengelakkan perdagangan dalam keadaan likuiditi rendah
  4. Pengenalan penunjuk teknikal lain sebagai isyarat pengesahan tambahan
  5. Membangunkan mekanisme parameter yang sesuai untuk menyesuaikan parameter mengikut perubahan dinamik pasaran
  6. Tambah modul pengurusan kedudukan untuk kawalan kedudukan yang lebih fleksibel

ringkaskan

Ini adalah versi yang lebih baik dari strategi trend-tracking klasik, dengan reka bentuk rata-rata bergerak dua lapis, meningkatkan kestabilan sambil mengekalkan kesederhanaan strategi. Strategi ini mempunyai skalabiliti dan fleksibiliti yang baik, dapat menyesuaikan diri dengan keadaan pasaran yang berbeza melalui pengoptimuman parameter dan pengembangan fungsi.

Kod sumber strategi
/*backtest
start: 2019-12-23 08:00:00
end: 2024-11-25 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Moving Average 1.0 Strategy", overlay=true)

// Input for Moving Average Length
len = input.int(9, minval=1, title="Length")
src = input(close, title="Source")
offset = input.int(title="Offset", defval=0, minval=-500, maxval=500)

// Calculate the Moving Average
out = ta.sma(src, len)

// Plot the Moving Average
plot(out, color=color.blue, title="MA", offset=offset)

// Function to choose the type of moving average
ma(source, length, type) =>
    switch type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Input for Smoothing Method and Length
typeMA = input.string(title="Method", defval="SMA", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="Smoothing")
smoothingLength = input.int(title="Smoothing Length", defval=5, minval=1, maxval=100, group="Smoothing")

// Calculate the Smoothing Line
smoothingLine = ma(out, smoothingLength, typeMA)

// Plot the Smoothing Line
plot(smoothingLine, title="Smoothing Line", color=color.rgb(120, 66, 134, 35), offset=offset)

// Strategy Logic
if (ta.crossover(close, smoothingLine))
    strategy.entry("Buy", strategy.long)

if (ta.crossunder(close, smoothingLine))
    strategy.entry("Sell", strategy.short)