Strategi Crossover Rata-rata Bergerak Ganda

Penulis:ChaoZhang, Tanggal: 2023-12-01 18:18:16
Tag:

img

Gambaran umum

Strategi ini didasarkan pada sistem dua rata-rata bergerak lintas tren berikut. Ini menggabungkan rata-rata bergerak sederhana cepat (SMA) dan rata-rata bergerak tertimbang lambat (VWMA), dan menghasilkan sinyal perdagangan ketika kedua garis saling melintasi.

Ketika SMA cepat melintasi di atas VWMA lambat, sinyal beli dihasilkan. Ketika SMA cepat melintasi di bawah VWMA lambat, sinyal jual dihasilkan. Strategi ini juga menggunakan mekanisme stop loss untuk mengendalikan risiko.

Logika Strategi

Logika inti dari strategi ini terletak pada sistem crossover rata-rata bergerak ganda.

  1. Simple Moving Average (SMA): Rata-rata aritmatika harga penutupan selama n hari terakhir, mencerminkan harga rata-rata terbaru.
  2. Rata-rata bergerak tertimbang (VWMA): Rata-rata tertimbang dari harga penutupan selama n hari terakhir, memberikan bobot yang lebih tinggi untuk harga yang lebih baru, merespons perubahan harga lebih cepat.

SMA cepat memiliki periode mundur yang lebih pendek untuk bereaksi dengan cepat terhadap perubahan harga, sedangkan VWMA lambat memiliki periode mundur yang lebih lama untuk meratakan.

Strategi ini juga menetapkan mekanisme stop loss. Ini memotong kerugian dalam waktu ketika harga bergerak ke arah yang tidak menguntungkan.

Analisis Keuntungan

  1. Merespons dengan cepat dalam melacak perubahan tren pasar
  2. Kontrol penarikan yang baik dengan mekanisme stop loss yang efektif
  3. Sederhana dan intuitif, mudah dimengerti dan diterapkan
  4. Parameter yang dapat dioptimalkan di berbagai lingkungan pasar

Analisis Risiko

  1. Strategi MA ganda cenderung memberikan sinyal palsu di pasar bull
  2. Pengaturan parameter yang tidak tepat dapat menyebabkan kerugian
  3. Kecelakaan flash sesekali bisa menyebabkan kerugian

Manajemen Risiko:

  1. Gunakan indikator penyaringan tren untuk konfirmasi
  2. Mengoptimalkan pengaturan parameter
  3. Mengadopsi strategi stop loss untuk mengendalikan kerugian tunggal secara wajar

Arahan Optimasi

Strategi dapat ditingkatkan dalam aspek berikut:

  1. Menggabungkan indikator lain seperti RSI, Bollinger Bands untuk meningkatkan akurasi sinyal
  2. Mengoptimalkan panjang rata-rata bergerak di seluruh siklus
  3. Menggabungkan indikator volume, perdagangan di titik dengan arus modal yang signifikan
  4. Sesuaikan parameter berdasarkan hasil backtest untuk menemukan optimal
  5. Menggunakan stop loss dinamis, menyesuaikan stop berdasarkan volatilitas pasar

Kesimpulan

Pada akhirnya, ini adalah strategi trend following yang sangat praktis. Ini menggunakan crossover rata-rata bergerak ganda yang intuitif untuk menghasilkan sinyal perdagangan, menangkap perubahan tren secara efektif dengan koordinasi rata-rata bergerak cepat dan lambat. Mekanisme stop loss juga memastikan kontrol risiko yang baik. Dengan indikator pelengkap dan optimasi parameter, strategi dapat mencapai kinerja perdagangan yang lebih baik.


/*backtest
start: 2023-11-23 00:00:00
end: 2023-11-28 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
//strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true, initial_capital=10000, currency='USD')

strategy(title="Bitlinc Entry v0.1 VWMA / SMA / MRSI SQQQ 94M", overlay=true)

// Credit goes to this developer for the "Date Range Code"
// https://www.tradingview.com/script/62hUcP6O-How-To-Set-Backtest-Date-Range/

// === GENERAL INPUTS ===
// short ma
maFastSource   = input(defval = close, title = "Simple MA Source")
maFastLength   = input(defval = 6, title = "Simple MA Length", minval = 1)
// long ma
maSlowSource   = input(defval = high, title = "VW MA Source")
maSlowLength   = input(defval = 7, title = "VW MA Period", minval = 1)


// === SERIES SETUP ===
// a couple of ma's...
maFast = sma(maFastSource, maFastLength)
maSlow = vwma(maSlowSource, maSlowLength)


// === PLOTTING ===
fast = plot(maFast, title = "Fast MA", color = color.green, linewidth = 2, style = plot.style_line, transp = 30)
slow = plot(maSlow, title = "Slow MA", color = color.red, linewidth = 2, style = plot.style_line, transp = 30)

// === INPUT BACKTEST RANGE ===
FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
FromDay   = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
FromYear  = input(defval = 2018, title = "From Year", minval = 2017)
ToMonth   = input(defval = 1, title = "To Month", minval = 1, maxval = 12)
ToDay     = input(defval = 1, title = "To Day", minval = 1, maxval = 31)
ToYear    = input(defval = 9999, title = "To Year", minval = 2017)

// === FUNCTION EXAMPLE ===
start     = timestamp(FromYear, FromMonth, FromDay, 00, 00)  // backtest start window
finish    = timestamp(ToYear, ToMonth, ToDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

// === LOGIC ===
enterLong = crossover(maFast, maSlow)
exitLong = crossover(maSlow, maFast)
//enterLong = crossover(maSlow, maFast)
//exitLong = crossover(maFast, maSlow)

// Entry //
strategy.entry(id="Long Entry", long=true, when=window() and enterLong)
strategy.entry(id="Short Entry", long=false, when=window() and exitLong)

// === FILL ====
fill(fast, slow, color = maFast > maSlow ? color.green : color.red)

// === MRSI ===
//
//

basis = rsi(close, input(50))

ma1 = ema(basis, input(2))
ma2 = ema(basis, input(27))

oversold = input(32.6)
overbought = input(63)

//plot(ma1, title="RSI EMA1", color=blue)
//plot(ma2, title="RSI EMA2", color=yellow)

obhist = ma1 >= overbought ? ma1 : overbought
oshist = ma1 <= oversold ? ma1 : oversold

//plot(obhist, title="Overbought Highligth", style=columns, color=color.maroon, histbase=overbought)
//plot(oshist, title="Oversold Highligth", style=columns, color=color.yellow, histbase=oversold)

//i1 = hline(oversold, title="Oversold Level", color=white)
//i2 = hline(overbought, title="Overbought Level", color=white)

//fill(i1, i2, color=olive, transp=100)

// === LOGIC ===
enterLongMrsi = crossover(ma1, oversold)
exitLongMrsi = crossover(ma1, overbought)

// Entry //
strategy.entry(id="MRSI Long Entry", long=true, when=window() and enterLongMrsi)
strategy.entry(id="MRSI Short Entry", long=false, when=window() and exitLongMrsi)

//hline(50, title="50 Level", color=white)

Lebih banyak