Chiến lược này được gọi làChiến lược chéo trung bình động định lượng cân nhắcÝ tưởng cơ bản là thiết kế các đường nhanh và chậm dựa trên giá, khối lượng giao dịch và các chỉ số khác, và tạo ra tín hiệu mua và bán khi đường chéo vàng và đường chéo chết xảy ra giữa chúng.
Chỉ số cốt lõi của chiến lược này là Trung bình chuyển động định lượng (QMA). QMA đo hướng xu hướng bằng cách tính giá trung bình trọng số trong một khoảng thời gian. Không giống như trung bình chuyển động thông thường, trọng số (trọng số = giá * khối lượng giao dịch) của giá trong QMA sẽ giảm theo thời gian. Do đó, giá mới nhất có trọng số lớn hơn có thể phản ứng với sự thay đổi của thị trường nhanh hơn.
Cụ thể, chiến lược này xây dựng đường QMA nhanh với 25 ngày và đường QMA chậm với 29 ngày. Nó sẽ tạo tín hiệu mua khi đường nhanh vượt qua đường chậm, và tín hiệu bán khi đường nhanh vượt qua đường chậm.
So với trung bình động thông thường, chiến lược này có những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Các rủi ro trên có thể được giảm thiểu bằng cách điều chỉnh thích hợp tần suất, phân tích tiến bộ nghiêm ngặt và kết hợp các chỉ số khác.
Vẫn còn chỗ để tối ưu hóa thêm chiến lược này:
Nói chung, đây là một chiến lược giao dịch ngắn hạn ổn định. So với giá trung bình duy nhất, chỉ số của nó có thể phản ánh tốt hơn mối quan hệ cung-nhu cầu trên thị trường. Với điều chỉnh tham số và quản lý rủi ro thích hợp, chiến lược này có thể hoạt động ổn định trong dài hạn và kiếm được lợi nhuận hợp lý.
/*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