Strategi perdagangan lintas rata-rata bergerak

Penulis:ChaoZhang, Tanggal: 2024-01-24 14:59:44
Tag:

img

Gambaran umum

Strategi perdagangan crossover rata-rata bergerak adalah strategi perdagangan kuantitatif yang relatif umum. Strategi ini menghasilkan sinyal perdagangan dengan menghitung rata-rata bergerak dari periode yang berbeda dan sesuai dengan situasi crossover mereka. Secara khusus, strategi ini menghitung rata-rata bergerak eksponensial (EMA) dari 4 periode, 8 periode dan 20 periode. Ketika EMA jangka pendek melintasi di atas EMA jangka panjang, pergi panjang; ketika EMA jangka pendek melintasi di bawah EMA jangka panjang, pergi pendek.

Logika Strategi

Logika inti dari strategi ini adalah:

  1. Menghitung garis EMA dari 4 periode, 8 periode dan 20 periode.
  2. Pertimbangkan hubungan antara garis EMA 4 periode dan garis EMA 8 periode:
    1. Ketika garis EMA 4 periode melintasi di atas garis EMA 8 periode, itu berarti tren harga menguat, yang merupakan sinyal bullish.
    2. Ketika EMA 4 periode melintasi di bawah EMA 8 periode, itu berarti tren harga melemah, yang merupakan sinyal penurunan.
  3. Pada saat yang sama, menilai arah garis EMA 20 periode:
    1. Jika garis EMA 20 periode naik, maka masukkan panjang.
    2. Jika garis EMA 20 periode turun, maka masukkan Short.
  4. Ketika hubungan antara garis EMA 4 periode dan garis EMA 8 periode berbalik, Siapkan Exit.
  5. Ketika arah garis EMA 20 periode berbalik, keluar sekarang.

Melalui metode ini, kita memanfaatkan persilangan antara rata-rata bergerak periode yang berbeda untuk menilai sinyal pasar, dan menggunakan arah rata-rata bergerak periode terpanjang untuk menyaring sinyal palsu, membangun strategi perdagangan yang stabil.

Keuntungan dari Strategi

Keuntungan utama dari strategi ini adalah:

  1. Logika strategi sederhana dan jelas, mudah dimengerti dan diterapkan.
  2. Filter kondisi ganda dapat mengurangi sinyal palsu.
  3. Peningkatan dari EMA 20 periode dapat mengidentifikasi tren utama dan meningkatkan stabilitas.
  4. Parameter yang dapat disesuaikan untuk menyesuaikan frekuensi perdagangan.
  5. Mudah dikombinasikan dengan indikator atau model lain untuk membangun strategi yang kompleks.

Risiko dari Strategi

Ada juga beberapa risiko dengan strategi ini:

  1. Strategi rata-rata bergerak ganda cenderung menghasilkan sinyal palsu.
  2. Periode tetap tidak dapat beradaptasi dengan perubahan pasar.
  3. Sangat mudah untuk menyebabkan kerugian selama fluktuasi pasar.

Solusi utama adalah:

  1. Singkatkan periode penahanan dengan tepat dan hentikan kerugian tepat waktu.
  2. Dinamis mengoptimalkan parameter dan menyesuaikan periode rata-rata bergerak.
  3. Gabungkan dengan indikator atau model lain untuk menciptakan strategi yang kompleks.

Arahan Optimasi

Strategi dapat dioptimalkan dalam aspek berikut:

  1. Optimalisasi periode: Tentukan kombinasi periode MA yang optimal sesuai dengan varietas yang berbeda.

  2. Optimasi stop loss: Tentukan titik stop loss yang wajar untuk mengendalikan satu kerugian.

  3. Optimasi parameter: Optimasi parameter secara dinamis menggunakan algoritma genetik, rantai Markov, dll.

  4. Fusi model: Integrasi dengan LSTM, RNN dan model pembelajaran mendalam lainnya untuk mengekstrak lebih banyak Alpha.

  5. Optimalisasi portofolio: Dikombinasikan dengan strategi indikator teknis lainnya untuk membangun portofolio strategi.

Ringkasan

Secara umum, strategi crossover rata-rata bergerak adalah strategi perdagangan kuantitatif yang relatif klasik dan umum digunakan. Strategi ini memiliki logika sederhana dan mudah dipahami dan diimplementasikan, dengan stabilitas tertentu. Tetapi ada juga beberapa masalah, seperti menghasilkan sinyal palsu, ketidakmampuan untuk beradaptasi dengan perubahan pasar, dll. Masalah ini dapat ditingkatkan melalui optimasi parameter, optimasi stop loss, fusi model, dan metode lainnya. Secara keseluruhan, strategi rata-rata bergerak dapat digunakan sebagai modul dasar dalam kotak alat strategi, dikombinasikan dengan strategi yang lebih kompleks untuk membangun strategi kompleks yang kuat.


/*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=3
//future strategy
//strategy(title = "stub", default_qty_type = strategy.fixed, default_qty_value = 1,  overlay = true, commission_type=strategy.commission.cash_per_contract,commission_value=2.05)
//stock strategy
strategy(title = "stub",   overlay = true)
//forex strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true)
//crypto strategy
//strategy(title = "stub", default_qty_type = strategy.percent_of_equity, default_qty_value = 100,  overlay = true, commission_type=strategy.commission.percent,commission_value=.0,default_qty_value=10000)


testStartYear = input(1900, "Backtest Start Year")
testStartMonth = input(1, "Backtest Start Month")
testStartDay = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)

testEndYear = input(2018, "Backtest Start Year")
testEndMonth = input(12, "Backtest Start Month")
testEndDay = input(1, "Backtest Start Day")
testPeriodEnd = timestamp(testStartYear,testStartMonth,testStartDay,0,0)


testPeriod() => true

ema1 = ema(close,4)
ema2 = ema(close,8)
ema3 = ema(close,20)

go_long = ema1[0] > ema2[0] and ema3[0] > ema3[1]
exit_long = ema1[0] < ema2[0] or ema3[0] < ema3[1]

go_short = ema1[0] < ema2[0] and ema3[0] < ema3[1]
exit_short = ema1[0] > ema2[0] or ema3[0] > ema3[1]

 
if testPeriod()
    strategy.entry("simpleBuy", strategy.long, when=go_long)
    strategy.exit("simpleBuy", "simpleSell",when=exit_long)
    
    strategy.entry("simpleSell", strategy.short,when=go_short)
    strategy.exit("simpleSell", "simpleSell",when=exit_short)
        
    


Lebih banyak