Chiến lược này sử dụng các đường trung bình di chuyển nhanh và chậm để xác định hướng xu hướng và tạo ra tín hiệu khi MA nhanh vượt qua MA chậm, tạo ra một hệ thống MA kép.
Chiến lược sử dụng MA nhanh ngắn hơn và MA chậm hơn.
MA chậm xác định hướng xu hướng chính. Giá trên MA là xu hướng tăng, giá dưới đó là xu hướng giảm.
Trong xu hướng tăng, tín hiệu dài được tạo ra khi MA nhanh vượt qua trên MA chậm. Trong xu hướng giảm, tín hiệu ngắn khi MA nhanh vượt qua dưới MA chậm.
Sau khi báo hiệu, dừng theo dõi có thể được bật tùy chọn.
Sự kết hợp MA nhanh và chậm xác định hiệu quả xu hướng.
MA nhanh tạo ra các tín hiệu giao dịch nhạy cảm.
Slow MA lọc tiếng ồn ngăn chặn sự phá vỡ giả.
Các loại MA khác nhau như EMA, DEMA có thể được sử dụng.
Đánh giá stop loss có thể được kích hoạt.
Sự chậm trễ MA có thể làm chậm tín hiệu.
Stop loss có thể quá chật chội dẫn đến thoát sớm.
Số lượng được bỏ qua, nguy cơ thao túng giá tồn tại.
Chỉ có chỉ báo có khả năng phát tín hiệu sai, cần xác nhận thêm.
Tối ưu hóa tham số khó khăn. Tối ưu hóa từng bước hoặc GA có thể tìm các tham số tối ưu.
Kiểm tra các loại và thông số MA khác nhau để có kết quả tốt nhất.
Nghiên cứu các đường trung bình chuyển động thích nghi để có độ nhạy tốt hơn.
Thêm các chỉ số hoặc yếu tố khác để lọc tín hiệu.
Xây dựng dừng động cho dừng linh hoạt.
Tối ưu hóa quản lý tiền như định hình vị trí động với ATR.
Chiến lược này giao dịch hai MA chéo để xác định xu hướng, với các điểm dừng hạn chế rủi ro. Logic đơn giản và rõ ràng nhưng lựa chọn tham số và các vấn đề khác tồn tại. Cải thiện thông qua tối ưu hóa, lọc, dừng có thể cải thiện độ bền. Nó phục vụ như một hệ thống theo xu hướng cơ sở hợp lý.
/*backtest start: 2023-08-18 00:00:00 end: 2023-09-17 00:00:00 period: 3h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v1.7", shorttitle = "Trend MAs str 1.7", 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") needstops = input(false, "stops") stoppercent = input(5, defval = 5, minval = 1, maxval = 50, title = "Stop, %") 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") needbg = input(false, defval = false, title = "Need trend Background?") needarr = input(false, defval = false, title = "Need entry arrows?") 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 and low[1] > ma[1] and low[2] > ma[2] ? 1 : high < ma and high[1] < ma[1] ? -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 min = min(open, close) max = max(open, close) 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") //Arrows plotarrow(up == 1 and needarr == true ? 1 : 0, colorup = black, colordown = black, transp = 0) plotarrow(dn == 1 and needarr == true ? -1 : 0, colorup = black, colordown = black, transp = 0) //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 90) //Alerts alertcondition(up == 1, title='buy', message='Uptrend') alertcondition(dn == 1, title='sell', message='Downtrend') //Trading stoplong = up == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] longCondition = up == 1 if (longCondition) strategy.entry("Long", strategy.long, needlong == false ? 0 : na) strategy.exit("Stop Long", "Long", stop = stoplong) shortCondition = dn == 1 if (shortCondition) strategy.entry("Short", strategy.short, needshort == false ? 0 : na) strategy.exit("Stop Short", "Short", stop = stopshort)