Sumber dimuat naik... memuat...

Strategi Dagangan Crossover Purata Bergerak Kuantitatif Bertingkat

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

img

Ringkasan

Strategi ini dinamakanStrategi crossover purata bergerak kuantitatif yang ditimbangIdea asasnya adalah untuk merancang garis cepat dan perlahan berdasarkan harga, jumlah dagangan dan penunjuk lain, dan menjana isyarat beli dan jual apabila silang emas dan silang mati berlaku di antara mereka.

Logika Strategi

Indikator utama strategi ini adalah Purata Bergerak Kuantitatif (QMA). QMA mengukur arah trend dengan mengira harga purata tertimbang dalam tempoh masa. Berbeza dengan purata bergerak biasa, berat (berat = harga * jumlah dagangan) harga di QMA akan merosot dari masa ke masa. Oleh itu, harga terkini mempunyai berat yang lebih besar yang dapat bertindak balas terhadap perubahan pasaran dengan lebih cepat.

Secara khusus, strategi ini membina garis QMA cepat dengan 25 hari dan garis QMA perlahan dengan 29 hari. Ia akan menghasilkan isyarat beli apabila garis pantas melintasi di atas garis perlahan, dan isyarat jual apabila garis pantas melintasi di bawah garis perlahan.

Analisis Kelebihan

Berbanding dengan purata bergerak biasa, strategi ini mempunyai kelebihan berikut:

  1. Menanggapi pasaran dengan lebih cepat, yang membolehkan ia merebut peluang jangka pendek.
  2. Menggabungkan pelbagai dimensi termasuk harga dan jumlah dagangan, yang menjadikannya lebih stabil.
  3. Tetapan parameter yang fleksibel untuk menyesuaikan diri dengan persekitaran pasaran yang berbeza.

Analisis Risiko

Strategi ini juga mempunyai beberapa risiko:

  1. Kekerapan perdagangan operasi jangka pendek yang tinggi, yang boleh membawa kepada peningkatan kos transaksi dan kelalaian.
  2. Overfitting disebabkan oleh optimasi parameter yang berlebihan.
  3. Kesan penunjuk mungkin terganggu apabila jumlah dagangan tidak mencukupi.

Risiko di atas boleh dikurangkan dengan menyesuaikan kekerapan dengan sewajarnya, analisis berjalan maju yang ketat, dan menggabungkan penunjuk lain.

Arahan Penambahbaikan

Masih ada ruang untuk mengoptimumkan lagi strategi ini:

  1. Sesuaikan parameter QMA secara dinamik untuk menjadikannya menyesuaikan diri dengan turun naik pasaran.
  2. Menapis peluang perdagangan dengan penunjuk seperti turun naik dan jumlah dagangan.
  3. Tambah strategi stop loss untuk mengawal kerugian tunggal.

Kesimpulan

Secara umum, ini adalah strategi perdagangan jangka pendek yang stabil. Berbanding dengan purata harga tunggal, penunjuknya dapat mencerminkan hubungan bekalan dan permintaan di pasaran dengan lebih baik. Dengan penyesuaian parameter dan pengurusan risiko yang betul, strategi ini dapat beroperasi dengan mantap untuk jangka panjang dan memperoleh 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 lanjut