Strategi ini menggabungkan tiga indikator teknis: VWAP (Volume Weighted Average Price), RSI (Relative Strength Index), dan Bollinger Bands, untuk menerapkan strategi perdagangan kuantitatif yang sederhana dan mudah digunakan dengan mengambil keuntungan dan stop loss dinamis. Ide utama dari strategi ini adalah menggunakan indikator VWAP untuk menentukan tren harga selama periode yang lalu, sambil menggunakan indikator RSI dan Bollinger Bands untuk menentukan apakah harga berada dalam kisaran overbought atau oversold, sehingga menentukan sinyal perdagangan. Setelah sinyal perdagangan ditentukan, strategi menghitung tingkat take profit dan stop loss dinamis berdasarkan indikator ATR (Average True Range) untuk mengendalikan risiko dan mengunci keuntungan.
Strategi ini menggabungkan tiga indikator teknis: VWAP, RSI, dan Bollinger Bands, untuk menerapkan strategi perdagangan kuantitatif yang sederhana dan mudah digunakan.
/*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")