Strategi perdagangan kuantitatif berdasarkan persilangan purata bergerak wajaran


Tarikh penciptaan: 2023-12-06 12:05:01 Akhirnya diubah suai: 2023-12-06 12:05:01
Salin: 0 Bilangan klik: 626
1
fokus pada
1619
Pengikut

Strategi perdagangan kuantitatif berdasarkan persilangan purata bergerak wajaran

Gambaran keseluruhan

Strategi ini dipanggilStrategi penyambungan purata bergerak kuantitatif bertimbangan(Weighted Quantitative Moving Average Crossover Strategy), asasnya adalah menggabungkan pelbagai petunjuk seperti harga, jumlah transaksi, reka bentuk garis cepat dan garis perlahan, dan menghantar isyarat beli dan jual ketika mereka berlaku.

Prinsip Strategi

Penunjuk teras strategi ini adalah purata bergerak kuantitatif (QMA). QMA mengukur arah trend dengan mengira purata harga bertimbangan untuk jangka masa tertentu. Ia berbeza dengan purata bergerak biasa di mana berat harga (QMA) = harga.*Oleh itu, harga terkini lebih penting dan dapat bertindak balas lebih cepat terhadap perubahan pasaran.

Khususnya, strategi ini membina garis QMA pantas dan garis QMA perlahan. Parameter garis pantas ditetapkan untuk 25 hari dan parameter garis perlahan untuk 29 hari.

Analisis kelebihan

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

  1. Menerima peluang dengan lebih cepat dan mengambil peluang dengan lebih cepat
  2. Menggabungkan pelbagai dimensi harga dan jumlah transaksi, dengan kestabilan yang lebih kuat
  3. Tetapan parameter fleksibel untuk menyesuaikan diri dengan keadaan pasaran yang berbeza

Analisis risiko

Strategi ini juga mempunyai risiko:

  1. Operasi garis pendek yang kerap, mudah meningkatkan kos transaksi dan titik tergelincir
  2. PARAMETERS terlalu optimum yang boleh menyebabkan curve fit
  3. Indeks ini boleh dikurangkan jika jumlah dagangan kurang.

Risiko di atas boleh dikurangkan dengan menyesuaikan frekuensi parameter dengan betul, analisis berjalan ke hadapan yang ketat, dan kombinasi dengan petunjuk lain.

Arah pengoptimuman

Strategi ini masih boleh dioptimumkan:

  1. Menyesuaikan parameter QMA secara dinamik, membolehkan ia menyesuaikan diri dengan kadar turun naik pasaran
  2. Penyaringan peluang masuk berdasarkan indikator seperti kadar turun naik dan jumlah dagangan
  3. Meningkatkan strategi penangguhan kerugian dan mengawal kerugian tunggal

ringkaskan

Strategi ini secara keseluruhan adalah strategi perdagangan jangka pendek yang lebih stabil. Indeksnya lebih mencerminkan hubungan bekalan dan permintaan pasaran berbanding dengan purata harga tunggal. Dengan pengenalan parameter penyesuaian dan kaedah kawalan risiko, strategi ini dapat beroperasi dengan stabil dalam jangka panjang dan memperoleh keuntungan yang baik.

Kod sumber strategi
/*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