Estrategia VWAP basada en la distancia Z


Fecha de creación: 2023-11-10 12:02:19 Última modificación: 2023-11-10 12:02:19
Copiar: 0 Número de Visitas: 803
1
Seguir
1617
Seguidores

Estrategia VWAP basada en la distancia Z

Descripción general

La estrategia se basa en el indicador de distancia z de VWAP de LazyBear para determinar si se está sobrecomprando o sobrevendido mediante el cálculo del precio y la distancia z de VWAP, y para realizar una salida de salida. La estrategia se agrega a la mediana EMA y al juicio de la distancia z de regreso al eje 0 para filtrar parte de la señal de ruido.

Principio de estrategia

  1. Calcular el valor del VWAP
  2. Calcula la distancia Z entre el precio y el VWAP
  3. Establezca una línea de sobrecompra ((2.5) y una línea de sobreventa ((-0.5))
  4. Cuando la línea rápida es mayor que la línea lenta, la distancia Z es menor que la línea de venta excesiva, y la distancia Z es mayor cuando la línea pasa por el eje 0
  5. Cuando Z está por encima de la línea de compra
  6. Añadir la lógica de stop loss

Funciones clave:

  • calc_zvwap: Calcula la distancia en Z entre el precio y el VWAP
  • Valor de VWAP: vWp (hc3)
  • (Ema es muy cercana, muy rápida)
  • La línea lenta: ema (cercano, lento)

Análisis de las ventajas

  1. El uso de la distancia Z para un análisis más intuitivo de las sobrecompras y las sobreventas
  2. Combinado con filtros falsos de la EMA para evitar ser encubiertos
  3. La tendencia es que las inversiones en el sector de la construcción de viviendas no son rentables.
  4. Tiene lógica de stop loss para controlar el riesgo.

Análisis de riesgos

  1. Asegúrese de que los parámetros se ajusten de manera razonable, como la posición de la línea de venta excesiva, el ciclo EMA, etc.
  2. Z está atrasado en el indicador y puede haber perdido puntos de venta y venta clave
  3. El riesgo de pérdidas aumentará si se permite el alza de posiciones.
  4. La posición de parada de pérdidas necesita una configuración razonable

La solución:

  1. Ajuste de parámetros optimizados por retroalimentación
  2. Combinación de señales de filtro de indicadores adicionales
  3. Establecer condiciones razonables para el alza de riesgo
  4. Ajuste dinámico de la posición de parada

Dirección de optimización

  1. Optimización de los parámetros del ciclo EMA
  2. Prueba de los diferentes criterios para determinar la sobrecompra
  3. Añadir otros indicadores para filtrar la señal de ruido
  4. Prueba de diferentes formas de detener el daño
  5. Optimización de la entrada, la subida de posición y la lógica de parada

Resumir

La estrategia utiliza la distancia Z para determinar la relación entre el precio y el VWAP, en combinación con las señales de ruido de filtración EMA, para capturar oportunidades de tendencia. La estrategia permite el seguimiento de la tendencia de alza, al tiempo que establece el riesgo de control de pérdidas. La optimización de los parámetros y la adición de otros indicadores puede mejorar la estabilidad de la estrategia.

Código Fuente de la Estrategia
/*backtest
start: 2022-11-03 00:00:00
end: 2023-11-09 00:00:00
period: 1d
basePeriod: 1h
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/
// © mohanee

//@version=4
//This is based on Z distance from VWAP by Lazybear
strategy(title="ZVWAP[LB] strategy", overlay=false,pyramiding=2, default_qty_type=strategy.fixed, default_qty_value=3,    initial_capital=10000, currency=currency.USD)
length=input(13,"length")

calc_zvwap(pds, source1) =>
	mean = sum(volume*source1,pds)/sum(volume,pds)
	vwapsd = sqrt(sma(pow(source1-mean, 2), pds) )
	(close-mean)/vwapsd


upperTop=2.5  //input(2.5)
upperBottom=2.0  //input(2.0)
lowerTop=-0.5  //input(-0.5)
lowerBottom=-2.0 //input(-2.0)

buyLine=input(-0.5, title="OverSold Line",minval=-2, maxval=3)
sellLine=input(2.0, title="OverBought Line",minval=-2, maxval=3)

fastEma=input(13, title="Fast EMA",minval=1, maxval=50)
slowEma=input(55, title="Slow EMA",minval=10, maxval=200)

stopLoss =input(5, title="Stop Loss",minval=1) 

hline(0, title="Middle Line", linestyle=hline.style_dotted, color=color.green)

ul1=plot(upperTop, "OB High")
ul2=plot(upperBottom, "OB Low")
fill(ul1,ul2, color=color.red)
ll1=plot(lowerTop, "OS High")
ll2=plot(lowerBottom, "OS Low")
fill(ll1,ll2, color=color.green)
zvwapVal=calc_zvwap(length,close)
plot(zvwapVal,title="ZVWAP",color=color.purple, linewidth=2)


longEmaVal=ema(close,slowEma)
shortEmaVal=ema(close,fastEma)  

vwapVal=vwap(hlc3)


zvwapDipped=false

for i = 1 to 10
    zvwapDipped := zvwapDipped or zvwapVal[i]<=buyLine

longCondition=  shortEmaVal > longEmaVal  and zvwapDipped and  crossover(zvwapVal,0)

barcolor(longCondition ? color.yellow: na)

strategy.entry(id="ZVWAPLE", long=true,  when= longCondition  and strategy.position_size<1) 


//Add
strategy.entry(id="ZVWAPLE", comment="Add", long=true,  when= strategy.position_size>1 and close<strategy.position_avg_price and crossover(zvwapVal,0)) 


//calculate stop Loss
stopLossVal =  strategy.position_avg_price -  (strategy.position_avg_price*stopLoss*0.01)

strategy.close(id="ZVWAPLE",comment="SL Exit",    when=close<stopLossVal)   //close all on stop loss

strategy.close(id="ZVWAPLE",comment="TPExitAll",    qty=strategy.position_size ,   when= crossunder(zvwapVal,sellLine))   //close all      zvwapVal>sellLine