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 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:
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.
Các rủi ro có thể được giảm bằng cách:
Chiến lược có thể được cải thiện bằng cách:
Kiểm tra nhiều kết hợp thời gian MA để tối ưu hóa
Thêm xác nhận thứ cấp khi xảy ra chéo
ví dụ: kiểm tra động lực MACD
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
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
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
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)