Chiến lược này tính toán các loại trung bình động khác nhau để xác định hướng xu hướng giá và thực hiện nhập một bên. Nó mở các vị trí dài hoặc ngắn khi giá phá vỡ trung bình động.
Chiến lược cho phép lựa chọn từ 7 loại trung bình động khác nhau, bao gồm Trung bình di chuyển đơn giản (SMA), Trung bình di chuyển theo hàm số (EMA), Trung bình di chuyển theo khối lượng (VWMA), Trung bình di chuyển theo hàm số kép (DEMA), Trung bình di chuyển theo hàm số ba (TEMA), Trung bình di chuyển thích nghi (KAMA) của Kaufman và Đường trung bình kênh giá. Nó đánh giá hướng xu hướng giá dựa trên mối quan hệ giữa trung bình di chuyển được chọn và giá đóng.
Khi giá đóng phá vỡ đường trung bình động lên, nó được đánh giá là xu hướng tăng và một vị trí dài được mở. Khi giá đóng phá vỡ đường trung bình động xuống, nó được đánh giá là xu hướng giảm và một vị trí ngắn được mở. Điều này có thể nắm bắt các điểm chuyển đổi trong xu hướng giá và đạt được nhập một bên.
Những lợi thế của chiến lược này là:
Các loại trung bình động khác nhau có thể được chọn để linh hoạt phù hợp với các sản phẩm và chu kỳ khác nhau.
Nhập một bên có thể kiểm soát rủi ro hiệu quả.
Nhập vào hướng xu hướng là dễ dàng để kiếm lợi nhuận.
Nó dễ hiểu và thực hiện.
Ngoài ra còn có một số rủi ro với chiến lược này:
Khi giá dao động xung quanh đường trung bình động, sẽ có nhiều tín hiệu sai và các vị trí vào ngược.
Nó không thể tránh hoàn toàn rủi ro do biến động giá tăng hoặc giảm nhanh.
Nhà phân tích cần chọn các thông số trung bình động phù hợp. Các thông số không phù hợp có thể dễ dàng dẫn đến sự chậm trễ của các tín hiệu giao dịch.
Chiến lược có thể được tối ưu hóa từ các khía cạnh sau:
Kết hợp với các chỉ số kỹ thuật khác như MACD, RSI để đánh giá tín hiệu xu hướng và tạo thành một sự kết hợp giao dịch.
Thêm logic dừng lỗ, chẳng hạn như dừng lỗ sau hoặc lệnh dừng lỗ đang chờ.
Kiểm tra và tối ưu hóa các tham số như thời gian trung bình động, loại trung bình động để tìm sự kết hợp các tham số tối ưu.
Xem xét sử dụng kiểu lệnh MarketIfTouched để nhập, để theo dõi xu hướng.
Chiến lược này xác định hướng xu hướng giá dựa trên đường trung bình động, và thực hiện nhập một bên. Nó đơn giản để sử dụng và thực hiện, và có thể kiểm soát rủi ro hiệu quả. Nhưng cũng có những rủi ro của tín hiệu sai và nhập ngược. Nó có thể được cải thiện liên tục bằng cách kết hợp các chỉ số tín hiệu khác, tối ưu hóa các tham số, thêm stop loss, để làm cho chiến lược ổn định và đáng tin cậy hơn.
/*backtest start: 2023-11-24 00:00:00 end: 2023-12-24 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's MAs Tests v1.1", shorttitle = "MAs tests 1.1", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0) needlong = input(true, "long") needshort = input(true, "short") len = input(30, defval = 30, minval = 2, maxval = 1000, title = "MA length") type = input(1, defval = 1, minval = 1, maxval = 7, title = "Type") src = input(close, defval = close, title = "Source") anti = input(true, defval = true, title = "Antipila") //DEMA dema = 2 * ema(src, len) - ema(ema(close, len), len) //TEMA xPrice = close xEMA1 = ema(src, len) xEMA2 = ema(xEMA1, len) xEMA3 = ema(xEMA2, len) tema = 3 * xEMA1 - 3 * xEMA2 + xEMA3 //KAMA xvnoise = abs(src - src[1]) nfastend = 0.20 nslowend = 0.05 nsignal = abs(src - src[len]) nnoise = sum(xvnoise, len) nefratio = iff(nnoise != 0, nsignal / nnoise, 0) nsmooth = pow(nefratio * (nfastend - nslowend) + nslowend, 2) kama = nz(kama[1]) + nsmooth * (src - nz(kama[1])) //PriceChannel lasthigh = highest(src, len) lastlow = lowest(src, len) center = (lasthigh + lastlow) / 2 ma = type == 1 ? sma(src, len) : type == 2 ? ema(src, len) : type == 3 ? vwma(src, len) : type == 4 ? dema : type == 5 ? tema : type == 6 ? kama : type == 7 ? center : 0 plot(ma, color = blue, linewidth = 3, transp = 0) trend = anti == false and close > ma ? 1 : anti == false and close < ma ? -1 : low > ma ? 1 : high < ma ? -1 : trend[1] longCondition = trend == 1 and trend[1] == -1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) shortCondition = trend == -1 and trend[1] == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na)