Estrategia de negociación de VWAP en el canal de precios

El autor:¿ Qué pasa?, Fecha: 2024-02-19 14:25:18
Las etiquetas:

img

Resumen general

Esta estrategia se llama Price Channel VWAP Trading Strategy. Es una estrategia que implementa la negociación VWAP basada en los canales de precios. La idea principal de esta estrategia es: dentro del canal de precios, utilizar la línea promedio móvil del indicador VWAP y sus líneas de canal de desplazamiento superior e inferior para el juicio de puntos de compra y venta. Cuando las líneas de canal se rompen, abrir posiciones de acuerdo con el porcentaje fijo de los activos totales, y cerrar posiciones cuando los precios regresan a la línea promedio móvil VWAP.

Principio de la estrategia

Esta estrategia calcula el precio promedio de transacción actual a través del indicador VWAP. VWAP representa el precio promedio y es la relación entre la facturación y el volumen de operaciones. El indicador VWAP refleja el grado de desviación entre el precio actual y el precio promedio histórico de negociación.

La estrategia utiliza la línea media móvil del indicador VWAP y sus líneas de canal desplazadas. Las proporciones de las líneas de canal desplazadas se establecen a través de los parámetros longlevel1 y shortlevel1. Cuando el precio rompe la línea superior del canal desplazado, abra posiciones largas de acuerdo con el porcentaje de posiciones establecidas por el parámetro lotsizelong; cuando el precio rompe la línea inferior del canal desplazado, abra posiciones cortas de acuerdo con el porcentaje de posiciones establecidas por el parámetro lotsizeshort. Después de abrir las posiciones, elija cerrar posiciones cuando los precios regresen alrededor de la línea media móvil VWAP.

Los usuarios pueden ajustar el ancho del canal y el tamaño de las posiciones como porcentaje del total de activos de acuerdo con sus propias preferencias, logrando así diferentes grados de frecuencia de negociación.

Análisis de ventajas

Esta estrategia comercial tiene las siguientes ventajas:

  1. El uso de indicadores VWAP para determinar los puntos medios de valor puede capturar la dirección del mercado general
  2. El comercio dentro de los rangos de canales evita las interferencias acústicas para un funcionamiento más claro
  3. La combinación de canales de diferentes niveles, el despliegue en lotes reduce el riesgo
  4. La obtención oportuna de beneficios por regresión evita las pérdidas causadas por inversiones rápidas

Dado que el indicador VWAP puede reflejar bien el nivel promedio de precios, el comercio basado en sus líneas de canal puede bloquear efectivamente los puntos medios de valor y evitar ser sesgado por las fluctuaciones a corto plazo. Al mismo tiempo, la combinación de canales con diferentes parámetros y la construcción de posiciones en lotes pueden controlar eficazmente los riesgos y prevenir concentraciones de riesgo unilaterales que resultan en liquidaciones forzadas. Por último, al cerrar las posiciones cerca de la regresión de la línea promedio móvil VWAP, se pueden reducir las pérdidas causadas por las reversiones de precios.

Análisis de riesgos

Esta estrategia también tiene algunos riesgos:

  1. El indicador VWAP no es sensible a las operaciones de alta frecuencia y no puede reflejar anomalías extremas de precios.
  2. La configuración incorrecta de los parámetros de anchura del canal puede conducir a una negociación demasiado agresiva
  3. Si el rango de operaciones de regresión para cerrar posiciones es demasiado amplio, puede causar pérdidas atrapadas.

El indicador VWAP es insensible a la volatilidad de las operaciones de alta frecuencia. En caso de brechas de precios extremas o anomalías a corto plazo, todavía desencadenará señales y pérdidas comerciales innecesarias. Además, si los parámetros del canal se establecen demasiado sueltos, formará fácilmente señales de penetración de precios inválidas. Finalmente, si el rango de posiciones que se cierran en operaciones de regresión se establece demasiado amplio, puede perder el mejor momento para obtener ganancias y causar pérdidas atrapadas.

Las contramedidas consisten en evaluar razonablemente la configuración de los parámetros y ajustar adecuadamente los parámetros de los canales; al tiempo que se combinan otros indicadores para juzgar las anomalías de los precios y evitar seguir ciegamente las señales; y, finalmente, evaluar la optimización de parámetros de canales de diferentes niveles y rangos de regresión para lograr mejores efectos de obtención de beneficios.

Direcciones de optimización

