
La estrategia se basa en VWAP y EMA como indicadores para determinar la dirección de la tendencia, VWAP representa el precio típico y EMA200 representa la tendencia de la línea media. Hacer más cuando el precio es superior a VWAP y EMA200 y hacer menos cuando es inferior a VWAP y EMA200 es una estrategia típica de seguimiento de la tendencia.
La lógica central de la estrategia es usar VWAP y EMA para determinar la tendencia de los precios.
Por lo tanto, la estrategia primero determina si el precio es superior al VWAP y al EMA200 al mismo tiempo, y si es así, hace más; si el precio es inferior al VWAP y al EMA200 al mismo tiempo, hace nada. Como se puede ver, la estrategia depende principalmente de VWAP y EMA para determinar las decisiones de compra y venta.
Además, la estrategia también establece un punto de parada y pérdida. El punto de parada se establece en el 3.5% del precio de entrada después de hacer más, y el punto de parada en el 1.4%; el punto de parada se establece en el 2.5% del precio de entrada después de hacer menos, y el punto de parada en el 0.9% . Esto evita pérdidas excesivas.
La mayor ventaja de esta estrategia es que se puede usar VWAP y EMA para determinar tendencias de manera muy fiable.
Por lo tanto, la combinación de VWAP y EMA para determinar la tendencia es muy confiable. Cuando ambos juzgan la tendencia de manera consistente, la tasa de éxito de la operación es alta.
Además, el establecimiento de un punto de parada para evitar pérdidas individuales excesivas.
El principal riesgo de esta estrategia es que VWAP y EMA podrían emitir señales erróneas.
Además, la configuración de stop loss puede ser incorrecta y el riesgo de pérdidas excesivas permanece.
Para resolver el problema anterior, podemos optimizar la configuración de los parámetros de VWAP y EMA para que sean más capaces de discernir el comienzo de una nueva tendencia. Al mismo tiempo, se puede configurar un stop loss adaptativo para que el stop loss se ajuste a la fluctuación del precio.
La estrategia se puede optimizar principalmente en los siguientes aspectos:
La estrategia en su conjunto es una estrategia de seguimiento de tendencias muy fiable. Utiliza VWAP y EMA para determinar la dirección de la tendencia, la idea es clara y simple, y la probabilidad de éxito de la entrada es alta cuando ambos emiten señales consistentes.
/*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")