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


Ngày tạo: 2024-01-24 11:28:57 sửa đổi lần cuối: 2024-01-24 11:28:57
sao chép: 1 Số nhấp chuột: 559
1
tập trung vào
1617
Người theo dõi

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

Tổng quan

Chiến lược theo dõi xu hướng hai đường bằng nhau là một chiến lược sử dụng kết hợp của đường trung bình di chuyển nhanh và đường trung bình di chuyển chậm để đánh giá xu hướng thị trường và phát ra tín hiệu giao dịch khi xu hướng chuyển hướng. Chiến lược này kết hợp cả chỉ số đường bằng và 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à đánh giá xu hướng.

Nguyên tắc chiến lược

Chiến lược theo dõi xu hướng hai đường trung bình sử dụng hai chỉ số đường trung bình di chuyển là đường trung bình di chuyển nhanh ((chu kỳ 5) và đường trung bình di chuyển chậm ((chu kỳ 21). đường trung bình nhanh được sử dụng để tạo ra tín hiệu giao dịch, đường trung bình chậm được sử dụng để xác định xu hướng của thị trường.

Chiến lược này cũng sử dụng các chỉ số kênh giá để hỗ trợ xác định xu hướng. Các kênh giá được xác định bằng đường trung bình di chuyển của giá cao nhất và giá thấp nhất. Khi giá vượt qua kênh, xu hướng được đảo ngược. Chiến lược này sử dụng hai kênh giá, chu kỳ kênh giá đầu tiên là 21 và chu kỳ kênh giá thứ hai là 5, phù hợp với chu kỳ đường trung bình.

Khi đánh giá các tín hiệu mua và bán, chiến lược này yêu cầu các cột đỏ xuất hiện liên tục (số cột người dùng có thể đặt) như một điều kiện lọc bổ sung. Điều này có thể tránh phát ra tín hiệu sai trong khu vực cân bằng.

Nhìn chung, logic của chiến lược theo dõi xu hướng hai chiều là:

  1. Sử dụng kênh giá để đánh giá xu hướng trên quy mô lớn
  2. Sử dụng đường trung bình nhanh để đánh giá xu hướng ngắn hạn và phát tín hiệu giao dịch
  3. Kết hợp với các bộ lọc hình trụ bổ sung để tránh tín hiệu sai trong tổng hợp

Bằng cách đánh giá xu hướng ở nhiều cấp độ, bạn có thể lọc tiếng ồn một cách hiệu quả và xác định xu hướng.

Phân tích lợi thế

Chiến lược theo dõi xu hướng hai đường bằng nhau có những lợi thế sau:

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

Nhìn chung, chiến lược này có tính ổn định tổng thể tốt hơn và hoạt động tốt hơn trong thị trường có xu hướng lớn.

Phân tích rủi ro

Các chiến lược theo dõi xu hướng hai chiều đều có một số rủi ro, bao gồm:

  1. Khi thị trường thu hồi lâu dài, có thể tạo ra các tín hiệu sai, có thể dẫn đến tổn thất nhỏ liên tục
  2. Các tham số chiến lược được đặt không đúng lúc, tín hiệu giao dịch có thể bị trễ, bỏ lỡ thời gian đầu vào tốt nhất
  3. Không có chiến lược dừng lỗ hiệu quả, rủi ro giao dịch đơn lẻ khó kiểm soát

Tương tự, rủi ro chiến lược có thể được giảm bớt bằng cách:

  1. Điều chỉnh điều kiện lọc cột đỏ / xanh để giảm tần suất giao dịch trong thị trường tổng hợp
  2. Tối ưu hóa tham số đường trung bình nhanh để đảm bảo tín hiệu giao dịch kịp thời
  3. Thêm chiến lược dừng di chuyển hoặc dừng phần trăm, kiểm soát chặt chẽ lỗ đơn

Hướng tối ưu hóa

Các chiến lược theo dõi xu hướng hai đường đều có thể được tối ưu hóa hơn nữa, chủ yếu là:

  1. Kết hợp với chỉ số biến động, như ATR, tự động điều chỉnh mức dừng lỗ
  2. Tự động tối ưu hóa các tham số chính sách bằng phương pháp học máy
  3. Thêm mô-đun cho mạng lưới thần kinh để đánh giá xu hướng
  4. Kết hợp nhiều chỉ số và điều kiện lọc để xây dựng danh mục chiến lược

Những hướng tối ưu hóa này có thể tiếp tục nâng cao mức độ ổn định, thích ứng và thông minh của chiến lược.

Tóm tắt

Chiến lược theo dõi xu hướng hai chiều là một chiến lược theo dõi xu hướng mạnh mẽ hơn. Nó kết hợp cả chỉ số đường ngang và kênh giá để xác định hướng và cường độ của xu hướng và phát tín hiệu giao dịch bằng đường ngang nhanh. Các điều kiện lọc hình cột được thêm vào cũng có thể tránh thêm các tín hiệu sai. Các tham số của chiến lược có thể được điều chỉnh và có thể thích ứng tốt với các môi trường thị trường khác nhau.

Mã nguồn chiến lược
/*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)