Chiến lược theo dõi xu hướng trung bình động kép

Tác giả:ChaoZhang, Ngày: 2024-01-24 11:28:57
Tags:

img

Tổng quan

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 sử dụng sự kết hợp của các trung bình di chuyển nhanh và chậm để xác định xu hướng thị trường, và tạo ra các tín hiệu giao dịch khi hướng xu hướng thay đổi. Nó kết hợp các chỉ số trung bình di chuyển và các chỉ số kênh giá để xác định xu hướng, có thể lọc hiệu quả tiếng ồn thị trường và xác định hướng xu hướng.

Chiến lược logic

Chiến lược theo dõi xu hướng trung bình di chuyển kép sử dụng hai trung bình di chuyển - trung bình di chuyển nhanh (5 giai đoạn) và trung bình di chuyển chậm (21 giai đoạn). MA nhanh được sử dụng để tạo ra tín hiệu giao dịch trong khi MA chậm được sử dụng để xác định hướng xu hướng thị trường. Khi MA nhanh vượt qua trên MA chậm, một tín hiệu mua được tạo ra. Khi MA nhanh vượt qua dưới MA chậm, một tín hiệu bán được tạo ra.

Chiến lược này cũng sử dụng một chỉ số kênh giá để giúp xác định xu hướng. Kênh giá được xác định bởi trung bình động của giá cao nhất và thấp nhất. Khi giá vượt qua kênh, nó chỉ ra sự đảo ngược xu hướng. Chiến lược này sử dụng hai kênh giá với thời gian lần lượt là 21 và 5, phù hợp với thời gian MA.

Khi xác định tín hiệu mua và bán, chiến lược yêu cầu các ngọn nến màu đỏ / xanh liên tiếp xuất hiện (có thể điều chỉnh bởi người dùng) như một điều kiện lọc bổ sung.

Tóm lại, logic để xác định xu hướng trong chiến lược này là:

  1. Sử dụng kênh giá để xác định hướng xu hướng khung thời gian cao hơn
  2. Sử dụng MA nhanh để xác định xu hướng ngắn hạn và tạo tín hiệu giao dịch
  3. Kết hợp bộ lọc nến bổ sung để tránh tín hiệu sai trong quá trình hợp nhất

Bằng cách đánh giá xu hướng qua các khung thời gian, tiếng ồn thị trường có thể được lọc hiệu quả và xác nhận hướng xu hướng.

Phân tích lợi thế

Chiến lược theo dõi xu hướng trung bình di chuyển kép có những lợi thế sau:

  1. Hệ thống MA kép có thể xác định hiệu quả xu hướng và xác định hướng xu hướng chính
  2. MA nhanh tạo ra các tín hiệu giao dịch để nắm bắt kịp thời sự đảo ngược xu hướng
  3. Kênh giá xác định xu hướng khung thời gian cao hơn để tránh bị đánh lừa bởi tiếng ồn thị trường ngắn hạn
  4. Các bộ lọc nến màu đỏ/xanh làm giảm khả năng tín hiệu sai trong quá trình hợp nhất
  5. Các tham số có thể điều chỉnh cho phép tối ưu hóa cho các thị trường khác nhau để cải thiện độ bền
  6. Các chiến lược dừng lỗ có thể được thêm vào để kiểm soát rủi ro hiệu quả cho mỗi giao dịch

Tóm lại, chiến lược này có sự ổn định tổng thể tương đối tốt và hoạt động tốt trên các thị trường có xu hướng mạnh.

Phân tích rủi ro

Chiến lược theo dõi xu hướng trung bình di chuyển kép cũng có một số rủi ro, chủ yếu là:

  1. Trong quá trình củng cố kéo dài, nó có xu hướng tạo ra các tín hiệu sai và tổn thất nhỏ liên tục
  2. Cài đặt tham số không chính xác có thể làm chậm tín hiệu giao dịch và bỏ lỡ cơ hội nhập cảnh tốt nhất
  3. Nếu không có hiệu quả dừng lỗ, rủi ro trên mỗi giao dịch khó kiểm soát

Các biện pháp tương ứng để giảm rủi ro bao gồm:

  1. Điều chỉnh cài đặt bộ lọc nến màu đỏ / xanh để giảm tần suất giao dịch trong các thị trường hợp nhất
  2. Tối ưu hóa các thông số MA nhanh để đảm bảo tạo tín hiệu giao dịch kịp thời
  3. Thêm stop loss di chuyển hoặc tỷ lệ phần trăm vào kiểm soát nghiêm ngặt cho mỗi lỗ giao dịch

Hướng dẫn tối ưu hóa

Có chỗ cho việc tối ưu hóa thêm chiến lược, chủ yếu theo các hướng như:

  1. Kết hợp các chỉ số biến động như ATR để tự động điều chỉnh dừng lỗ
  2. Sử dụng máy học để tự động tối ưu hóa các thông số
  3. Thêm các module mạng thần kinh để xác định hướng xu hướng
  4. Xây dựng các hệ thống tập hợp kết hợp nhiều chỉ số và bộ lọc

Các hướng tối ưu hóa này có thể cải thiện thêm sự ổn định, khả năng thích nghi và mức độ thông minh của chiến lược.

Kết luận

Kết luận, 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 theo xu hướng tương đối mạnh mẽ. Nó kết hợp các đường trung bình di chuyển và các kênh giá để xác định hướng và sức mạnh xu hướng, tạo ra các tín hiệu giao dịch với MA nhanh. Các bộ lọc nến bổ sung cũng giúp tránh các tín hiệu sai. Các thông số điều chỉnh cho phép thích nghi với môi trường thị trường khác nhau. Ngoài ra còn có nhiều phòng cho các tối ưu hóa hơn nữa để xây dựng một chiến lược giao dịch tự động đáng tin cậy, thông minh.


/*backtest
start: 2023-12-24 00:00:00
end: 2024-01-23 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs Strategy v1.8", shorttitle = "Trend MAs str 1.8", 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, %")
useohlc4 = input(false, defval = false, title = "Use OHLC4")
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?")
needarr = input(false, defval = false, title = "Need entry arrows?")

src = useohlc4 == true ? ohlc4 : close
fastsma = ema(src, 5)

//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
//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]

trend1 = low > center and low[1] > center[1] ? 1 : high < center and high[1] < center[1] ? -1 : trend1[1]
trend2 = low > center2 and low[1] > center2[1] ? 1 : high < center2 and high[1] < center2[1] ? -1 : trend1[1]
trend = trend1 == 1 and trend2 == 1 ? 1 : trend2 == -1 and trend2 == -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
up = trend == 1 and (low < center2 or usefastsma == false) and (redbars == 1) ? 1 : 0
dn = trend == -1 and (high > center2 or usefastsma == false) and (greenbars == 1) ? 1 : 0

//Lines
colorfastsma = usefastsma == true ? red : na
plot(fastsma, color = colorfastsma, title = "Fast MA")
plot(center, color = blue, linewidth = 3, transp = 0, title = "Slow MA")
plot(center2, color = red, linewidth = 3, transp = 0, title = "PriceChannel 2")

//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)

Thêm nữa