La estrategia combina los tres indicadores técnicos VWAP (precio medio ponderado por volumen de transacciones), RSI (índice de relative strength) y las bandas de Brin para lograr una estrategia de comercio cuantitativa simple y fácil de usar a través de un stop loss dinámico. La idea principal de la estrategia es usar el indicador VWAP para determinar el movimiento de los precios en el pasado durante un período de tiempo, y al mismo tiempo combinar el indicador RSI y el indicador de las bandas de Brin para determinar si los precios se encuentran en el intervalo de sobrecompra o sobreventa, para así determinar una señal de comercio. Una vez que se determina una señal de comercio, la estrategia calcula el precio de stop loss dinámico en función del indicador ATR (medio real de amplitud) para controlar el riesgo y bloquear los beneficios.
La estrategia, combinando los tres indicadores técnicos VWAP, RSI y Brin, permite una estrategia de comercio cuantitativa simple y fácil de usar. La estrategia adopta un modo de parada y pérdida dinámica que permite controlar eficazmente el riesgo y bloquear las ganancias. A pesar de los riesgos potenciales de la estrategia, se cree que la estrategia puede obtener buenos resultados en el comercio real mediante la configuración de parámetros razonables y la optimización continua.
/*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")