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.
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.
La mayor ventaja de esta estrategia es que el uso de VWAP y EMA para determinar las tendencias es muy fiable.
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.
El principal riesgo de esta estrategia es que el VWAP y la EMA puedan dar señales erróneas.
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.
Los principales aspectos para mejorar esta estrategia:
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")