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

Tác giả:ChaoZhang, Ngày: 2024-02-04 15:57:12
Tags:

img

Tổng quan

Chiến lược theo dõi xu hướng trung bình di chuyển kép 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, cùng với màu thân nến như tín hiệu đầu vào.

Nguyên tắc

Chiến lược này sử dụng một trung bình di chuyển chậm 20 giai đoạn để xác định xu hướng tổng thể. Crossover tăng gợi ý xu hướng tăng trong khi crossover giảm gợi ý xu hướng giảm. MA nhanh 5 giai đoạn đóng vai trò như một bộ lọc nhập cảnh. Các giao dịch chỉ được kích hoạt khi giá phá vỡ MA nhanh. Ngoài ra, màu thân nến gần đây được kiểm tra. Các tín hiệu dài được kích hoạt khi màu thân chuyển sang màu đỏ trong xu hướng tăng. Các tín hiệu ngắn được kích hoạt khi màu thân chuyển sang màu xanh lá cây trong xu hướng giảm. Điều này giúp tránh các đột phá sai.

Chiến lược này kiểm tra hành động giá bằng ba chiều - xu hướng, MA ngắn hạn và thân nến, cải thiện độ tin cậy tín hiệu.

Ưu điểm

  1. Kết hợp theo xu hướng và đảo ngược trung bình, thích nghi với các môi trường thị trường.

  2. Đánh giá nhiều yếu tố các tín hiệu trước cải thiện tỷ lệ chiến thắng bằng cách tránh các tín hiệu sai.

  3. Tối ưu hóa bằng cách sử dụng chiều dài MA, màu nến kiểm tra vv

  4. Logic rõ ràng, ngắn gọn, thân thiện với người mới bắt đầu.

Rủi ro

  1. Whipsaws trong các thị trường phạm vi có thể dẫn đến tổn thất / rút tiền.

  2. Cố gắng điều chỉnh số lượng nến được kiểm tra hoặc vô hiệu hóa sự đảo ngược trung bình.

  3. Kiểm tra hậu quả rộng rãi cần thiết để xác nhận các thông số và hiệu suất.

Tăng cường

  1. Khám phá các loại MA khác, ví dụ EMA, KAMA v.v.

  2. Thêm các quy tắc kích thước vị trí, ví dụ: số lượng cố định hoặc dựa trên tỷ lệ phần trăm vốn chủ sở hữu.

  3. Xây dựng cơ chế dừng lỗ. Xem xét ra khỏi dài nếu giá đóng dưới MA chậm.

  4. Kiểm tra trên các dụng cụ khác nhau để xác minh tính ổn định.

Kết luận

Chiến lược MA kép có lợi từ các giao dịch xu hướng trong khi chiết xuất alpha đảo ngược trung bình trong khung thời gian ngắn hơn. Hiệu suất và tiềm năng lợi nhuận có thể được cải thiện hơn nữa thông qua tối ưu hóa. Mặc dù đơn giản, nó cho phép người mới bắt đầu nắm bắt các khái niệm chính xung quanh việc kết hợp xu hướng và đảo ngược trung bình. Việc xác thực toàn diện là bắt buộc trên các công cụ và tham số.


/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2
strategy(title = "Noro's Trend MAs 1.5", shorttitle = "Trend MAs 1.5", 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")
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")

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 ? 1 : high < ma ? -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 < 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")

//Trading
longCondition = up == 1
if (longCondition)
    strategy.entry("Long", strategy.long, needlong == false ? 0 : na)

shortCondition = dn == 1
if (shortCondition)
    strategy.entry("Short", strategy.short, needshort == false ? 0 : na)

Thêm nữa