Chiến lược này kết hợp đường trung bình chuyển động biểu thức 200 ngày (200 EMA), giá trung bình trọng số khối lượng (VWAP) và chỉ số dòng tiền (MFI) để tạo ra tín hiệu mua và bán. Ý tưởng chính là sử dụng sự kết hợp của ba chỉ số này để xác định hướng và sức mạnh của xu hướng, và tạo ra tín hiệu giao dịch khi giá vượt qua đường trung bình chuyển động 200 và được xác nhận bởi các chỉ số VWAP và MFI. Ngoài ra, đường trung bình chuyển động 200 từ khung thời gian cao hơn được giới thiệu như một bộ lọc xu hướng, và các giao dịch chỉ được thực hiện khi xu hướng trên khung thời gian hiện tại và cao hơn phù hợp. Hơn nữa, sự liên tục của các chuyển động giá được đánh giá để cải thiện độ tin cậy của tín hiệu.
Bằng cách kết hợp các chỉ số EMA, VWAP và MFI 200 ngày, trong khi xem xét xu hướng trong các khung thời gian cao hơn và tính liên tục của các biến động giá, chiến lược này xây dựng một hệ thống giao dịch theo xu hướng tương đối mạnh mẽ. Chiến lược lọc tín hiệu sai bằng cách phân tích toàn diện nhiều điều kiện, cải thiện độ chính xác thời gian nhập cảnh. Đồng thời, tính linh hoạt của các tham số chiến lược cho phép tối ưu hóa dựa trên các thị trường và phong cách giao dịch khác nhau. Tuy nhiên, chiến lược cũng liên quan đến một số rủi ro nhất định, chẳng hạn như tổn thất trong thị trường hỗn loạn hoặc tại các điểm chuyển hướng, và hiệu suất kém do cài đặt tham số không phù hợp. Trong tương lai, chiến lược có thể được tối ưu hóa và cải thiện hơn nữa về tối ưu hóa tham số, giới thiệu các chỉ số phụ trợ, quản lý rủi ro và các khía cạnh khác. Nhìn chung, chiến lược này cung cấp một khuôn khổ toàn diện và khả thi để theo dõi xu hướng.
/*backtest start: 2023-05-08 00:00:00 end: 2024-05-13 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("200 EMA, VWAP, MFI Strategy - Visible Signals", overlay=true, pyramiding=0) // Inputs for dynamic adjustments buffer = input.float(0.2, title="EMA Buffer Percentage", step=0.1) / 100 higherTimeframe = input.timeframe("15", title="Higher Timeframe") mfiBuyThreshold = input(60, title="MFI Buy Threshold") mfiSellThreshold = input(40, title="MFI Sell Threshold") consecutiveCloses = input.int(1, title="Consecutive Closes for Confirmation") // Calculate the 200-period EMA ema200 = ta.ema(close, 200) emaBufferedHigh = ema200 * (1 + buffer) emaBufferedLow = ema200 * (1 - buffer) emaHigher = request.security(syminfo.tickerid, higherTimeframe, ta.ema(close, 200)) // VWAP calculation vwap = ta.vwap(hlc3) // Money Flow Index calculation mfiLength = 14 mfi = ta.mfi(close, mfiLength) // Plotting the indicators plot(ema200, title="200 EMA", color=color.blue) plot(vwap, title="VWAP", color=color.orange) plot(mfi, title="MFI", color=color.purple) hline(50, "MFI Reference", color=color.gray, linestyle=hline.style_dashed) plot(emaHigher, title="Higher TF EMA", color=color.red) // Price action confirmation isUpTrend = ta.rising(close, consecutiveCloses) isDownTrend = ta.falling(close, consecutiveCloses) // Define entry conditions longCondition = close > emaBufferedHigh and close > vwap and mfi > mfiBuyThreshold and close > emaHigher and isUpTrend shortCondition = close < emaBufferedLow and close < vwap and mfi < mfiSellThreshold and close < emaHigher and isDownTrend // Trading execution if (longCondition) strategy.entry("Buy", strategy.long) if (shortCondition) strategy.entry("Sell", strategy.short) // Plot shapes for signals plotshape(series=longCondition, location=location.belowbar, color=color.green, style=shape.labelup, size=size.small, title="Buy Signal", text="Buy") plotshape(series=shortCondition, location=location.abovebar, color=color.red, style=shape.labeldown, size=size.small, title="Sell Signal", text="Sell")