Chiến lược giao dịch trung bình chuyển động nhiều khung thời gian

Tác giả:ChaoZhang, Ngày: 2023-09-21 20:45:38
Tags:

Tổng quan

Chiến lược này sử dụng đường chéo trung bình động giữa các khung thời gian khác nhau để tạo ra tín hiệu giao dịch. Nó cho phép quan sát MAs khung thời gian dài hơn trên biểu đồ hiện tại để phát hiện xu hướng lớn hơn.

Chiến lược logic

Chiến lược sử dụng hai đường trung bình động được tính trên các khung thời gian riêng biệt.

Ví dụ trên biểu đồ 15min nó sử dụng 20MA và 50MA:

  • 20MA được tính trên các thanh 15min hiện tại
  • 50MA được tính trên thanh hàng ngày

Khi 15min 20MA vượt trên 50MA hàng ngày, nó sẽ dài. Khi 15min 20MA vượt dưới 50MA hàng ngày, nó sẽ ngắn.

Điều này đạt được hiệu quả quan sát xu hướng khung thời gian dài hơn trong giai đoạn hiện tại.

Các điểm chéo có thể được đánh dấu cho các tín hiệu thương mại rõ ràng.

Ưu điểm

  • Phân tích qua các khung thời gian, khám phá xu hướng lớn hơn
  • Các đường TF cao hơn ổn định hơn, tránh tín hiệu sai
  • Các đường TF thấp hơn nhạy cảm hơn, xu hướng bắt thay đổi nhanh chóng
  • Kết hợp các giai đoạn MA có thể tùy chỉnh
  • Các tín hiệu được đánh dấu rõ ràng trên biểu đồ

Rủi ro

  • Tăng độ phức tạp với nhiều khung thời gian
  • tín hiệu giả TF thấp hơn vẫn có thể
  • Nhìn chung chậm với các hệ thống MA, có thể bỏ lỡ các mục tốt nhất
  • Bộ lọc hạn chế với hệ thống MA thuần túy
  • Điều chỉnh thời gian cần thiết cho các sản phẩm khác nhau

Các rủi ro có thể được giảm bằng cách:

  • Giữ MAs TF cao lâu hơn để hướng xu hướng mạnh mẽ
  • Thêm các chỉ số khác để lọc tín hiệu thêm
  • Tối ưu hóa thời gian MA cho sự kết hợp tốt nhất
  • Thư giãn các quy tắc nhập cảnh như thêm các mẫu nến

Hướng dẫn cải thiện

Chiến lược có thể được cải thiện bằng cách:

  1. Kiểm tra nhiều kết hợp thời gian MA để tối ưu hóa

  2. Thêm xác nhận thứ cấp khi xảy ra chéo

    ví dụ: kiểm tra động lực MACD

  3. Tối ưu hóa các điểm dừng để tránh thoát sớm

    Xem xét bằng chứng Post123 để quyết định lối ra

  4. Các bộ lọc khác nhau cho TF ngắn và dài

    Khắt khe hơn cho TF ngắn, thoải mái hơn cho TF dài

  5. Xem xét các bộ tham số khác nhau cho các phiên khác nhau

    Điều kiện thị trường thay đổi theo phiên

Tóm lại

Chiến lược này quan sát sự giao thoa giữa các MAs của nhiều khung thời gian để xác định hướng xu hướng và phát hiện xu hướng lớn hơn. Điều này lọc ra tiếng ồn ngắn hạn và tập trung vào các biến động giá lớn hơn. Tuy nhiên, những thách thức như điều chỉnh khung thời gian và tín hiệu tụt lại tồn tại. Các cải tiến có thể được thực hiện thông qua kiểm tra và tối ưu hóa nghiêm ngặt cho các thông số mạnh mẽ, thêm các bộ lọc để xác nhận, xác thực trực tiếp để cải thiện liên tục theo phản hồi của thị trường. Học tập và tối ưu hóa liên tục là chìa khóa để thích nghi.


