Tren Rata-rata Bergerak Ganda Mengikuti Strategi

Penulis:ChaoZhang, Tanggal: 2024-03-22 13:56:44
Tag:

img

Gambaran umum

Strategi ini menggunakan persilangan dua rata-rata bergerak untuk menentukan perubahan tren pasar dan membuat keputusan beli / jual berdasarkan arah tren.

Prinsip Strategi

Inti dari strategi ini adalah dua rata-rata bergerak: MA cepat (periode default 32) dan MA lambat (juga periode default 32, disesuaikan melalui parameter).

  • Ketika MA cepat melintasi di atas MA lambat, pergi panjang
  • Ketika MA cepat melintasi di bawah MA lambat, pergi pendek
  • Ketika sudah memegang posisi panjang, jika MA cepat melintasi di bawah MA lambat, tutup panjang dan pergi pendek
  • Ketika sudah memegang posisi pendek, jika MA cepat melintasi di atas MA lambat, tutup pendek dan pergi panjang

Melalui metode crossover MA ini, strategi dapat mengikuti tren, memegang posisi panjang dalam tren naik dan posisi pendek dalam tren turun, sampai sinyal pembalikan muncul.

Analisis Keuntungan

  1. Mengikuti tren: Dengan menggunakan silang MA untuk mengidentifikasi tren, strategi dapat secara efektif menangkap dan mengikuti tren pasar utama.
  2. Sederhana dan mudah digunakan: Logika strategi jelas, hanya menggunakan dua MA. Pengaturan parameter sederhana dan mudah dipahami dan dikuasai.
  3. Penerapan luas: Strategi ini dapat diterapkan secara luas pada instrumen dan kerangka waktu yang berbeda, dan dapat digunakan di berbagai pasar.
  4. Stop-loss yang tepat waktu: Ketika tren berbalik, strategi dapat menutup posisi dengan cepat untuk mengendalikan kerugian.

Analisis Risiko

  1. Kinerja yang buruk di pasar yang berkisar: Ketika pasar berada dalam pola sisi, sinyal silang yang sering akan menyebabkan perdagangan dan kerugian yang berlebihan.
  2. Tanggapan yang tidak memadai terhadap pergerakan ekstrem: Strategi dapat bereaksi terlalu lambat terhadap situasi ekstrem (seperti lonjakan atau terjun yang cepat), yang menyebabkan kerugian besar.
  3. Kesulitan dalam pengoptimalan parameter: Mengoptimalkan parameter MA membutuhkan sejumlah besar data historis dan backtesting.

Untuk mengatasi risiko ini, dapat dipertimbangkan untuk menambahkan filter yang sesuai, seperti filter ATR atau rentang sebenarnya rata-rata, untuk mengurangi overtrading di pasar yang bervariasi; menetapkan stop-loss yang wajar untuk mengendalikan kerugian perdagangan tunggal; dan terus mengoptimalkan parameter untuk beradaptasi dengan pasar.

Arah Optimalisasi

  1. Konfirmasi tren: Setelah menghasilkan sinyal perdagangan, indikator konfirmasi tren tambahan seperti MACD atau DMI dapat dimasukkan untuk lebih menyaring sinyal.
  2. Stop-loss dinamis: Gunakan indikator seperti ATR untuk menetapkan tingkat stop-loss dinamis alih-alih persentase tetap atau harga stop, untuk pengendalian risiko yang lebih baik.
  3. Ukuran Posisi: Sesuaikan secara dinamis ukuran posisi berdasarkan kekuatan tren, volatilitas dan indikator lainnya.
  4. Analisis multi-timeframe: Pertimbangkan sistem MA multi-timeframe, seperti menggabungkan MA harian dan 4 jam, untuk menyaring dan mengkonfirmasi satu sama lain dan meningkatkan akurasi identifikasi tren.
  5. Parameter adaptif: Memperkenalkan metode optimasi parameter adaptif, seperti algoritma genetik, untuk memungkinkan parameter strategi untuk beradaptasi dengan kondisi pasar yang berbeda.

Optimasi di atas dapat meningkatkan kemampuan strategi untuk menangani pasar yang kompleks, tetapi harus berhati-hati untuk menghindari optimasi yang berlebihan yang dapat menyebabkan penyesuaian kurva dan kinerja masa depan yang buruk.

Ringkasan

Double MA trend following strategy menangkap tren melalui MA crossover. Hal ini sederhana, mudah digunakan, dan dapat diterapkan secara luas. Namun, kinerja buruk dalam pasar yang bervariasi, merespons secara tidak memadai terhadap pergerakan ekstrem, dan menghadapi kesulitan dalam optimasi parameter.

Strategi ini dapat dioptimalkan dengan memperkenalkan lebih banyak indikator penyaringan, stop-loss dinamis, ukuran posisi, analisis multi-frame waktu, dan parameter adaptif.

Secara keseluruhan, strategi ini dapat berfungsi sebagai strategi trend-mengikuti dasar, tetapi sulit berdiri sendiri dan lebih cocok sebagai bagian dari portofolio strategi.


/*backtest
start: 2023-03-16 00:00:00
end: 2024-03-21 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5

//study(title="Demo - SSL Basic", shorttitle="Demo - SSL Basic", overlay=true)
strategy(title='Demo - SSL Basic', shorttitle='Demo - SSL Basic', overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, initial_capital=100, commission_value=0.15)

// Backtest Date Range
start_date_long = input(title='Backtest Long Start Date', defval=timestamp('01 Jan 2018 00:00 +0530'))
end_date_long = input(title='Backtest Long End Date', defval=timestamp('25 Jan 2030 00:00 +0530'))
backtest_range = true

// Inputs
maType = input.string(title='SSL MA Type', options=['SMA', 'EMA', 'WMA'], defval='SMA')
sslLen = input(title='SSL Length', defval=32)
showCross = input(title='Show Crossover?', defval=true)
showEntry = input(title='Show Entry?', defval=true)
showTrend = input(title='Show Trend Colors?', defval=true)

// Calc MA for SSL Channel
calc_ma(close, len, type) =>
    float result = 0
    if type == 'SMA'  // Simple
        result := ta.sma(close, len)
        result
    if type == 'EMA'  // Exponential
        result := ta.ema(close, len)
        result
    if type == 'WMA'  // Weighted
        result := ta.wma(close, len)
        result    
    result

// Add SSL Channel
maHigh = calc_ma(high, sslLen, maType)
maLow = calc_ma(low, sslLen, maType)
Hlv = int(na)
Hlv := close > maHigh ? 1 : close < maLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? maHigh : maLow
sslUp = Hlv < 0 ? maLow : maHigh
ss1 = plot(sslDown, title='Down SSL', linewidth=2, color=showTrend ? na : color.red)
ss2 = plot(sslUp, title='Up SSL', linewidth=2, color=showTrend ? na : color.lime)

// Conditions
longCondition = ta.crossover(sslUp, sslDown)
shortCondition = ta.crossover(sslDown, sslUp)

// Strategy
if shortCondition
    strategy.close('Long', comment='Long Exit', alert_message='JSON')

if longCondition
    strategy.close('Short', comment='Short Exit', alert_message='JSON')

if backtest_range and longCondition
    strategy.entry('Long', strategy.long, comment='Long Entry', alert_message='JSON')

if backtest_range and shortCondition
    strategy.entry('Short', strategy.short, comment= 'Short Entry', alert_message='JSON')


// Plots
fill(ss1, ss2, color=showTrend ? sslDown < sslUp ? color.new(color.lime, transp=75) : color.new(color.red, transp=75) : na, title='Trend Colors')


Lebih banyak