Berdasarkan strategi dagangan crossover purata bergerak berganda


Tarikh penciptaan: 2023-11-27 15:32:57 Akhirnya diubah suai: 2023-11-27 15:32:57
Salin: 1 Bilangan klik: 613
1
fokus pada
1617
Pengikut

Berdasarkan strategi dagangan crossover purata bergerak berganda

Gambaran keseluruhan

Strategi ini berdasarkan pada persilangan dua purata bergerak dengan parameter yang berbeza untuk menghantar isyarat beli dan jual. Isyarat beli dikeluarkan apabila purata bergerak dengan tempoh yang lebih pendek menembusi purata bergerak dengan tempoh yang lebih lama dari arah bawah; isyarat jual dikeluarkan apabila purata bergerak dengan tempoh yang lebih pendek menembusi purata bergerak dengan tempoh yang lebih lama dari arah atas.

Prinsip Strategi

Strategi ini ditulis menggunakan bahasa skrip pine. Pertama, dengan input, jenis, panjang dan sumber harga dua purata bergerak ditakrifkan, masing-masing dinamakan p1 dan p2. Di mana p1 mewakili purata tempoh yang lebih pendek, dan p2 mewakili purata tempoh yang lebih lama.

Fungsi crossover dan crossunder menentukan persimpangan dua garis rata. Apabila p1 menembusi p2 dari arah bawah, ia memberi isyarat beli; apabila p1 menembusi p2 dari arah atas, ia memberi isyarat jual.

Untuk melaksanakan perdagangan, strategi menggunakan fungsi strategy.entry untuk mewujudkan kedudukan overhead atau kosong ketika isyarat dikeluarkan. Jika parameter shortOnly diaktifkan, hanya perdagangan yang menjual isyarat.

Analisis kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Peraturan yang jelas, mudah difahami dan dilaksanakan
  2. Garis rata adalah isyarat dagangan klasik dan terkenal.
  3. Jenis, panjang, dan sumber harga garis rata yang sangat disesuaikan
  4. Hanya perdagangan yang menjual isyarat, mengurangkan frekuensi perdagangan

Analisis risiko

Strategi ini mempunyai beberapa risiko:

  1. Dalam keadaan yang bergolak, garis rata mungkin menghasilkan beberapa persilangan yang tidak berkesan, yang menyebabkan perdagangan berlebihan
  2. Parameter yang perlu dioptimumkan untuk menyesuaikan diri dengan pelbagai jenis dan kitaran perdagangan
  3. Tidak dapat menentukan arah trend, mungkin berbalik

Anda boleh mengurangkan isyarat tidak sah dengan menyesuaikan panjang garis rata-rata, memperkenalkan syarat penapis dan sebagainya. Anda juga boleh menggabungkan indikator trend untuk menentukan pergerakan saham besar.

Arah pengoptimuman

Strategi ini boleh dioptimumkan dalam beberapa aspek:

  1. Memperkenalkan harga purata bertimbangan volum atau harga tipikal sebagai sumber harga untuk meningkatkan kebolehpercayaan isyarat silang

  2. Meningkatkan tempoh pengesahan untuk mengelakkan kesalahan yang bercampur-campur

  3. Dengan ATR Stop loss, set kerugian maksimum yang boleh diterima berdasarkan turun naik pasaran

  4. Menggunakan parameter pengoptimuman penyesuaian kurva untuk mencari kombinasi parameter yang optimum

  5. Pertimbangkan untuk menghantar isyarat perdagangan apabila trend kitaran besar adalah selaras

ringkaskan

Strategi silang dua garis sejajar ini mudah difahami dan dilaksanakan secara keseluruhan, dengan membentuk isyarat perdagangan melalui silang dua garis sejajar, sangat disesuaikan. Tetapi juga mungkin menghasilkan lebih banyak isyarat yang tidak berkesan dalam keadaan gegaran. Risiko dapat dikurangkan dengan pengoptimuman parameter dan pengoptimuman peraturan, ruang pengoptimuman yang lebih besar, yang patut diteliti lebih lanjut.

Kod sumber strategi
/*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)