Las bandas de volatilidad y la estrategia de negociación de tendencias bursátiles de VWAP en marcos de tiempo múltiples

El autor:¿ Qué pasa?, Fecha: 2024-01-17 16:34:23
Las etiquetas:

img

Esta estrategia calcula la volatilidad del precio ATR y combina diferentes VWAP de período para establecer condiciones de entrada y salida largas para la negociación de tendencias bursátiles.

Resumen de la estrategia

La estrategia se utiliza principalmente para el seguimiento de tendencias de productos de acciones. Al calcular la volatilidad ATR y combinar los precios VWAP de diferentes períodos, establece condiciones de compra y venta para juzgar y rastrear tendencias. La estrategia es lo suficientemente flexible como para cambiar entre largo y corto plazo, adecuada para capturar tendencias a medio y largo plazo.

Estrategia lógica

La estrategia utiliza el indicador ATR para calcular la volatilidad de los precios y juzgar la dirección de la tendencia en función de si el precio rompe el canal de volatilidad. Al mismo tiempo, introduce precios VWAP de diferentes ciclos para determinar la consistencia de las tendencias a largo y corto plazo. La lógica específica es la siguiente:

  1. Calcular el canal de volatilidad ATR del precio
  2. Juzgar si el precio rompe el canal de volatilidad
    1. La ruptura de la barandilla superior indica una tendencia alcista
    2. La ruptura de la barandilla inferior indica una tendencia bajista
  3. Introducción de los precios semanales y diarios del VWAP
    1. Cuando el precio rompe el tren de volatilidad superior, si tanto los VWAP diarios como los semanales están por encima del precio, se genera una señal larga
    2. Cuando el precio se rompe a través del tren de volatilidad inferior, si tanto los VWAP diarios como los semanales están por debajo del precio, se genera una señal corta

La volatilidad del ATR juzga la tendencia a corto plazo y el precio del VWAP juzga la tendencia a largo plazo. Los dos se combinan para determinar la consistencia de la tendencia y, por lo tanto, generar señales comerciales.

Ventajas de la estrategia

  • Utilice una combinación de ATR y VWAP para juzgar las tendencias, más confiable
  • Parámetro de período ATR personalizable para ajustar la sensibilidad de la estrategia
  • Introducción de un VWAP de varios plazos para determinar la consistencia de las tendencias a largo y corto plazo
  • Flexible para cambiar entre largo y corto plazo
  • Adecuado para el seguimiento de las tendencias de las acciones a medio y largo plazo

Riesgos y optimización

  • Como tendencia de la siguiente estrategia, puede generar más operaciones durante la consolidación, lo que conlleva riesgos de deslizamiento
  • La configuración de los parámetros ATR y VWAP afecta al rendimiento de la estrategia, requiere pruebas cuidadosas con diferentes productos
  • Considerar la posibilidad de añadir un stop loss para controlar las pérdidas de una sola operación
  • Puede combinarse con MA y otros indicadores para filtrar las señales de entrada y reducir las operaciones innecesarias

Resumen de las actividades

La estrategia realiza el seguimiento de la tendencia de las acciones a través de la doble confirmación de la volatilidad ATR y VWAP. Hay un amplio margen de optimización mediante el ajuste de parámetros o la incorporación de otros indicadores técnicos.


/*backtest
start: 2023-12-17 00:00:00
end: 2024-01-16 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © exlux99

//@version=4
strategy(title="VWAP MTF STOCK STRATEGY", overlay=true )

// high^2 / 2 - low^2 -2

h=pow(high,2) / 2
l=pow(low,2) / 2

o=pow(open,2) /2
c=pow(close,2) /2


x=(h+l+o+c) / 4
y= sqrt(x)

source = y
useTrueRange = false
length = input(27, minval=1)
mult = input(0, step=0.1)
ma = sma(source, length)
range = useTrueRange ? tr : high - low
rangema = sma(range, length)
upper = ma + rangema * mult
lower = ma - rangema * mult
crossUpper = crossover(source, upper)
crossLower = crossunder(source, lower)
bprice = 0.0
bprice := crossUpper ? high+syminfo.mintick : nz(bprice[1])
sprice = 0.0
sprice := crossLower ? low -syminfo.mintick : nz(sprice[1])
crossBcond = false
crossBcond := crossUpper ? true
     : na(crossBcond[1]) ? false : crossBcond[1]
crossScond = false
crossScond := crossLower ? true
     : na(crossScond[1]) ? false : crossScond[1]
cancelBcond = crossBcond and (source < ma or high >= bprice )
cancelScond = crossScond and (source > ma or low <= sprice )

longOnly = true

fromDay = input(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear = input(defval = 2000, title = "From Year", minval = 1970)
 //monday and session 
// To Date Inputs
toDay = input(defval = 31, title = "To Day", minval = 1, maxval = 31)
toMonth = input(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear = input(defval = 2021, title = "To Year", minval = 1970)

startDate = timestamp(fromYear, fromMonth, fromDay, 00, 00)
finishDate = timestamp(toYear, toMonth, toDay, 00, 00)
time_cond = true

srcX = input(ohlc4)
t = time("W")
start = na(t[1]) or t > t[1]

sumSrc = srcX * volume
sumVol = volume
sumSrc := start ? sumSrc : sumSrc + sumSrc[1]
sumVol := start ? sumVol : sumVol + sumVol[1]

vwapW= sumSrc / sumVol

 
//crossUpper = crossover(source, upper)
//crossLower = crossunder(source, lower)
shortCondition = close < vwap and time_cond and (close < vwapW)
longCondition = close > vwap and time_cond and (close > vwapW)

 


if(longOnly and time_cond)
    if (crossLower and close < vwapW )
        strategy.close("long")
    if (crossUpper and close>vwapW)
        strategy.entry("long", strategy.long, stop=bprice)


Más.