Tendencia del VWAP siguiendo la estrategia

El autor:¿ Qué pasa?, Fecha: 2024-02-29 15:26:56
Las etiquetas:

img

Resumen general

Esta estrategia utiliza VWAP y EMA como indicadores para determinar la dirección de la tendencia. Va largo cuando el precio está por encima de VWAP y EMA200, y va corto cuando el precio está por debajo de VWAP y EMA200.

Estrategia lógica

La lógica central de la estrategia consiste en utilizar el VWAP y la EMA para juzgar la tendencia de los precios.

  • VWAP representa el precio típico y refleja el costo promedio de los participantes en el mercado. Cuando el precio está por encima de VWAP, significa que el poder de compra aumenta y debe ir largo. Cuando el precio está por debajo de VWAP, significa que el poder de venta se fortalece y debe ir corto.

Por lo tanto, esta estrategia primero juzga si el precio está por encima de VWAP y EMA200, si sí, entonces vaya largo; si el precio está por debajo de VWAP y EMA200, entonces vaya corto.

Además, la estrategia también establece puntos de toma de ganancias y stop loss. Después de ir largo, el TP se establece en el 3.5% del precio de entrada y SL se establece en el 1.4% del precio de entrada. Después de ir corto, el TP es el 2.5% del precio de entrada y SL es el 0.9% del precio de entrada. Esto evita grandes pérdidas.

Ventajas

La mayor ventaja de esta estrategia es que el uso de VWAP y EMA para determinar las tendencias es muy fiable.

  • El VWAP puede reflejar con precisión el coste medio de los participantes en el mercado, es un indicador muy bueno para juzgar las tendencias.
  • El EMA200 puede reflejar claramente la tendencia a medio y largo plazo y determinar con gran precisión la dirección de las principales tendencias.

Por lo tanto, la combinación de VWAP y EMA para juzgar las tendencias es altamente confiable.

Además, el establecimiento de TP/SL evita pérdidas excesivas por operación.

Los riesgos

El principal riesgo de esta estrategia es que el VWAP y la EMA puedan dar señales erróneas.

  • Cuando hay violentas fluctuaciones del mercado, el precio puede desviarse del VWAP a corto plazo y dar señales erróneas.
  • Cuando una nueva tendencia acaba de comenzar, la EMA puede retrasarse en el cambio de precio y causar la falta del mejor momento de entrada.

Además, la configuración incorrecta de TP/SL sigue planteando el riesgo de pérdidas excesivas por operación.

Para resolver los problemas anteriores, podemos optimizar los parámetros de VWAP y EMA para hacerlos mejores en la detección del comienzo de nuevas tendencias.

Mejoramiento

Los principales aspectos para mejorar esta estrategia:

  • Optimizar los parámetros de VWAP para encontrar ajustes más estables para determinar las tendencias.
  • Optimizar los períodos de EMA para encontrar ajustes más precisos para juzgar las tendencias.
  • Añadir otros indicadores de tendencia como bandas de Bollinger, KDJ, etc. para combinar con VWAP y EMA, para mejorar la precisión.
  • Establecer la toma de ganancias y el stop loss adaptativos basados en ciertas reglas para ajustarlos dinámicamente de acuerdo con la fluctuación de precios.
  • Incorporar el tamaño de las posiciones basado en el aprovechamiento, las pérdidas consecutivas, etc., para controlar el riesgo global.

Conclusión

En conclusión, esta es una estrategia de seguimiento de tendencia muy confiable. Utiliza una lógica simple de VWAP y EMA para determinar las direcciones de tendencia. Cuando ambos indicadores dan señales consistentes, la tasa de éxito es muy alta. Al establecer el TP / SL adecuado, el riesgo se puede controlar. Todavía hay muchas maneras (optimización de parámetros, adición de indicadores, TP / SL adaptativo, dimensionamiento de posición, etc.) para mejorar aún más esta estrategia y hacer que su rendimiento sea aún mejor.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//26m Binance BTCUSDTPERP
//@version=4
strategy("VWAP Trend Follower", initial_capital=100, overlay=true, commission_type=strategy.commission.percent, commission_value=0.04, default_qty_type = strategy.percent_of_equity, default_qty_value = 90, currency = currency.USD )

