This strategy combines Bollinger Bands (BB) and Volume Weighted Average Price (VWAP) indicators to make entry and exit decisions. It can discover short-term price anomalies for trading and is suitable for short-term trading.
The strategy is mainly based on the following rules for entry and exit:
Fast EMA line above slow EMA line as prerequisite for judging trend
Buy when close price above VWAP indicating upward price
Enter long if close price dipped below BB lower band in last 10 bars indicating price anomaly
Sell when close price goes above BB upper band indicating price reversal
Specifically, it first judges if 50-day EMA is above 200-day EMA to determine the overall trend. Then combined with VWAP to judge if price is in a short-term uptrend. Finally using Bollinger Bands to detect short-term anomaly drop as entry opportunity.
The exit rule is simple, exit when price goes above BB upper band indicating price reversal.
The strategy combines multiple indicators to increase validity of entry signals. Using EMAs to judge overall trend avoids trading against trend. VWAP captures short-term upward momentum. BB detects short-term anomalies as timing for entries.
To mitigate the risks, parameters of EMA and BB can be adjusted. Test different indicators for trend detection. Use VWAP in lower timeframe. Optimize BB parameter for best bandwidth.
The strategy combines BB and VWAP to detect short-term price anomalies as entry timing. Using EMAs to determine overall trend avoids trading against trend. It can quickly discover short-term momentum. Suitable for intraday and short-term trading. Further enhance stability and profitability by optimizing parameters and incorporating more logic.
/*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)