
La stratégie combine trois indicateurs techniques: VWAP (prix moyen pondéré), RSI (indice relativement faible) et Bollinger Bands pour réaliser une stratégie de trading quantifiée simple et facile à utiliser par le biais d’un stop-loss dynamique. L’idée principale de la stratégie est d’utiliser l’indicateur VWAP pour déterminer la tendance du prix au cours de la période précédente, tout en combinant l’indicateur RSI et l’indicateur Bollinger Bands pour déterminer si le prix est en zone de survente ou de survente, afin de déterminer un signal de négociation.
La stratégie, combinant trois indicateurs techniques, VWAP, RSI et Brin, permet d’obtenir une stratégie de trading quantitative simple et facile à utiliser. La stratégie utilise un arrêt et une perte dynamiques pour contrôler efficacement les risques et verrouiller les bénéfices. Bien que la stratégie présente certains risques potentiels, il est certain qu’elle peut être efficace dans les transactions réelles grâce à des paramètres raisonnables et à une optimisation continue.
/*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")