
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.
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à:
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.
Chiến lược theo dõi xu hướng hai đường bằng nhau có những lợi thế sau:
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.
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:
Tương tự, rủi ro chiến lược có thể được giảm bớt bằng cách:
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à:
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.
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.
/*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)