Chiến lược giao dịch chéo trung bình động định lượng cân nhắc

Tác giả:ChaoZhang, Ngày: 2023-12-06 12:05:01
Tags:

img

Tổng quan

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.

Chiến lược logic

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.

Phân tích lợi thế

So với trung bình động thông thường, chiến lược này có những lợi thế sau:

  1. Trả lời thị trường nhanh hơn, cho phép nó nắm bắt các cơ hội ngắn hạn.
  2. Kết hợp nhiều khía cạnh bao gồm giá cả và khối lượng giao dịch, làm cho nó ổn định hơn.
  3. Cài đặt tham số linh hoạt để thích nghi với môi trường thị trường khác nhau.

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Tần suất giao dịch cao của các giao dịch ngắn hạn, có thể dẫn đến tăng chi phí giao dịch và trượt.
  2. Sắp xếp quá mức do tối ưu hóa tham số quá mức.
  3. Hiệu ứng chỉ số có thể bị ảnh hưởng khi khối lượng giao dịch không đủ.

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.

Hướng dẫn cải thiện

Vẫn còn chỗ để tối ưu hóa thêm chiến lược này:

  1. Điều chỉnh năng động các thông số của QMA để làm cho nó tự thích nghi với biến động thị trường.
  2. lọc các cơ hội giao dịch với các chỉ số như biến động và khối lượng giao dịch.
  3. Thêm các chiến lược dừng lỗ để kiểm soát lỗ đơn.

Kết luận

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


Thêm nữa