VWAP-RSI Estrategia corta sobrevendida en el marco de la estrategia cruzada de BTC

El autor:¿ Qué pasa?, Fecha: 2023-12-29 14:12:54
Las etiquetas:

img

Resumen general

Esta es una estrategia corta de BTC a través de marcos de tiempo basados en el indicador RSI de VWAP. Calcula el Precio Promedio ponderado por volumen (VWAP) de cada candelabro para obtener una curva VWAP, y luego aplica el indicador RSI a la curva. Cuando el indicador RSI cruza hacia abajo desde la zona de sobrecompra, se corta en BTC.

Estrategia lógica

  1. Calcular el VWAP de cada candelabro para obtener una curva VWAP
  2. Aplicar el indicador RSI a la curva VWAP, con duración de 20 días, nivel de sobrecompra a 85 y nivel de sobreventa a 30
  3. Cuando el RSI cruce hacia abajo desde la zona de sobrecompra (85) a la zona de sobreventa (30), abra una posición corta
  4. Posición cerrada después de haber mantenido 28 candlesticks, o si el RSI vuelve a cruzar la línea de sobreventa (30)

Análisis de ventajas

  1. Utilice VWAP en lugar del precio de cierre simple para reflejar el precio de negociación real
  2. Identificar el estado de sobrecompra/sobreventa con el RSI para evitar comprar alto y vender bajo
  3. Comercio a través de marcos de tiempo para evitar quedar atrapados
  4. El riesgo controlado con 28 candelabros de stop loss

Riesgos y soluciones

  1. El precio sube rápidamente debido a los eventos del cisne negro, incapaz de detener la pérdida.
    • Adoptar el comercio a través de marcos de tiempo para reducir los riesgos de quedar atrapados
  2. Ajustes de parámetros inadecuados, fácilmente perder oportunidades
    • Prueba y optimización de los parámetros del RSI y de los niveles de sobrecompra/sobreventa
  3. RSI no puede cruzar a la zona de sobreventa
    • Combinar con otros indicadores para determinar la tendencia, ajustar los parámetros con flexibilidad

Direcciones de optimización

  1. Prueba más combinaciones de parámetros para encontrar el óptimo
  2. Combinar con MACD, KD, etc. para juzgar el estado de sobrecompra/sobreventa
  3. Configuración de parámetros de ensayo por separado para diferentes activos
  4. Optimizar el mecanismo de stop loss, establecer el rango de stop loss basado en la volatilidad

Resumen de las actividades

Esta estrategia identifica el estado de sobrecompra / sobreventa de BTC con la combinación de VWAP y RSI. Al operar a través de marcos de tiempo, puede controlar eficazmente los riesgos. La lógica de la estrategia es clara y fácil de entender, vale la pena probar y optimizar para el comercio en vivo.


/*backtest
start: 2023-12-21 00:00:00
end: 2023-12-28 00:00:00
period: 1m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/


//@version=4

strategy("Soran Strategy 2 - SHORT SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)


// ----------------- Inputs ----------------- //

reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).

// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28


stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)

stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)


// --------------- Laguerre ----------------- //

laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")

laguerre_cal(s,g) =>
    l0 = 0.0
    l1 = 0.0
    l2 = 0.0
    l3 = 0.0
    l0 := (1 - g)*s+g*nz(l0[1])
    l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
    l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
    l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
    (l0 + 2*l1 + 2*l2 + l3)/6


// ---------------- Rsi VWAP ---------------- //

rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))

rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV


// ------------------ Plots ----------------- //

prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)


// ---------------- Positions: only shows the Short and close shoret positions --------------- //

timebull = stratbull and time > stratstart
timebear = stratbear and time > stratstart


strategy.entry("Short", false, when = timebear and crossunder(rsiVWAP, ovrbgt), comment="")
strategy.close("Short", when = timebear and crossunder(rsiVWAP, ovrsld)[lateleave] or crossover(rsiVWAP, ovrsld), comment="")

Más.