
Strategi ini menggabungkan tiga petunjuk teknikal VWAP, RSI, dan Bollinger Bands untuk mewujudkan strategi perdagangan kuantitatif yang mudah dan mudah digunakan dengan cara menghentikan hentian dinamik. Gagasan utama strategi ini adalah menggunakan petunjuk VWAP untuk menilai pergerakan harga dalam tempoh masa yang lalu, dan menggabungkan petunjuk RSI dan Bollinger Bands untuk menentukan sama ada harga berada di antara kawasan yang lebih baik atau lebih baik, untuk menentukan isyarat perdagangan. Setelah isyarat perdagangan ditentukan, strategi ini akan mengira harga hentian dinamik berdasarkan ATR, untuk mengawal risiko dan mengunci keuntungan.
Strategi ini mewujudkan strategi perdagangan kuantitatif yang mudah dan mudah digunakan dengan menggabungkan tiga petunjuk teknikal VWAP, RSI dan Brin. Strategi ini menggunakan cara berhenti dan kehilangan secara dinamik, yang dapat mengawal risiko dan mengunci keuntungan dengan berkesan. Walaupun terdapat beberapa risiko yang berpotensi dalam strategi ini, tetapi dengan penetapan parameter yang munasabah dan pengoptimuman berterusan, yakin bahawa strategi ini dapat memberikan hasil yang baik dalam perdagangan sebenar.
/*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")