Esta estrategia combina las bandas de Bollinger (BB) y los indicadores de precio promedio ponderado por volumen (VWAP) para tomar decisiones de entrada y salida.
La estrategia se basa principalmente en las siguientes normas para la entrada y salida:
Línea de EMA rápida por encima de la línea de EMA lenta como requisito previo para juzgar la tendencia
Comprar cuando el precio de cierre está por encima del VWAP, lo que indica un precio al alza
Introduzca largo si el precio de cierre se ha situado por debajo de la banda inferior BB en las últimas 10 barras, lo que indica una anomalía del precio
Vender cuando el precio de cierre supera la banda superior BB que indica la reversión del precio
Específicamente, primero juzga si la EMA de 50 días está por encima de la EMA de 200 días para determinar la tendencia general. Luego se combina con VWAP para juzgar si el precio está en una tendencia alcista a corto plazo. Finalmente, usando bandas de Bollinger para detectar una caída de anomalía a corto plazo como oportunidad de entrada.
La regla de salida es simple, salida cuando el precio va por encima de la banda superior BB que indica la inversión del precio.
La estrategia combina múltiples indicadores para aumentar la validez de las señales de entrada. El uso de EMA para juzgar la tendencia general evita el comercio contra tendencia. VWAP captura el impulso ascendente a corto plazo. BB detecta anomalías a corto plazo como momento para las entradas.
Para mitigar los riesgos, los parámetros de EMA y BB se pueden ajustar. Prueba diferentes indicadores para la detección de tendencias. Utiliza VWAP en un marco de tiempo más corto. Optimiza el parámetro BB para obtener el mejor ancho de banda.
La estrategia combina BB y VWAP para detectar anomalías de precios a corto plazo como momento de entrada. El uso de EMA para determinar la tendencia general evita el comercio contra tendencia. Puede descubrir rápidamente el impulso a corto plazo. Adecuado para el comercio intradiario y a corto plazo. Mejora aún más la estabilidad y la rentabilidad optimizando los parámetros e incorporando más lógica.
/*backtest start: 2023-12-04 00:00:00 end: 2024-01-03 00:00:00 period: 1h basePeriod: 15m 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 strategy(title="VWAP and BB strategy [EEMANI]", overlay=true,pyramiding=2, default_qty_value=3, default_qty_type=strategy.fixed, initial_capital=10000, currency=currency.USD) //This strategy combines VWAP and BB indicators //BUY RULE //1. EMA50 > EMA 200 //2. if current close > vwap session value //3. check if price dipped BB lower band for any of last 10 candles //EXIT RULE //1. price closes above BB upper band //STOP LOSS EXIT //1. As configured --- default is set to 5% is_price_dipped_bb(pds,source1) => t_bbDipped=false for i=1 to pds t_bbDipped:= (t_bbDipped or close[i]<source1) ? true : false if t_bbDipped==true break else continue t_bbDipped // variables BEGIN shortEMA = input(50, title="fast EMA", minval=1) longEMA = input(200, title="slow EMA", minval=1) //BB smaLength = input(20, title="BB SMA Length", minval=1) bbsrc = input(close, title="BB Source") //addOnDivergence = input(true,title="Add to existing on Divergence") //exitOption = input(title="exit on RSI or BB", type=input.string, options=["RSI", "BB"], defval="BB") //bbSource = input(title="BB source", type=input.string, options=["close", "vwap"], defval="close") //vwap_res = input(title="VWAP Resolution", type=input.resolution, defval="session") stopLoss = input(title="Stop Loss%", defval=5, minval=1) //variables END longEMAval= ema(close, longEMA) shortEMAval= ema(close, shortEMA) vwapVal=vwap(close) // Drawings //plot emas plot(longEMAval, color = color.orange, linewidth = 1, transp=0) plot(shortEMAval, color = color.green, linewidth = 1, transp=0) //bollinger calculation mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(bbsrc, smaLength) dev = mult * stdev(bbsrc, smaLength) upperBand = basis + dev lowerBand = basis - dev offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500) //bollinger calculation //plot bb //plot(basis, "Basis", color=#872323, offset = offset) p1 = plot(upperBand, "Upper", color=color.teal, offset = offset) p2 = plot(lowerBand, "Lower", color=color.teal, offset = offset) fill(p1, p2, title = "Background", color=#198787, transp=95) plot(vwapVal, color = color.purple, linewidth = 1, transp=0) // Colour background barcolor(shortEMAval>longEMAval and close<=lowerBand ? color.yellow: na) //longCondition= shortEMAval > longEMAval and close>open and close>vwapVal longCondition= shortEMAval >= longEMAval and close>=vwapVal and close>open // close>vwapVal and //Entry strategy.entry(id="VWAP_BB LE", comment="VB LE" , long=true, when= longCondition and is_price_dipped_bb(10,lowerBand) ) //and strategy.position_size<1 //add to the existing position //strategy.entry(id="VWAP_RSI LE", comment="VR LE Add" , long=true, when= addOnDivergence==true and strategy.position_size>=1 and close<strategy.position_avg_price and (close<lowerBand or low<lowerBand) and rsiVal>rsi_buy_line) barcolor(strategy.position_size>=1 ? color.blue: na) strategy.close(id="VWAP_BB LE", comment="TP Exit VB LE", when=crossover(close,upperBand) ) //stoploss stopLossVal = strategy.position_avg_price * (1-(stopLoss*0.01) ) strategy.close(id="VB LE", comment="SL Exit", when= close < stopLossVal)