
Chiến lược theo dõi xu hướng trung bình di chuyển kép là một chiến lược giao dịch định lượng sử dụng kết hợp trung bình di chuyển nhanh và trung bình di chuyển chậm để xác định hướng xu hướng và kết hợp màu sắc của thực thể K-line làm tín hiệu đầu vào. Chiến lược này có tính năng theo dõi xu hướng và giao dịch đảo ngược cùng một lúc.
Chiến lược này sử dụng một đường trung bình di chuyển chậm dài 20 để xác định hướng của xu hướng tổng thể, được coi là xu hướng tăng khi giá tăng và xu hướng giảm khi giá giảm. Đồng thời sử dụng đường trung bình di chuyển nhanh dài 5 làm bộ lọc đầu vào, chỉ phát hành giao dịch khi giá phá vỡ đường trung bình di chuyển nhanh. Ngoài ra, chiến lược này cũng kiểm tra màu thực của đường N-K gần nhất, phát hành nhiều tín hiệu khi kết hợp xu hướng tăng khi màu thực liên tục chuyển sang màu đỏ, và phát hành tín hiệu trống khi kết hợp xu hướng giảm khi màu thực liên tục chuyển sang màu xanh để ngăn chặn sự phá vỡ giả.
Chiến lược tổng hợp đánh giá thông tin về ba chiều: xu hướng tổng thể, đường trung bình ngắn hạn và thực thể đường K, do đó làm tăng độ tin cậy của tín hiệu giao dịch. Chỉ khi ba hướng phù hợp, tín hiệu giao dịch sẽ được phát ra, lọc một phần tiếng ồn.
Nó cũng có tính năng theo dõi xu hướng và đảo ngược giao dịch, có thể thích ứng với các môi trường thị trường khác nhau.
Đánh giá đa chiều trước khi phát tín hiệu giao dịch, lọc hiệu quả tín hiệu giả, tăng tỷ lệ thắng.
Các tham số tối ưu hóa có nhiều không gian, có thể được tối ưu hóa bằng cách điều chỉnh chiều dài đường trung bình di chuyển, màu sắc của thực thể K, số gốc.
Chiến lược logic rõ ràng, đơn giản, dễ hiểu, phù hợp cho người mới học.
Trong trường hợp có sự biến động lớn, có thể tạo ra một chuỗi osing, dẫn đến sự rút lui lớn hơn. Bạn có thể điều chỉnh các tham số trung bình di chuyển thích hợp hoặc thêm dừng để tránh.
Trong giai đoạn sắp xếp ngang, dễ hình thành whipsaw, dẫn đến tổn thất. Bạn có thể điều chỉnh đúng số gốc của phán đoán màu sắc thực thể K-line hoặc đóng giao dịch đảo ngược.
Cần có đủ thời gian để đảm bảo rằng các tham số được đặt hợp lý, nếu không sẽ ảnh hưởng lớn đến hiệu suất của chiến lược.
Thử các loại trung bình di chuyển khác nhau, chẳng hạn như trung bình di chuyển chỉ số, trung bình di chuyển thích ứng của Kaufman.
Tăng kiểm soát khối lượng giao dịch, chẳng hạn như khối lượng giao dịch cố định hoặc điều chỉnh theo quyền lợi của tài khoản.
Tăng cơ chế dừng lỗ. Khi giá giảm xuống dưới đường trung bình di chuyển chậm, bạn có thể cân nhắc dừng lỗ.
Có thể thử nghiệm các giống khác nhau để đánh giá tính ổn định và khả năng thích ứng của chiến lược.
Chiến lược theo dõi xu hướng đường trung bình di động kép kết hợp với phán đoán xu hướng và giao dịch đảo ngược, có thể nắm bắt hiệu quả các xu hướng đường trung và dài, cũng có thể thu được lợi nhuận bổ sung trên đường ngắn. Bằng cách tối ưu hóa tham số và tăng cường cơ chế, bạn có thể mở rộng thêm không gian kiếm lợi nhuận.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)
//Settings
needlong = input(true, "long")
needshort = input(true, "short")
type = input(7, defval = 7, minval = 1, maxval = 7, title = "Type of Slow MA")
src = input(close, defval = close, title = "Source of Slow MA")
usefastsma = input(true, "Use fast MA Filter")
fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "slow MA Period")
bars = input(2, defval = 2, minval = 0, maxval = 3, title = "Bars Q")
fastsma = ema(src, fastlen)
//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
//Trend
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
trend = low > ma ? 1 : high < ma ? -1 : trend[1]
//Bars
bar = close > open ? 1 : close < open ? -1 : 0
redbars = bars == 0 ? 1 : bars == 1 and bar == -1 ? 1 : bars == 2 and bar == -1 and bar[1] == -1 ? 1 : bars == 3 and bar == -1 and bar[1] == -1 and bar[2] == -1 ? 1 : 0
greenbars = bars == 0 ? 1 : bars == 1 and bar == 1 ? 1 : bars == 2 and bar == 1 and bar[1] == 1 ? 1 : bars == 3 and bar == 1 and bar[1] == 1 and bar[2] == 1 ? 1 : 0
//Signals
up = trend == 1 and (low < fastsma or usefastsma == false) and redbars == 1 ? 1 : 0
dn = trend == -1 and (high > fastsma or usefastsma == false) and greenbars == 1 ? 1 : 0
//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(ma, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
//Trading
longCondition = up == 1
if (longCondition)
strategy.entry("Long", strategy.long, needlong == false ? 0 : na)
shortCondition = dn == 1
if (shortCondition)
strategy.entry("Short", strategy.short, needshort == false ? 0 : na)