
Esta estrategia permite el seguimiento de la tendencia de las acciones mediante el cálculo de la volatilidad del precio ATR, combinado con el promedio de VWAP de diferentes períodos, y el establecimiento de condiciones de entrada y salida de posiciones largas.
La estrategia se aplica principalmente para el seguimiento de tendencias de productos de tipo equitativo, mediante el cálculo de la volatilidad de ATR y la combinación de los precios VWAP de diferentes períodos, para establecer condiciones de compra y venta, para el juicio y seguimiento de la tendencia. La estrategia es más flexible, se puede cambiar entre la línea larga y la línea corta, para capturar la tendencia de la línea media y larga.
La estrategia utiliza el indicador ATR para calcular la volatilidad de los precios, y en combinación con la dirección de la tendencia para determinar si los precios rompen el canal de la volatilidad. Al mismo tiempo, se introduce el precio VWAP de diferentes períodos para determinar la consistencia de la tendencia de las líneas largas y cortas. La lógica específica es la siguiente:
Esta es la lógica central de la estrategia. La volatilidad de la tasa ATR determina la tendencia a corto plazo, y el precio VWAP determina la tendencia a largo plazo, que se combinan para determinar la consistencia de la tendencia y generar una señal de negociación.
Esta estrategia permite el seguimiento de las tendencias de las acciones a través de la doble determinación de la volatilidad de ATR y VWAP. La estrategia tiene un gran espacio para optimizar, puede ajustar los parámetros o agregar señales de optimización de otros indicadores técnicos. En general, la lógica de la estrategia es clara y fácil de entender, tiene un rendimiento sólido y es adecuada para seguir las tendencias de la línea media y larga.
/*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)