Эта стратегия объединяет индикаторы Bollinger Bands (BB) и Volume Weighted Average Price (VWAP) для принятия решений о входе и выходе.
Стратегия основывается главным образом на следующих правилах въезда и выезда:
Быстрая линия EMA выше медленной линии EMA как предпосылка для оценки тренда
Купить при закрытии цены выше VWAP, указывающего на рост цены
Введите длинный, если цена закрытия упала ниже нижней полосы BB за последние 10 бар, указывающих на аномалию цены
Продавать, когда цена закрытия превышает верхнюю полосу BB, указывающую на изменение цены
В частности, он сначала оценивает, если 50-дневная EMA выше 200-дневной EMA, чтобы определить общую тенденцию. Затем в сочетании с VWAP, чтобы судить, если цена находится в краткосрочном восходящем тренде. Наконец, используя полосы Боллинджера, чтобы обнаружить краткосрочное падение аномалии как возможность входа.
Правило выхода простое, выход, когда цена превышает верхнюю полосу BB, указывающую на изменение цены.
Стратегия сочетает в себе несколько индикаторов для повышения достоверности сигналов входа. Использование EMA для оценки общего тренда позволяет избежать торговли против тренда. VWAP фиксирует краткосрочный подъемный импульс. BB обнаруживает краткосрочные аномалии как сроки входа.
Для смягчения рисков можно корректировать параметры EMA и BB. Проверить различные индикаторы для обнаружения тренда. Использовать VWAP в более короткие сроки. Оптимизировать параметр BB для лучшей пропускной способности.
Стратегия сочетает в себе BB и VWAP для обнаружения краткосрочных аномалий цен в качестве времени входа. Использование EMA для определения общего тренда избегает торговли против тренда. Она может быстро обнаружить краткосрочный импульс. Подходит для внутридневной и краткосрочной торговли. Дальнейшее повышение стабильности и прибыльности путем оптимизации параметров и включения большей логики.
/*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)