Esta estrategia se puede optimizar en las siguientes direcciones:

  1. Aumentar el nivel de canales y optimizar las combinaciones de parámetros
  2. Combinar indicadores de volumen de operaciones para determinar la validez de los avances
  3. Añadir estrategias de stop loss y establecer el stop loss por el ratio de extracción

Se pueden agregar más niveles de líneas de canal y se pueden combinar parámetros para la optimización para lograr efectos comerciales más estables. Además, se pueden agregar reglas de juicio de volumen de negociación para evitar brechas de precios inválidas que causan pérdidas comerciales. Finalmente, también se pueden establecer reglas de stop loss para que cuando la pérdida de posiciones alcance un cierto porcentaje, se elimine la pérdida de las posiciones de salida, controlando efectivamente los riesgos.

Resumen de las actividades

Esta estrategia combina el indicador VWAP con los canales de precios para lograr una estrategia comercial relativamente estable. Las configuraciones de parámetros de la estrategia son flexibles para que los usuarios puedan ajustarse de acuerdo con sus propias preferencias. Esta estrategia puede determinar efectivamente la dirección de los puntos medios de valor. A través de la combinación de parámetros y la construcción por lotes de posiciones, se puede lograr una rentabilidad estable. Aunque todavía hay margen de mejora en la estrategia, en general es una estrategia comercial cuantitativa con una alta practicidad.


/*backtest
start: 2023-02-12 00:00:00
end: 2024-02-18 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy(title = "VWAP Bands Backtest", shorttitle = "VWAP Bands Backtest", overlay = true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, pyramiding = 3)

//Settings
lotsizelong = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot long, %")
lotsizeshort = input(100, defval = 100, minval = 0, maxval = 10000, title = "Lot short, %")
short1 = input(true, title = "short 1")
long1 = input(true, title = "long 1")
shortlevel1 = input(1.0, title = "Short line 1")
longlevel1 = input(-1.0, title = "Long line 1")
needoffset = input(true, title = "Offset")

fromyear = input(1900, defval = 1900, minval = 1900, maxval = 2100, title = "From Year")
toyear = input(2100, defval = 2100, minval = 1900, maxval = 2100, title = "To Year")
frommonth = input(01, defval = 01, minval = 01, maxval = 12, title = "From Month")
tomonth = input(12, defval = 12, minval = 01, maxval = 12, title = "To Month")
fromday = input(01, defval = 01, minval = 01, maxval = 31, title = "From day")
today = input(31, defval = 31, minval = 01, maxval = 31, title = "To day")

//Variables
size = strategy.position_size
mult = 1 / syminfo.mintick
truetime = true

//VWAP
ma = vwap(hlc3)

//Levels
longline1 = long1 ? round(ma * ((100 + longlevel1) / 100) * mult) / mult : close
shortline1 = short1? round(ma * ((100 + shortlevel1) / 100) * mult) / mult : close


//Lines
colorlong1 = long1 ? color.lime : na
colorshort1 = short1 ? color.red : na
offset = needoffset ? 1 : 0
plot(shortline1, offset = offset, color = colorshort1, title = "Short line 1")
plot(ma, offset = offset, color = color.blue, title = "MA line")
plot(longline1, offset = offset, color = colorlong1, title = "Long line 1")


//Trading
lotlong = 0.0
lotshort = 0.0
lotlong := size == 0 ? (strategy.equity / close) * (lotsizelong / 100) : lotlong[1]
lotshort := size == 0 ? (strategy.equity / close) * (lotsizeshort / 100) : lotshort[1]


if ma > 0
    if lotlong > 0
        lotslong = 0.0
        lotslong := strategy.position_size > 0 ? round(strategy.position_size / lotlong) : 0.0
        strategy.entry("L1", strategy.long, lotlong, limit = longline1, when = (lotslong == 0 and long1 and truetime))
    if lotshort > 0
        lotsshort = 0.0
        lotsshort := strategy.position_size < 0 ? round(strategy.position_size / lotshort) : 0.0
        strategy.entry("S1", strategy.short, lotshort, limit = shortline1, when = (lotsshort == 0 and short1 and truetime))
if strategy.position_size > 0
    strategy.exit("TPL", "L1", limit = ma)
if strategy.position_size < 0
    strategy.exit("TPS", "S1", limit = ma)
if time > timestamp(toyear, tomonth, today, 23, 59)
    strategy.close_all()
    strategy.cancel("L1")
    strategy.cancel("S1")
    strategy.cancel("TPL")
    strategy.cancel("TPS")

Más.