Berdasarkan strategi perdagangan crossover rata-rata pergerakan ganda


Tanggal Pembuatan: 2023-11-27 15:32:57 Akhirnya memodifikasi: 2023-11-27 15:32:57
menyalin: 1 Jumlah klik: 394
1
fokus pada
1225
Pengikut

Berdasarkan strategi perdagangan crossover rata-rata pergerakan ganda

Ringkasan

Strategi ini didasarkan pada persilangan dua rata-rata bergerak dengan pengaturan parameter yang berbeda untuk mengirim sinyal beli dan jual. Sinyal beli dikirim ketika rata-rata bergerak dengan periode yang lebih pendek menerobos rata-rata bergerak dengan periode yang lebih lama dari arah bawah; Sinyal jual dikirim ketika rata-rata bergerak dengan periode yang lebih pendek menerobos rata-rata bergerak dengan periode yang lebih lama dari arah atas.

Prinsip Strategi

Strategi ini ditulis menggunakan bahasa skrip pine. Pertama-tama, dengan input didefinisikan jenis, panjang, dan sumber harga dari dua rata-rata bergerak, masing-masing diberi nama p1 dan p2. Di mana p1 mewakili rata-rata periode yang lebih pendek, dan p2 mewakili rata-rata periode yang lebih lama.

Fungsi crossover dan crossunder menentukan persimpangan dua garis rata. Ketika p1 dari arah bawah menembus p2, sinyal beli akan dikirim; Ketika p1 dari arah atas menembus p2, sinyal jual akan dikirim.

Untuk melakukan transaksi, strategi menggunakan fungsi strategy.entry untuk membuat posisi overhead atau kosong saat sinyal dikirim. Jika parameter shortOnly diaktifkan, hanya transaksi yang menjual sinyal.

Analisis Keunggulan

Strategi ini memiliki keuntungan sebagai berikut:

  1. Peraturan yang jelas, mudah dipahami dan diterapkan
  2. Garis tengah adalah sinyal perdagangan klasik dan terkenal.
  3. Jenis, panjang, dan sumber harga rata-rata yang dapat disesuaikan
  4. Hanya dengan menjual sinyal, trading akan berkurang.

Analisis risiko

Strategi ini juga memiliki beberapa risiko:

  1. Dalam situasi yang bergejolak, garis rata-rata dapat menghasilkan beberapa silang yang tidak efektif, yang menyebabkan overtrading.
  2. Parameter yang perlu dioptimalkan untuk varietas dan siklus perdagangan yang berbeda
  3. Tidak bisa menentukan arah tren, mungkin ada posisi terbalik

Anda dapat mengurangi sinyal yang tidak valid dengan menyesuaikan panjang garis rata-rata, memasukkan kondisi penyaringan, dan lain-lain. Anda juga dapat mengkombinasikan indikator tren untuk menentukan pergerakan saham besar.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Memperkenalkan Volume weighted average price atau typical price sebagai sumber harga, meningkatkan reliabilitas sinyal crossover

  2. Peningkatan Validation Period Peningkatan Validation Period untuk menghindari short-term crossover error

  3. Termasuk ATR Stop loss, yang ditetapkan sebagai kerugian maksimum yang dapat ditanggung berdasarkan volatilitas pasar

  4. Menggunakan parameter optimasi pencocokan kurva untuk mencari kombinasi parameter optimal

  5. Pertimbangkan untuk mengirim sinyal perdagangan ketika tren siklus besar konsisten

Meringkaskan

Strategi silang dua garis rata ini mudah dipahami dan diterapkan secara keseluruhan, dengan sinyal perdagangan yang dibentuk oleh silang dua garis rata, dapat disesuaikan secara tinggi. Namun, mungkin juga menghasilkan lebih banyak sinyal yang tidak efektif dalam situasi getaran. Risiko dapat dikurangi dengan pengoptimalan parameter dan pengoptimalan aturan, ruang pengoptimalan yang lebih besar, layak untuk diteliti lebih lanjut.

Kode 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)