Strategi Perdagangan Crossover Rata-rata Bergerak Ganda

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

img

Gambaran umum

Strategi ini menghasilkan sinyal beli dan jual berdasarkan persilangan dua moving average dengan pengaturan parameter yang berbeda. Ketika moving average periode yang lebih pendek melintasi di atas moving average periode yang lebih lama dari bawah, sinyal beli dihasilkan. Ketika moving average periode yang lebih pendek melintasi di bawah moving average periode yang lebih lama dari atas, sinyal jual dihasilkan.

Logika Strategi

Strategi ini ditulis dalam skrip Pine. Pertama-tama mendefinisikan dua moving average, bernama p1 dan p2, dengan jenis, panjang dan sumber harga yang dapat disesuaikan melalui input. Di sini p1 mewakili MA periode yang lebih pendek dan p2 mewakili MA periode yang lebih lama.

Fungsi crossover dan crossunder digunakan untuk mendeteksi crossover antara dua MA. Ketika p1 melintasi p2 dari bawah, sinyal beli dihasilkan. Ketika p1 melintasi di bawah p2 dari atas, sinyal jual dihasilkan.

Untuk mengeksekusi perdagangan, strategi memasuki posisi panjang atau pendek menggunakan strategi.entry ketika sinyal dipicu. Jika input shortOnly diaktifkan, hanya sinyal jual yang akan diperdagangkan.

Analisis Keuntungan

Keuntungan dari strategi ini meliputi:

  1. Aturan yang jelas, mudah dimengerti dan diterapkan
  2. MA crossover adalah sinyal perdagangan klasik dan dikenal luas
  3. Jenis MA, panjang dan sumber harga yang sangat dapat disesuaikan
  4. Dapat perdagangan hanya menjual sinyal untuk frekuensi perdagangan yang lebih rendah

Analisis Risiko

Ada juga beberapa risiko dengan strategi ini:

  1. Beberapa persilangan tidak valid dapat terjadi selama pasar bergolak, yang mengarah pada perdagangan yang berlebihan.
  2. Parameter perlu dioptimalkan untuk produk dan kerangka waktu yang berbeda.
  3. Tidak dapat menentukan arah tren, mungkin berdagang melawan tren.

Risiko dapat dikurangi dengan menyesuaikan panjang MA, menambahkan kondisi filter dll. Indikator tren juga dapat ditambahkan untuk menentukan bias pasar.

Peluang Peningkatan

Strategi dapat ditingkatkan dari aspek berikut:

  1. Gunakan VWAP atau harga khas sebagai sumber harga untuk membuat sinyal crossover lebih dapat diandalkan.

  2. Tambahkan Periode Validasi untuk menghindari persilangan yang salah jangka pendek.

  3. Menggabungkan pemberhentian ATR berdasarkan kerugian maksimum yang dapat diterima sesuai dengan volatilitas pasar.

  4. Optimasi parameter melalui penyesuaian kurva untuk menemukan kombinasi yang optimal.

  5. Pertimbangkan hanya sinyal di sepanjang arah tren jangka waktu yang lebih tinggi.

Ringkasan

Strategi crossover MA ganda mudah dipahami dan diimplementasikan, menghasilkan sinyal perdagangan dari dua crossover MA dengan kustomisasi tinggi. tetapi juga dapat menghasilkan sinyal yang tidak valid yang berlebihan selama pasar bergolak. risiko dapat dikurangi melalui parameter dan optimasi logika dengan banyak peluang peningkatan, layak penelitian lebih 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 banyak