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.
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.
Berbanding dengan purata bergerak biasa, strategi ini mempunyai kelebihan berikut:
Strategi ini juga mempunyai beberapa risiko:
Risiko di atas boleh dikurangkan dengan menyesuaikan kekerapan dengan sewajarnya, analisis berjalan maju yang ketat, dan menggabungkan penunjuk lain.
Masih ada ruang untuk mengoptimumkan lagi strategi ini:
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