Chiến lược này sử dụng sự kết hợp của các đường trung bình di chuyển nhanh và chậm để xác định hướng xu hướng và bắt các xu hướng trung và dài hạn cho giao dịch xu hướng. Nó đi dài khi MA nhanh vượt qua trên MA chậm, và đi ngắn khi MA nhanh vượt qua dưới MA chậm. Đây là một chiến lược theo xu hướng điển hình.
Chiến lược này chủ yếu dựa trên đường chéo vàng và đường chéo chết của đường trung bình động để xác định xu hướng thị trường. Cụ thể, nó sử dụng MA nhanh 5 giai đoạn và MA chậm 21 giai đoạn.
Khi MA nhanh vượt qua trên MA chậm, nó báo hiệu xu hướng tăng trên thị trường, và chiến lược sẽ đi dài tại cửa hàng tiếp theo. Khi MA nhanh vượt qua dưới MA chậm, nó báo hiệu xu hướng giảm, và chiến lược sẽ đi ngắn tại cửa hàng tiếp theo.
Ngoài ra, tham số
Đối với giao dịch tiền điện tử, chiến lược cũng kết hợp logic giá trị cực - chỉ khi cả MA nhanh và chậm đạt đến các khu vực cực, các tín hiệu giao dịch sẽ được kích hoạt. Điều này tiếp tục tránh các tín hiệu sai.
Quy tắc thoát là đơn giản và trực tiếp - gần vị trí khi dừng lỗ được nhấn.
Các rủi ro có thể được giảm bằng cách:
Chiến lược có thể được cải thiện từ các khía cạnh sau:
Kiểm tra nhiều kết hợp MA để tìm các thông số tối ưu cho thị trường hiện tại, ví dụ: MA nhanh 10 giai đoạn và MA chậm 50 giai đoạn.
Kiểm tra thêm MACD, KDJ và các chỉ số khác để thiết lập các quy tắc nhập cảnh nghiêm ngặt hơn và tránh tín hiệu sai.
Nhập đơn giản hai MA hiện tại có thể được tăng cường:
Kiểm tra các cơ chế dừng khác như dừng lại để tránh dừng lại sớm.
Cho phép nhập lại sau khi dừng lại, để tránh mất xu hướng.
Tóm lại, chiến lược theo xu hướng cơ bản này có logic đơn giản và thẳng thắn - sử dụng hai MAs cho hướng xu hướng và dừng di chuyển để quản lý rủi ro. Những lợi thế dễ hiểu, có thể kiếm lợi từ xu hướng và quản lý rủi ro. Nhưng cũng có những hạn chế, như tín hiệu xấu trong quá trình hợp nhất, dừng sớm, v.v. Cần điều chỉnh trực tiếp và tối ưu hóa, chẳng hạn như thêm bộ lọc, điều chỉnh dừng, để làm cho nó thích nghi với môi trường thị trường khác nhau. Là một chiến lược giao dịch xu hướng giới thiệu, nó phù hợp cho người mới bắt đầu học và áp dụng. Nhưng nên lưu ý đến những hạn chế của nó, và các chiến lược tiên tiến hơn nên được khám phá. Chỉ thông qua cải tiến liên tục, người ta có thể đạt được lợi nhuận bền vững trong các thị trường luôn thay đổi.
/*backtest start: 2023-08-21 00:00:00 end: 2023-09-20 00:00:00 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=2 strategy(title = "Noro's Trend MAs Strategy v2.3", shorttitle = "Trend MAs str 2.3", 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, %") usefastsma = input(true, "Use fast MA Filter") fastlen = input(5, defval = 5, minval = 1, maxval = 50, title = "fast MA Period") slowlen = input(21, 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?") needex = input(true, defval = true, title = "Need extreme? (crypto/fiat only!!!)") fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year") toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year") frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month") tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month") fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day") today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day") src = close //PriceChannel 1 lasthigh = highest(src, slowlen) lastlow = lowest(src, slowlen) center = (lasthigh + lastlow) / 2 //PriceChannel 2 lasthigh2 = highest(src, fastlen) lastlow2 = lowest(src, fastlen) center2 = (lasthigh2 + lastlow2) / 2 //Trend trend = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[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 //Fast RSI fastup = rma(max(change(close), 0), 2) fastdown = rma(-min(change(close), 0), 2) fastrsi = fastdown == 0 ? 100 : fastup == 0 ? 0 : 100 - (100 / (1 + fastup / fastdown)) //CryptoBottom mac = sma(close, 10) len = abs(close - mac) sma = sma(len, 100) max = max(open, close) min = min(open, close) //Signals up1 = trend == 1 and (low < center2 or usefastsma == false) and redbars == 1 dn1 = trend == -1 and (high > center2 or usefastsma == false) and greenbars == 1 up2 = high < center and high < center2 and bar == -1 and needex dn2 = low > center and low > center2 and bar == 1 and needex up3 = close < open and len > sma * 3 and min < min[1] and fastrsi < 10 ? 1 : 0 //Lines plot(center2, color = red, linewidth = 3, transp = 0, title = "Fast MA") plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA") //Background col = needbg == false ? na : trend == 1 ? lime : red bgcolor(col, transp = 80) //Trading stoplong = up1 == 1 and needstops == true ? close - (close / 100 * stoppercent) : stoplong[1] stopshort = dn1 == 1 and needstops == true ? close + (close / 100 * stoppercent) : stopshort[1] if up1 or up2 or up3 strategy.entry("Long", strategy.long, needlong == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.exit("Stop Long", "Long", stop = stoplong) if dn1 strategy.entry("Short", strategy.short, needshort == false ? 0 : na, when=(time > timestamp(fromyear, frommonth, fromday, 00, 00) and time < timestamp(toyear, tomonth, today, 23, 59))) strategy.exit("Stop Short", "Short", stop = stopshort) if time > timestamp(toyear, tomonth, today, 23, 59) strategy.close_all()