Esta estrategia utiliza el VWAP (Volume Weighted Average Price) desde el marco de tiempo diario como una señal para entrar y salir de las operaciones. Cuando el precio de cierre cruza por encima del VWAP, desencadena una entrada larga con el stop loss establecido en los candle's bajos anteriores si está por debajo del VWAP, y el precio objetivo establecido 3 puntos por encima del precio de entrada. Por el contrario, cuando el precio de cierre cruza por debajo del VWAP, desencadena una entrada corta con el stop loss establecido en los candle's altos anteriores si está por encima del VWAP, y el precio objetivo establecido 3 puntos por debajo del precio de entrada. Esta estrategia no incluye una condición de salida, por lo que las operaciones permanecen abiertas hasta que ocurra la señal opuesta.
Mediante el uso de datos VWAP de intervalos temporales para determinar las tendencias y aprovechar las pérdidas de parada dinámicas y las ganancias de toma de puntos fijos, la estrategia puede capturar eficazmente los mercados de tendencia, controlar los riesgos de retirada y asegurar las ganancias a tiempo.
Esta estrategia utiliza datos VWAP de intervalo de tiempo para la determinación de tendencias y el desencadenamiento de señales, mientras que emplea pérdidas de parada dinámicas y puntos fijos para obtener ganancias para controlar los riesgos y bloquear las ganancias. Es una estrategia de negociación cuantitativa simple y efectiva. A través de optimizaciones en el filtrado de tendencias, la toma dinámica de ganancias, el tamaño de posiciones y la selección de sesiones de negociación, la robustez y el potencial de ganancias de la estrategia se pueden mejorar aún más. Sin embargo, al aplicar la estrategia en la práctica, se debe prestar atención a las características del mercado, los costos de negociación y la optimización de parámetros para lograr una mejor estrategia de rendimiento.
/*backtest start: 2024-03-06 00:00:00 end: 2024-03-07 00:00:00 period: 45m basePeriod: 5m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy('Pine Script Tutorial Example Strategy 1', overlay=true, initial_capital=1000, default_qty_value=100, default_qty_type=strategy.percent_of_equity) // fastEMA = ta.ema(close, 24) // slowEMA = ta.ema(close, 200) // Higher Time Frame float sl = na float tgt = na posSize = 1 vwap_1d = request.security(syminfo.tickerid, "1D", ta.vwap(close)) // plot(vwap_1d) // To avoid differences on historical and realtime bars, you can use this technique, which only returns a value from the higher timeframe on the bar after it completes: // indexHighTF = barstate.isrealtime ? 1 : 0 // indexCurrTF = barstate.isrealtime ? 0 : 1 // nonRepaintingVWAP = request.security(syminfo.tickerid, "1D", close[indexHighTF])[indexCurrTF] // plot(nonRepaintingVWAP, "Non-repainting VWAP") enterLong = ta.crossover(close, vwap_1d) exitLong = ta.crossunder(close, vwap_1d) enterShort = ta.crossunder(close, vwap_1d) exitShort = ta.crossover(close, vwap_1d) if enterLong sl := low[1]>vwap_1d ?low[1]:vwap_1d tgt:=close+3 strategy.entry("EL", strategy.long, qty=posSize) strategy.exit('exitEL', 'EL', stop=sl, limit=tgt) if enterShort sl := high[1]<vwap_1d ?high[1]:vwap_1d tgt := close-3 strategy.entry("ES", strategy.short, qty=posSize) strategy.exit('exitES', 'ES', stop=sl, limit=tgt) // if exitLong // strategy.close("EL") // if exitShort // strategy.close("ES") // goLongCondition1 = ta.crossover(close, vwap_1d) // timePeriod = time >= timestamp(syminfo.timezone, 2021, 01, 01, 0, 0) // notInTrade = strategy.position_size <= 0 // if goLongCondition1 and timePeriod and notInTrade // stopLoss = low[1] // takeProfit = close+3 // strategy.entry('long', strategy.long) // strategy.exit('exit', 'long', stop=stopLoss, limit=takeProfit) plot(close, color=color.new(#00c510, 0)) plot(vwap_1d, color=color.new(#f05619, 0)) plot(sl, color=color.new(#fbff00, 0)) plot(tgt, color=color.new(#00e1ff, 0))