Strategi perdagangan lintas rata-rata bergerak kuantitatif tertimbang

Penulis:ChaoZhang, Tanggal: 2023-12-06 12:05:01
Tag:

img

Gambaran umum

Strategi ini disebutStrategi crossover rata-rata bergerak kuantitatif tertimbangIde dasarnya adalah untuk merancang garis cepat dan lambat berdasarkan harga, volume perdagangan dan indikator lainnya, dan menghasilkan sinyal beli dan jual ketika golden cross dan cross mati terjadi di antara mereka.

Logika Strategi

Indikator inti dari strategi ini adalah Quantitative Moving Average (QMA). QMA mengukur arah tren dengan menghitung harga rata-rata tertimbang selama periode waktu tertentu. Berbeda dengan rata-rata bergerak biasa, bobot (bobot = harga * volume perdagangan) harga di QMA akan menurun dari waktu ke waktu. Dengan demikian, harga terbaru memiliki bobot yang lebih besar yang dapat merespons perubahan pasar lebih cepat.

Secara khusus, strategi ini membangun garis QMA cepat dengan 25 hari dan garis QMA lambat dengan 29 hari.

Analisis Keuntungan

Dibandingkan dengan rata-rata bergerak biasa, strategi ini memiliki keuntungan berikut:

  1. Menanggapi pasar dengan lebih cepat, yang memungkinkan untuk menangkap peluang jangka pendek.
  2. Menggabungkan beberapa dimensi termasuk harga dan volume perdagangan, yang membuatnya lebih stabil.
  3. Pengaturan parameter yang fleksibel untuk beradaptasi dengan lingkungan pasar yang berbeda.

Analisis Risiko

Strategi ini juga memiliki beberapa risiko:

  1. Frekuensi perdagangan yang tinggi dari operasi jangka pendek, yang dapat menyebabkan peningkatan biaya transaksi dan slippage.
  2. Overfitting karena optimasi parameter yang berlebihan.
  3. Efek indikator dapat dikompromikan ketika volume perdagangan tidak cukup.

Risiko di atas dapat dikurangi dengan menyesuaikan frekuensi secara tepat, analisis berjalan maju yang ketat, dan menggabungkan indikator lain.

Arah Peningkatan

Masih ada ruang untuk optimalisasi lebih lanjut dari strategi ini:

  1. Sesuaikan secara dinamis parameter QMA agar dapat beradaptasi dengan volatilitas pasar.
  2. Menyaring peluang perdagangan dengan indikator seperti volatilitas dan volume perdagangan.
  3. Tambahkan strategi stop loss untuk mengendalikan kerugian tunggal.

Kesimpulan

Secara umum, ini adalah strategi perdagangan jangka pendek yang stabil. Dibandingkan dengan rata-rata harga tunggal, indikatornya dapat lebih mencerminkan hubungan penawaran-permintaan di pasar. Dengan penyesuaian parameter dan manajemen risiko yang tepat, strategi ini dapat beroperasi secara stabil untuk jangka panjang dan mendapatkan keuntungan yang baik.


/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Brad VWMACD Strategy 2233", overlay=false, max_bars_back=500,default_qty_type=strategy.percent_of_equity,commission_type=strategy.commission.percent, commission_value=0.18, default_qty_value=100)

// === INPUT BACKTEST RANGE === 
FromMonth = input(defval = 9, 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"

// === INPUT SMA === 
//fastMA    = input(defval = 16, type = integer, title = "FastMA", minval = 1 )
//slowMA    = input(defval = 23, type = integer, title = "SlowMA", minval = 1)

fastMA    = input(defval = 25, title = "FastMA", minval = 1 )
slowMA    = input(defval = 29,  title = "SlowMA", minval = 1)

Long_period = slowMA
Short_period = fastMA
Smoothing_period = input(9, minval=1)
xLongMAVolPrice = ema(volume * close, Long_period) 
xLongMAVol = ema(volume, Long_period) 
xResLong = (xLongMAVolPrice * Long_period) / (xLongMAVol * Long_period)
xShortMAVolPrice = ema(volume * close, Short_period) 
xShortMAVol = ema(volume, Short_period) 
xResShort = (xShortMAVolPrice * Short_period) / (xShortMAVol * Short_period)
xVMACD = xResShort - xResLong
xVMACDSignal = ema(xVMACD, Smoothing_period)
nRes = xVMACD - xVMACDSignal
//plot(nRes*20+slowMA, color=blue, style = line )
//plot(3000, color=red, style = line )


// === SERIES SETUP ===

buy  = crossover( xVMACD,xVMACDSignal)     // buy when fastMA crosses over slowMA
sell = crossunder( xVMACD,xVMACDSignal)  // sell when fastMA crosses under slowMA


// === SERIES SETUP === 

//buy  = crossover(vwma(close, fastMA),7+vwma(close, slowMA))     // buy when fastMA crosses over slowMA
//sell = crossunder(vwma(close, fastMA),vwma(close, slowMA)-7)    // sell when fastMA crosses under slowMA

// === EXECUTION ===
strategy.entry("L", strategy.long, when = window() and buy)  // buy long when "within window of time" AND crossover
strategy.close("L", when = window() and sell)                // sell long when "within window of time" AND crossunder         

// === EXECUTION ===
strategy.entry("S", strategy.short, when = window() and sell)  // buy long when "within window of time" AND crossover
strategy.close("S", when = window() and buy)                // sell long when "within window of time" AND crossunder         

plotshape(window() and buy, style=shape.triangleup, color=green, text="up")
plotshape(window() and sell, style=shape.triangledown, color=red, text="down")
plot(xVMACD*100, title = 'FastMA', color = orange, linewidth = 2, style = line)  // plot FastMA
plot(xVMACDSignal*100, title = 'SlowMA', color = aqua, linewidth = 2, style = line)    // plot SlowMA


Lebih banyak