Chiến lược chéo trung bình động là một chiến lược phân tích kỹ thuật rất cổ điển và thường được sử dụng. Ý tưởng cốt lõi của chiến lược này là sử dụng chéo giữa các trung bình động của các giai đoạn khác nhau làm tín hiệu giao dịch. Khi trung bình động ngắn hạn vượt qua trên trung bình động dài hạn từ dưới, một tín hiệu mua được tạo ra. Khi trung bình động ngắn hạn vượt qua dưới trung bình động dài hạn từ trên, một tín hiệu bán được tạo ra.
Chiến lược này sử dụng đầu vào để thiết lập loại (SMA, EMA, WMA, RMA) và thời gian của đường trung bình động, cũng như phạm vi thời gian backtesting.
Các loại trung bình động khác nhau được tính trong hàm biến thể.
Khi giá đóng vượt trên ma, một tín hiệu mua được tạo ra. Khi giá đóng vượt dưới ma, một tín hiệu bán được tạo ra.
Để thiết lập stop loss, trung bình 14 giai đoạn thực phạm vi atr được tính toán.
Logic vào và ra cụ thể là như sau:
Đăng nhập dài: đóng chéo trên ma và trong phạm vi thời gian backtest, điểm dừng mất mát là điểm nhập khẩu gần
Exit dài: đóng chéo dưới ma trừ 2 lần atr để thoát khỏi lỗ dừng hoặc giá cao nhất vượt quá điểm vào đóng cộng với 2 lần atr để thoát khỏi lợi nhuận
Nhập ngắn: đóng chéo dưới ma và trong phạm vi thời gian backtest, điểm dừng mất mát là điểm nhập gần
Khóa ngắn: đóng chéo trên ma cộng với 2 lần atr để thoát khỏi lỗ dừng hoặc giá thấp nhất thấp hơn điểm nhập khẩu đóng trừ 2 lần atr để thoát khỏi lợi nhuận
Để giải quyết rủi ro, tối ưu hóa có thể được thực hiện trong các khía cạnh sau:
Chiến lược này có thể được tối ưu hóa trong các khía cạnh sau:
Chiến lược giao dịch trung bình động là một chiến lược phân tích kỹ thuật rất điển hình và thường được sử dụng. Ý tưởng cốt lõi của chiến lược đơn giản và dễ thực hiện, phù hợp với các thị trường khác nhau, và là một trong những chiến lược giao dịch định lượng cấp nhập cảnh. Tuy nhiên, chiến lược cũng có một số vấn đề như tạo ra tín hiệu thường xuyên và có xu hướng dừng lỗ. Với tối ưu hóa thích hợp, hiệu suất có thể được cải thiện đáng kể.
/*backtest start: 2023-10-03 00:00:00 end: 2023-11-02 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("MA Cross Strategy", overlay=true,commission_value = 0.1) type = input(defval = "WMA", title = "MA Type: ", options=["RMA", "SMA", "EMA", "WMA"]) length = input(28) source = close // === INPUT BACKTEST RANGE === FromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31) FromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12) FromYear = input(defval = 2000, title = "From Year", minval = 2000) // === FUNCTION EXAMPLE === start = timestamp(FromYear, FromMonth, FromDay, 00, 00) // backtest start window finish = timestamp(9999, 1, 1, 23, 59) // backtest finish window window() => time >= start and time <= finish ? true : false // create function "within window of time" variant(type, src, len) => v1 = sma(src, len) // Simple v2 = ema(src, len) // Exponential v5 = wma(src, len) // Weighted v7 = rma(src, len) // Smoothed type=="EMA"?v2 : type=="WMA"?v5 : type=="RMA"?v7 : v1 ma = variant(type,source, length) atr = security(syminfo.tickerid, "D", atr(14)) range = valuewhen(cross(close,ma), (atr*2), na) ep = valuewhen(cross(close,ma), close, na) plot(ma,color=ma>ma[1]?color.blue:color.red,transp=0,linewidth=1) plot(ep,color=#2196f3,transp=100,trackprice=true, offset=-9999) plot(ep+range,color=#2196f3,transp=100,trackprice=true, offset=-9999) plot(ep-range,color=#2196f3,transp=100,trackprice=true, offset=-9999) strategy.entry("Long Entry", true, when = crossover(close,ma) and window() , stop = ep ) strategy.exit("Long Exit", "Long Entry", stop = ep-range) strategy.exit("Long Exit", "Long Entry", when = high > ep+range ,stop = ep[1] ) strategy.entry("Short Entry", false, when = crossunder(close,ma) and window() , stop = ep ) strategy.exit("Short Exit", "Short Entry", stop = ep+range) strategy.exit("Short Exit", "Short Entry", when = low < ep-range ,stop = ep[1] )