Chiến lược này kết hợp ba chỉ số kỹ thuật: VWAP (Giá trung bình cân nhắc khối lượng), RSI (Chỉ số sức mạnh tương đối) và Bollinger Bands, để thực hiện một chiến lược giao dịch định lượng đơn giản và dễ sử dụng với lợi nhuận và dừng lỗ động. Ý tưởng chính của chiến lược là sử dụng chỉ số VWAP để xác định xu hướng giá trong một khoảng thời gian qua, trong khi sử dụng các chỉ số RSI và Bollinger Bands để xác định giá có nằm trong phạm vi mua quá nhiều hay bán quá nhiều, do đó xác định tín hiệu giao dịch.
Chiến lược này kết hợp ba chỉ số kỹ thuật: VWAP, RSI và Bollinger Bands, để thực hiện một chiến lược giao dịch định lượng đơn giản và dễ sử dụng. Chiến lược này sử dụng động lợi nhuận và dừng lỗ để kiểm soát hiệu quả rủi ro và khóa lợi nhuận. Mặc dù chiến lược có một số rủi ro tiềm ẩn, với các thiết lập tham số hợp lý và tối ưu hóa liên tục, người ta tin rằng chiến lược có thể đạt được kết quả tốt trong giao dịch thực tế.
/*backtest start: 2024-06-06 00:00:00 end: 2024-06-13 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("VWAP and RSI Strategy", overlay=true) // VWAP calculation vwap = ta.vwap(close) // RSI calculation rsi_length = 16 rsi = ta.rsi(close, rsi_length) // Bollinger Bands calculation bb_length = 14 bb_std = 2.0 [bb_middle, bb_upper, bb_lower] = ta.bb(close, bb_length, bb_std) // Variables for VWAP signal calculation backcandles = 15 float vwapsignal = na // Function to check if last 15 candles are above or below VWAP calc_vwapsignal(backcandles) => upt = true dnt = true for i = 0 to backcandles - 1 if close[i] < vwap[i] upt := false if close[i] > vwap[i] dnt := false if upt and dnt 3 else if upt 2 else if dnt 1 else 0 // Calculate VWAP signal for each bar vwapsignal := calc_vwapsignal(backcandles) // Calculate total signal totalsignal = 0 if vwapsignal == 2 and close <= bb_lower and rsi < 45 totalsignal := 2 else if vwapsignal == 1 and close >= bb_upper and rsi > 55 totalsignal := 1 // Define strategy entry and exit conditions slatr = 1.2 * ta.atr(7) TPSLRatio = 1.5 if (totalsignal == 2 and strategy.opentrades == 0) strategy.entry("Long", strategy.long, stop=close - slatr, limit=close + slatr * TPSLRatio) if (totalsignal == 1 and strategy.opentrades == 0) strategy.entry("Short", strategy.short, stop=close + slatr, limit=close - slatr * TPSLRatio) // Additional exit conditions based on RSI if (strategy.opentrades > 0) if (strategy.position_size > 0 and rsi >= 90) strategy.close("Long") if (strategy.position_size < 0 and rsi <= 10) strategy.close("Short")