
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 bằng cách dừng dừng động. Ý tưởng chính của chiến lược là sử dụng chỉ số VWAP để đánh giá giá cả trong một khoảng thời gian qua, đồng thời kết hợp chỉ số RSI và Bollinger Bands để đánh giá giá cả trong phạm vi quá mua hoặc quá bán, để 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à Brin để 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 sử dụng cách dừng dừng động để kiểm soát rủi ro và khóa lợi nhuận một cách hiệu quả. Mặc dù có một số rủi ro tiềm ẩn trong chiến lược, nhưng bằng cách đặt tham số hợp lý và tối ưu hóa liên tục, chúng tôi tin rằng chiến lược này có thể có hiệu 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")