/*backtest
start: 2022-09-14 00:00:00
end: 2023-09-20 00:00:00
period: 7d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

//Run script on a long interval gives better result for e.g. 1 Day
//Plots The Majority of Moving Averages
//Defaults to Current Chart Time Frame --- But Can Be Changed to Higher Or Lower Time Frames
//2nd MA Capability with Show Crosses Feature
//study(title="CM_Ultimate_MA_MTF", shorttitle="CM_Ultimate_MA_MTF", overlay=true)
strategy("Stratergy CM_Ultimate_MA_MTF", shorttitle = "Stratergy CM_Ultimate_MA_MTF", overlay = true) 
//,default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//inputs
src = close
useCurrentRes = input(true, title="Use Current Chart Resolution?")
resCustom = input(title="Use Different Timeframe? Uncheck Box Above",  defval="D")
len = input(20, title="Moving Average Length - LookBack Period")
atype = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")
cc = input(true,title="Change Color Based On Direction?")
smoothe = input(2, minval=1, maxval=10, title="Color Smoothing - 1 = No Smoothing")
doma2 = input(false, title="Optional 2nd Moving Average")
len2 = input(50, title="Moving Average Length - Optional 2nd MA")
atype2 = input(1,minval=1,maxval=7,title="1=SMA, 2=EMA, 3=WMA, 4=HullMA, 5=VWMA, 6=RMA, 7=TEMA")
cc2 = input(true,title="Change Color Based On Direction 2nd MA?")
warn = input(false, title="***You Can Turn On The Show Dots Parameter Below Without Plotting 2nd MA to See Crosses***")
warn2 = input(false, title="***If Using Cross Feature W/O Plotting 2ndMA - Make Sure 2ndMA Parameters are Set Correctly***")
sd = input(false, title="Show Dots on Cross of Both MA's")


res = useCurrentRes ? timeframe.period : resCustom
//hull ma definition
hullma = wma(2*wma(src, len/2)-wma(src, len), round(sqrt(len)))
//TEMA definition
ema1 = ema(src, len)
ema2 = ema(ema1, len)
ema3 = ema(ema2, len)
tema = 3 * (ema1 - ema2) + ema3

avg = atype == 1 ? sma(src,len) : atype == 2 ? ema(src,len) : atype == 3 ? wma(src,len) : atype == 4 ? hullma : atype == 5 ? vwma(src, len) : atype == 6 ? rma(src,len) : tema
//2nd Ma - hull ma definition
hullma2 = wma(2*wma(src, len2/2)-wma(src, len2), round(sqrt(len2)))
//2nd MA TEMA definition
sema1 = ema(src, len2)
sema2 = ema(sema1, len2)
sema3 = ema(sema2, len2)
stema = 3 * (sema1 - sema2) + sema3

avg2 = atype2 == 1 ? sma(src,len2) : atype2 == 2 ? ema(src,len2) : atype2 == 3 ? wma(src,len2) : atype2 == 4 ? hullma2 : atype2 == 5 ? vwma(src, len2) : atype2 == 6 ? rma(src,len2) : tema

out = avg 
out_two = avg2

out1 = security(syminfo.tickerid, res, out)
out2 = security(syminfo.tickerid, res, out_two)

ma_up = out1 >= out1[smoothe]
ma_down = out1 < out1[smoothe]

col = cc ? ma_up ? lime : ma_down ? red : aqua : aqua
col2 = cc2 ? ma_up ? lime : ma_down ? red : aqua : aqua

circleYPosition = out2
chk=col==red?1:0

if (not na(chk))
    if (chk[1]==1 and chk==0)
        strategy.entry("RsiLE", strategy.long, comment="RsiLE")
    else
        strategy.exit("RsiLE")

    if (chk[1]==0 and chk==1)
        strategy.entry("RsiSE", strategy.short, comment="RsiLE")
    else
        strategy.exit("RsiSE")
        
plot(out1, title="Multi-Timeframe Moving Avg", style=line, linewidth=4, color = col)
plot(doma2 and out2 ? out2 : na, title="2nd Multi-TimeFrame Moving Average", style=circles, linewidth=4, color=col2)
plot(sd and cross(out1, out2) ? circleYPosition : na,style=cross, linewidth=5, color=yellow)



Thêm nữa