Strategy Crossover EMA Berganda

Penulis:ChaoZhang, Tarikh: 2023-10-16 16:15:38
Tag:

img

Ringkasan

Ini adalah strategi perdagangan silang EMA berganda berdasarkan penunjuk EMA pantas dan EMA perlahan. Strategi ini menghasilkan isyarat panjang apabila EMA pantas melintasi di atas EMA perlahan, dan menutup kedudukan panjang apabila EMA pantas melintasi di bawah EMA perlahan. Strategi ini mudah dan praktikal untuk perdagangan jangka sederhana.

Logika Strategi

Strategi ini terutamanya dilaksanakan dengan penunjuk EMA berganda. EMA yang cepat mempunyai tempoh yang lebih pendek untuk mencerminkan perubahan harga dengan sensitif, sementara EMA yang perlahan mempunyai tempoh yang lebih lama untuk menunjukkan trend jangka panjang.

Apabila EMA cepat melintasi di atas EMA perlahan, salib emas terbentuk, yang menunjukkan momentum harga menaik dalam jangka pendek untuk pergi lama.

Secara khusus, strategi ini merangkumi:

  1. Parameter input untuk EMA cepat dan perlahan, termasuk tempoh, sumber dan lain-lain

  2. Mengira EMA pantas dan EMA perlahan.

  3. Menentukan golden cross apabila EMA cepat melintasi EMA perlahan.

  4. Menentukan sempadan kematian apabila EMA pantas melintasi di bawah EMA perlahan.

  5. Pergi panjang pada salib emas.

  6. Tutup kedudukan di salib kematian.

  7. Pilihan untuk mengambil pendek dan berhenti kerugian / keuntungan.

  8. Keluaran membeli dan menjual pemberitahuan.

Dengan sistem crossover EMA berganda yang mudah ini, strategi boleh menangkap trend jangka pendek untuk keuntungan.

Analisis Kelebihan

Strategi ini mempunyai kelebihan berikut:

  1. Logikanya mudah dan jelas, mudah difahami.

  2. Hanya menggunakan EMA berganda, mudah dilaksanakan.

  3. Boleh menangkap trend jangka pendek untuk keuntungan swing.

  4. Tempoh EMA yang boleh disesuaikan untuk pasaran yang berbeza.

  5. Pilihan untuk shorting untuk mengawal risiko.

  6. Pilihan untuk menghentikan kerugian/mengambil keuntungan.

  7. Pemberitahuan pembelian/penjualan untuk pemantauan.

  8. Mudah untuk mengoptimumkan parameter EMA untuk keuntungan yang lebih baik.

Analisis Risiko

Terdapat juga beberapa risiko:

  1. EMA berganda boleh menghasilkan isyarat palsu yang menyebabkan kerugian yang tidak perlu.

  2. Tetapan stop loss yang tidak betul boleh meningkatkan kerugian.

  3. Frekuensi perdagangan yang tinggi meningkatkan kos dan risiko tergelincir.

  4. Parameter EMA tetap tidak dapat disesuaikan dengan perubahan pasaran.

  5. Cenderung mengejar momentum, kehilangan penilaian yang tenang.

  6. Tidak dapat mengenal pasti pembalikan trend, mungkin membuka kedudukan terbalik.

Langkah pengurusan risiko yang sepadan:

  1. Mengoptimumkan parameter EMA untuk mengurangkan isyarat palsu.

  2. Tetapkan stop loss yang betul untuk had setiap kerugian perdagangan.

  3. Mengoptimumkan tempoh EMA untuk mengurangkan kekerapan.

  4. Sesuaikan EMA secara dinamik untuk peringkat pasaran yang berbeza.

  5. Tambah penunjuk trend untuk mengelakkan mengejar momentum.

  6. Mengenal pasti arah trend utama dengan alat trend.

Arahan pengoptimuman

Strategi ini boleh dioptimumkan dalam aspek berikut:

  1. Pengoptimuman dinamik parameter EMA untuk pasaran yang berbeza.

  2. Tambah penapis stok untuk meningkatkan ketepatan.

  3. Menggabungkan indeks turun naik untuk mengurangkan kedudukan dalam persekitaran turun naik yang rendah.

  4. Tambah pengesahan bunyi untuk isyarat.

  5. Tetapkan tahap harga, seperti 20SMA sebelum mengambil isyarat.

  6. Meningkatkan strategi stop loss dan mengambil keuntungan.

  7. Tambah analisis trend utama untuk mengelakkan perdagangan terhadap trend.

  8. Terus mengoptimumkan strategi dengan algoritma pembelajaran mesin.

Ringkasan

Ringkasnya, strategi silang EMA berganda mempunyai logik yang mudah dan jelas untuk menangkap trend jangka pendek, tetapi juga mempunyai beberapa risiko keuntungan. Kita boleh menguruskan risiko dengan mengoptimumkan parameter, melaksanakan penghentian kerugian / mengambil keuntungan, menapis stok, menilai trend utama dan lain-lain, untuk terus mendapatkan pulangan yang memuaskan.


/*backtest
start: 2023-09-15 00:00:00
end: 2023-10-15 00:00:00
period: 4h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

strategy("EMA Strategy", shorttitle="EMA Strategy", overlay=true, pyramiding=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100)


// === Inputs ===
// short ma
maFastSource = input(defval=close, title="Fast MA Source")
maFastLength = input(defval=3, title="Fast MA Period", minval=1)

// long ma
maSlowSource = input(defval=close, title="Slow MA Source")
maSlowLength = input(defval=9, title="Slow MA Period", minval=1)

// invert trade direction
shorting = input(defval=false, title="Allow Shorting?")
// risk management
useStop = input(defval=false, title="Use Initial Stop Loss?")
slPoints = input(defval=25, title="Initial Stop Loss Points", minval=1)
useTS = input(defval=false, title="Use Trailing Stop?")
tslPoints = input(defval=120, title="Trail Points", minval=1)
useTSO = input(defval=false, title="Use Offset For Trailing Stop?")
tslOffset = input(defval=20, title="Trail Offset Points", minval=1)

// Messages for buy and sell
message_buy  = input("Buy message", title="Buy Alert Message")
message_sell   = input("Sell message", title="Sell Alert Message")

// Calculate start/end date and time condition
startDate  = input(timestamp("2021-01-01T00:00:00"), type = input.time)
finishDate = input(timestamp("2021-12-31T00:00:00"), type = input.time)
 
time_cond  = true

// === Vars and Series ===
fastMA = ema(maFastSource, maFastLength)
slowMA = ema(maSlowSource, maSlowLength)

plot(fastMA, color=color.blue)
plot(slowMA, color=color.purple)

goLong() =>
    crossover(fastMA, slowMA)
killLong() =>
    crossunder(fastMA, slowMA)
strategy.entry("Buy", strategy.long, when=goLong() and time_cond, alert_message = message_buy)
strategy.close("Buy", when=killLong() and time_cond, alert_message = message_sell)

// Shorting if using
if shorting
    strategy.entry("Sell", strategy.short, when=killLong() and time_cond, alert_message = message_sell)
    strategy.close("Sell", when=goLong() and time_cond, alert_message = message_buy)

if useStop
    strategy.exit("XLS", from_entry="Buy", stop=strategy.position_avg_price / 1.08)
    strategy.exit("XSS", from_entry="Sell", stop=strategy.position_avg_price * 1.08)



Lebih lanjut