EMA Crossover Quantitative Trading Strategy Strategi perdagangan kuantitatif

Penulis:ChaoZhang, Tanggal: 2024-01-29
Tag:

img

Gambaran umum

Ini adalah strategi perdagangan kuantitatif silang EMA. Ini menggunakan dua EMA dengan periode yang berbeda sebagai sinyal perdagangan, pergi panjang ketika EMA periode yang lebih pendek melintasi EMA periode yang lebih lama dan pergi pendek ketika EMA periode yang lebih pendek melintasi di bawah EMA periode yang lebih lama. Ini termasuk dalam tren berikut strategi. Strategi ini juga menetapkan stop loss dan mengambil keuntungan untuk mengendalikan risiko.

Logika Strategi

Strategi ini menggunakan salib emas dan salib kematian dari EMA sebagai sinyal perdagangan. Secara khusus, ini menghitung EMA periode yang lebih pendek dan EMA periode yang lebih lama masing-masing. Ketika EMA periode yang lebih pendek melintasi EMA periode yang lebih lama, itu menghasilkan sinyal beli untuk pergi panjang. Ketika EMA periode yang lebih pendek melintasi di bawah EMA periode yang lebih lama, itu menghasilkan sinyal jual untuk pergi pendek. Jadi tren bergerak EMA menentukan arah perdagangan.

Setelah memasuki posisi, strategi juga menetapkan stop loss dan take profit secara bersamaan. Stop loss adalah persentase tertentu dari harga masuk sebagai garis stop loss. Jika harga menyentuh garis stop loss, itu akan keluar dari posisi untuk stop loss. Take profit adalah persentase tertentu dari harga masuk sebagai garis take profit. Jika harga menyentuh garis take profit, itu akan keluar dari posisi untuk take profit.

Strategi ini juga memungkinkan untuk memilih hanya panjang, hanya pendek, intraday trading atau trading posisi.

Analisis Keuntungan

Strategi ini memiliki keuntungan berikut:

  1. Menggunakan indikator EMA untuk menyaring kebisingan dan menangkap tren jangka menengah dan panjang dengan lancar.

  2. Mengadopsi penyeberangan EMA antara periode yang lebih pendek dan lebih lama sebagai sinyal perdagangan untuk menghindari perdagangan yang berlebihan.

  3. Menetapkan stop loss dan mengambil keuntungan untuk mengontrol rasio risiko-manfaat dari setiap perdagangan, yang baik untuk manajemen uang.

  4. Mengizinkan hanya perdagangan panjang, hanya perdagangan pendek, intraday dan posisi sesuai dengan jenis pedagang yang berbeda.

  5. Mendukung beberapa aset perdagangan seperti saham, forex, cryptocurrency dll.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko potensial:

  1. Indikator EMA memiliki efek keterlambatan dan mungkin melewatkan beberapa titik balik tren jangka pendek.

  2. Pilihan yang tidak tepat dari periode EMA yang lebih pendek dan lebih lama dapat menyebabkan sinyal perdagangan yang berantakan.

  3. Memegang posisi terlalu lama dapat mengalami fluktuasi pasar yang lebih besar.

  4. Stop loss dan take profit mekanis dapat keluar posisi terlalu awal atau mengurangi keuntungan terlalu dini.

Pengukuran manajemen risiko yang sesuai:

  1. Mengoptimalkan parameter EMA untuk menemukan kombinasi periode terbaik.

  2. Tambahkan indikator lain sebagai penilaian tambahan.

  3. Dinamis menyesuaikan stop loss dan mengambil keuntungan.

  4. Manual campur tangan kondisi pasar yang tidak biasa.

Arahan Optimasi

Strategi ini dapat dioptimalkan dalam aspek berikut:

  1. Optimalisasi terbaik dari parameter EMA untuk menemukan kombinasi jangka pendek dan jangka panjang yang cocok untuk aset perdagangan yang berbeda.

  2. Tambahkan indikator lain seperti MACD, KD untuk sinergi multi-indikator.

  3. Tambahkan model pembelajaran mesin untuk menghasilkan stop loss dinamis dan mengambil keuntungan.

  4. Hubungkan indikator RISK yang lebih canggih untuk rekayasa fitur.

  5. Tambahkan komponen perdagangan adaptif untuk parameter self-optimization.

Ringkasan

Secara singkat, ini adalah tren yang sangat baik mengikuti template strategi. Kekuatannya utama terletak pada menggunakan indikator EMA untuk menyaring kebisingan dan mencapai keuntungan yang stabil, sambil memiliki manajemen risiko-pahala yang komprehensif. Melalui optimalisasi berkelanjutan, strategi ini dapat menjadi strategi kuantitatif universal di seluruh pasar dan bermanfaat bagi para pedagang untuk belajar dan berlatih.


/*backtest
start: 2023-12-01 00:00:00
end: 2023-12-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("EMA Crossover Strategy by Vikrant Singh", overlay=true)


// Input for EMA Lengths
var bool runningPOS = false
var float stopLossLevel = na
var float targetLevel = na
shortLength = input(11, title="Short EMA Length")
longLength = input(21, title="Long EMA Length")

// Input for Stop-Loss and Target
stopLossPct = input(1, title="Stop-Loss (%)")
targetPct = input(3, title="Target (%)")
longOnly = input(true, title="Long Only")
intraDay = input(true, title="intraday?")


// Calculate EMAs
emaShort = ta.ema(close, shortLength)
emaLong = ta.ema(close, longLength)

// Calculate crossover conditions
crossoverCondition = ta.crossover(emaShort, emaLong)
crossunderCondition = ta.crossunder(emaShort, emaLong)

// Entry condition (long position just before crossover)
if crossoverCondition and not runningPOS and longOnly and (hour <= 15)
    strategy.entry("Long", strategy.long)
    runningPOS := true
    stopLossLevel := close * (1 - stopLossPct / 100)
    targetLevel := close * (1 + targetPct / 100)

//Entry condition (short position just before crossover)
if crossunderCondition and not runningPOS and not longOnly and (hour <= 15)
    strategy.entry("Short", strategy.short)
    runningPOS := true
    stopLossLevel := close * (1 + stopLossPct / 100)
    targetLevel := close * (1 - targetPct / 100)

// Exit conditions (square off on reverse crossover)
//Exit long
if (crossunderCondition or (low < stopLossLevel) or (high > targetLevel) ) and longOnly and runningPOS
    strategy.close("Long",comment = "Exit long")// ("Long", from_entry="Long",stop=stopLossLevel, limit=targetLevel)
    runningPOS := false

//Exit short
if (crossoverCondition or (high > stopLossLevel) or (low < targetLevel) ) and not longOnly and runningPOS
    strategy.close("Short", comment = "Exit Short")
    runningPOS := false

if intraDay and runningPOS
    if (hour >= 15)
        strategy.close_all(comment = "Intraday square off")
        //strategy.close("Long",comment = "intraday square off")
        runningPOS := false


// Plot EMAs
plot(emaShort, color=color.blue, title="Short EMA")
plot(emaLong, color=color.red, title="Long EMA")

Lebih banyak