Strategi Dagangan Crossover Purata Bergerak Berganda

Penulis:ChaoZhang, Tarikh: 2023-11-27 15:32:57
Tag:

img

Ringkasan

Strategi ini menghasilkan isyarat beli dan jual berdasarkan persilangan dua purata bergerak dengan tetapan parameter yang berbeza. Apabila purata bergerak tempoh yang lebih pendek melintasi di atas purata bergerak tempoh yang lebih lama dari bawah, isyarat beli dihasilkan. Apabila purata bergerak tempoh yang lebih pendek melintasi di bawah purata bergerak tempoh yang lebih lama dari atas, isyarat jual dihasilkan.

Logika Strategi

Strategi ini ditulis dalam skrip Pine. Ia pertama menentukan dua purata bergerak, yang dinamakan p1 dan p2, dengan jenis, panjang dan sumber harga yang boleh disesuaikan melalui input. Di sini p1 mewakili MA tempoh yang lebih pendek dan p2 mewakili MA tempoh yang lebih lama.

Fungsi crossover dan crossunder digunakan untuk mengesan crossover antara dua MA. Apabila p1 melintasi p2 dari bawah, isyarat beli dihasilkan. Apabila p1 melintasi di bawah p2 dari atas, isyarat jual dihasilkan.

Untuk melaksanakan perdagangan, strategi memasuki kedudukan panjang atau pendek menggunakan strategi.entry apabila isyarat dicetuskan. Jika input ShortOnly diaktifkan, hanya isyarat jual yang akan didagangkan.

Analisis Kelebihan

Kelebihan strategi ini termasuk:

  1. Peraturan yang jelas, mudah difahami dan dilaksanakan
  2. MA crossover adalah isyarat perdagangan klasik dan terkenal
  3. Jenis, panjang dan sumber harga MA yang sangat disesuaikan
  4. Boleh berdagang hanya menjual isyarat untuk kekerapan perdagangan yang lebih rendah

Analisis Risiko

Terdapat juga beberapa risiko dengan strategi ini:

  1. Pelbagai persilangan yang tidak sah boleh berlaku semasa pasaran yang bergolak, yang membawa kepada perdagangan berlebihan.
  2. Parameter memerlukan pengoptimuman untuk produk dan jangka masa yang berbeza.
  3. Tidak dapat menentukan arah trend, mungkin berdagang menentang trend.

Risiko boleh dikurangkan dengan menyesuaikan panjang MA, menambah keadaan penapis dan lain-lain. Penunjuk trend juga boleh ditambahkan untuk menentukan bias pasaran.

Peluang Peningkatan

Strategi ini boleh ditingkatkan dari aspek berikut:

  1. Gunakan VWAP atau harga biasa sebagai sumber harga untuk menjadikan isyarat silang lebih boleh dipercayai.

  2. Tambah tempoh pengesahan untuk mengelakkan persilangan yang salah jangka pendek.

  3. Menggabungkan hentian ATR berdasarkan kerugian maksimum yang boleh diterima mengikut turun naik pasaran.

  4. Pengoptimuman parameter melalui pemasangan lengkung untuk mencari kombinasi yang optimum.

  5. Pertimbangkan hanya isyarat di sepanjang arah trend jangka masa yang lebih tinggi.

Ringkasan

Strategi crossover MA berganda mudah difahami dan dilaksanakan, menghasilkan isyarat perdagangan dari dua crossover MA dengan penyesuaian yang tinggi. tetapi ia juga boleh menghasilkan isyarat yang tidak sah yang berlebihan semasa pasaran yang bergolak. risiko dapat dikurangkan melalui parameter dan pengoptimuman logik dengan banyak peluang peningkatan, bernilai penyelidikan lanjut.


/*backtest
start: 2022-11-20 00:00:00
end: 2023-11-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/
// © RafaelPiccolo

//@version=4
strategy("Double MA Cross", overlay=true)

type1 = input("SMA", "MA Type 1", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len1 = input(10, minval=1, title="Length 1")
src1 = input(close, "Source 1", type=input.source)

type2 = input("SMA", "MA Type 2", options=["SMA", "EMA", "WMA", "HMA", "VWMA", "RMA", "TEMA"])
len2 = input(50, minval=2, title="Length 2")
src2 = input(close, "Source 2", type=input.source)

shortOnly = input(false, "Short only")

tema(src, len)=>
    ema1 = ema(src, len)
    ema2 = ema(ema1, len)
    ema3 = ema(ema2, len)
    return = 3 * (ema1 - ema2) + ema3

getPoint(type, len, src)=>
    return = type == "SMA" ? sma(src, len) : type == "EMA" ? ema(src, len) : type == "WMA" ? wma(src, len) : type == "HMA" ? hma(src, len) : type == "VWMA" ? vwma(src, len) : type == "RMA" ? rma(src, len) : tema(src, len)

p1 = getPoint(type1, len1, src1)
p2 = getPoint(type2, len2, src2)

shortCondition = crossunder(p1, p2)
longCondition = crossover(p1, p2)

if (shortCondition)
    strategy.entry("Short", strategy.short)

if (longCondition)
    if (shortOnly)
        strategy.close("Short")
    else
        strategy.entry("Long", strategy.long)

plot(p1, "MA 1", p1 < p2 ? color.red : color.green)
plot(p2, "MA 2", color.blue)


Lebih lanjut