Брейк-аут Болинджер-банды Осилляционная торговая стратегия - это торговая стратегия, когда рынок находится в колеблющемся состоянии. Эта стратегия использует индикатор Болинджер-банды для оценки колебания состояния рынка и посылает торговые сигналы, когда цена касается верхних или нижних рельсов Болинджер-банды. В отличие от традиционных стратегий, следующих за трендом, эта стратегия более подходит для боковых рынков с диапазоном.
Эта стратегия в основном реализуется на основе индикатора полос Боллинджера. Полосы Боллинджера состоят из средней рельсы, верхней рельсы и нижней рельсы. Когда цена приближается к верхней или нижней рельсе, это представляет собой чрезмерный оптимизм или чрезмерный пессимизм на рынке, что означает относительно высокую вероятность переворота.
В частности, эта стратегия сначала использует индикатор DMI для определения того, находится ли рынок в колеблющемся состоянии. Когда разница между +DMI и -DMI меньше 20, рынок считается смещающимся в сторону. При этом условии, идти длинный, когда цена прерывается выше нижней рельсы, и идти короткий, когда цена прерывается ниже верхней рельсы. Точка остановки потери устанавливается вблизи противоположной рельсы.
По сравнению с стратегиями, следующими за трендом, эта стратегия более подходит для рыночных условий, связанных с диапазоном, и не будет терять деньги, преследуя тенденции. По сравнению с традиционными стратегиями торгового колебания, эта стратегия может более точно оценить ситуации с перекуплением и перепродажей на рынке с помощью индикатора полос Боллинджера, тем самым повышая вероятность выхода на рынок.
Эта стратегия в основном опирается на полосы Боллинджера для определения колебаний рынка и условий перекупленности/перепродажи. Когда полосы Боллинджера расходятся или контрактятся ненормально, это может привести к неправильным сигналам. Кроме того, точка остановки близка, поэтому однократная остановка может быть относительно большой. Рекомендуется оптимизировать стратегию остановки с управлением деньгами.
Мы можем рассмотреть возможность комбинирования других индикаторов для фильтрации сигналов входа, таких как RSI и другие осцилляторы, для улучшения точности входа. Кроме того, оптимизация стратегии стоп-лосса также очень важна, чтобы избежать одной большой стоп-лосс. Мы также можем выбрать торговые сорта, которые более подходят для этой стратегии, такие как монеты с низкой рыночной капитализацией.
В целом, эта стратегия подходит для колебания рынков и может быть использована, когда стратегии тренда не работают. Но все еще есть возможность улучшить ее эффективность, оценивая состояние рынка с помощью индикаторов. Мы можем еще больше улучшить эту стратегию методами, такими как комбинации с несколькими индикаторами, управление деньгами и т. Д., Чтобы сделать ее более стабильной и прибыльной.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 4h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(shorttitle='Sideways Strategy DMI + Bollinger Bands',title='Sideways Strategy DMI + Bollinger Bands (by Coinrule)', overlay=true, initial_capital = 100, process_orders_on_close=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100, commission_type=strategy.commission.percent, commission_value=0.1) // Works on ETHUSD 3h, 1h, 2h, 4h //Backtest dates fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12) fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31) fromYear = input(defval = 2021, title = "From Year", type = input.integer, minval = 1970) thruMonth = input(defval = 12, title = "Thru Month", type = input.integer, minval = 1, maxval = 12) thruDay = input(defval = 31, title = "Thru Day", type = input.integer, minval = 1, maxval = 31) thruYear = input(defval = 2022, title = "Thru Year", type = input.integer, minval = 1970) showDate = input(defval = true, title = "Show Date Range", type = input.bool) start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window window() => true [pos_dm, neg_dm, adx] = dmi(14, 14) lengthBB = input(20, minval=1) src = input(close, title="Source") mult = input(2.0, minval=0.001, maxval=50, title="StdDev") basis = sma(src, lengthBB) dev = mult * stdev(src, lengthBB) upper = basis + dev lower = basis - dev offset = input(0, "Offset", type = input.integer, minval = -500, maxval = 500) sideways = (abs(pos_dm - neg_dm) < 20) //Stop_loss= ((input (3))/100) //Take_profit= ((input (2))/100) //longStopPrice = strategy.position_avg_price * (1 - Stop_loss) //longTakeProfit = strategy.position_avg_price * (1 + Take_profit) //closeLong = close < longStopPrice or close > longTakeProfit or StopRSI //Entry strategy.entry(id="long", long = true, when = sideways and (crossover(close, lower)) and window()) //Exit strategy.close("long", when = (crossunder(close, upper)))