/// INITIALISE STRATEGY ///
price=close[1]
vprice=vwap(price)
trend=ema(price, 200)

/// RISK MANAGEMENT ///
long_tp_inp = input(3.5, title='Long Take Profit %',step=0.1)/100
long_sl_inp = input(1.4, title='Long Stop Loss %',step=0.1)/100
short_tp_inp = input(2.5, title='Short Take Profit %',step=0.1)/100
short_sl_inp = input(0.9, title='Short Stop Loss %',step=0.1)/100
long_take_level = strategy.position_avg_price * (1 + long_tp_inp)
long_stop_level = strategy.position_avg_price * (1 - long_sl_inp)
short_take_level = strategy.position_avg_price * (1 - short_tp_inp)
short_stop_level = strategy.position_avg_price * (1 + short_sl_inp)
//long_trailing = input(5, title='Trailing Stop Long',step=0.1) / 100
//short_trailing = input(5, title='Trailing Stop short',step=0.1) / 100

/// STRATEGY CONDITIONS ///
aLong= price > trend and price > vprice
entry_long = aLong and aLong[2] and aLong[1]
aShort= price < trend and price < vprice 
entry_short = aShort and aShort[2] and aShort[1]
//exit_long = 
//exit_short =
//entry_price_long=valuewhen(entry_long,close,0)
//entry_price_short=valuewhen(entry_short,close,0)

/// PLOTTING ///
plot(vprice,                color=#5875E1, linewidth=2)
plot(trend,                 color=#D965E1, linewidth=1)
plotshape(series=aLong,     color=#71E181,style=shape.labelup)
plotshape(series=aShort,    color=#E18BA5,style=shape.labeldown)
//plot(long_take_level,     color=#00E676, linewidth=2)
//plot(long_stop_level,     color=#FF5252, linewidth=1)
//plot(short_take_level,    color=#4CAF50, linewidth=2)
//plot(short_stop_level,    color=#FF5252, linewidth=1)

/// PERIOD ///
testStartYear   = input(2019, "Backtest Start Year")
testStartMonth  = input(1, "Backtest Start Month")
testStartDay    = input(1, "Backtest Start Day")
testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0)
testStopYear    = input(2020, "Backtest Stop Year")
testStopMonth   = input(12, "Backtest Stop Month")
testStopDay     = input(31, "Backtest Stop Day")
testPeriodStop  = timestamp(testStopYear,testStopMonth,testStopDay,0,0)
testPeriod() => true

//// STRATEGY EXECUTION ////

if testPeriod()
    if strategy.position_size == 0 or strategy.position_size > 0
        strategy.entry(id="Long", long=true, when=entry_long, comment="Long")
        strategy.exit("Take Profit/ Stop Loss","Long", limit=long_take_level, stop=long_stop_level,comment="Exit Long")//,trail_points=entry_price_long * long_trailing / syminfo.mintick, trail_offset=entry_price_long * long_trailing / syminfo.mintick)
//        strategy.close(id="Long", when=exit_long, comment = "Exit Long")

    if strategy.position_size == 0 or strategy.position_size < 0
        strategy.entry(id="Short", long=false, when=entry_short, comment = "Short")
        strategy.exit("Take Profit/ Stop Loss","Short", limit=short_take_level , stop=short_stop_level,comment = "Exit Short")//, trail_points=entry_price_short * short_trailing / syminfo.mintick, trail_offset=entry_price_short * short_trailing / syminfo.mintick)
//        strategy.close(id="Short", when=exit_short, comment = "Exit Short")

Más.