Стратегия разворота тренда на основе полос Боллинджера


Дата создания: 2023-11-01 11:29:34 Последнее изменение: 2023-11-01 11:29:34
Копировать: 0 Количество просмотров: 702
1
Подписаться
1617
Подписчики

Стратегия разворота тренда на основе полос Боллинджера

Обзор

Эта стратегия основана на показателях и движущихся средних по Бринскому поясу, чтобы определить, является ли цена близкой к поясу Бринского пояса, чтобы сделать длинную или короткую позицию, чтобы получить прибыль. Когда цена прорывает пояса Бринского пояса, она смотрит вниз; когда цена падает вниз, она смотрит вверх.

Принципы

Эта стратегия основана на двух ключевых сигналах:

  1. Многоголовый сигнал: когда цена закрытия касается нижней линии, и цена закрытия выше средней линии EMA, предыдущий объект K-линии является отрицательным, а текущий объект K-линии - положительным.

  2. Пустой сигнал: когда цена закрытия касается верхней линии, и цена закрытия ниже средней линии EMA, предыдущий объект K-линии является солнечной линией, а текущий объект K-линии - отрицательной линией, пустота.

Стойкость: фиксированная стоп-стоп. Стоп-стоп - это коэффициент риска-возврата, который в несколько раз превышает отступ от стартовой цены до дистанции от противника.

Метод остановки: цель - выйти на ворота противника. Это означает, что вы делаете много остановок вниз, а пустые остановки вверх.

Преимущества

  1. В сочетании с преимуществами трендовых и реверсивных стратегий, они лучше всего работают в условиях колебаний тренда.

  2. Используйте индикатор Брин-Бенда, чтобы определить зоны перепродажи, чтобы точно определить вероятность обратного пути.

  3. Фиксированные точки стоп-лосса устанавливаются разумно и помогают контролировать риск.

  4. Мобильные блокировки позволяют максимизировать прибыль.

Риск

  1. Поскольку в стратегиях прорыва есть риск арбитража, следует быть осторожным с поддельными прорывами.

  2. В случае чрезмерного колебания ситуации, стоп-лоши могут часто вызываться.

  3. Фиксированные стоп-лозы не могут корректироваться в зависимости от рыночных колебаний и могут быть слишком мягкими или слишком радикальными.

  4. Если параметры Брин-пояса не будут установлены вовремя, то результат может оказаться весьма неудачным.

Оптимизация

  1. Можно рассмотреть возможность фильтрации входящих сигналов с помощью комбинации RSI-индикаторов, например, RSI выше 50 - переделывание, RSI ниже 50 - переделывание, чтобы избежать ошибочного сигнала.

  2. Добавлена функция автоматической корректировки фиксированной остановки, что делает остановку более гибкой. Например, динамическая настройка остановки в соответствии с показателями ATR.

  3. Оптимизируйте параметры пояса Бурин, чтобы найти оптимальную комбинацию параметров.

  4. Можно тестировать различные параметры средней линии EMA, оптимизируя эффект ограждения средней линии.

Подвести итог

Стратегия комплексно учитывает тенденцию и обратный ход, использует буринскую полосу для определения перекупа и перепродажи, чтобы максимизировать прибыль путем перемещения стопов. Лучше всего работать в условиях колебаний тенденции. Однако следует обратить внимание на то, чтобы предотвратить попадание, а также на то, чтобы корректировать параметры оптимизации эффективности стратегии.

Исходный код стратегии
/*backtest
start: 2023-10-24 00:00:00
end: 2023-10-31 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4

// Welcome to yet another script. This script was a lot easier since I was stuck for so long on the Donchian Channels one and learned so much from that one that I could use in this one
// This code should be a lot cleaner compared to the Donchian Channels, but we'll leave that up to the pro's
// This strategy has two entry signals, long = when price hits lower band, while above EMA, previous candle was bearish and current candle is bullish
// Short = when price hits upper band, while below EMA, previous candle was bullish and current candle is bearish
// Take profits are the opposite side's band(lower band for long signals, upper band for short signals). This means our take profit price will change per bar
// Our stop loss doesn't change, it's the difference between entry price and the take profit target divided by the input risk reward
// At the time of writing this, I could probably calculate that much easier by simply multiplying the opposite band by the input risk reward ratio
// Since I want to get this script out and working on the next one, I won't clean that up, I'm sorry
// strategy(shorttitle="BB Trending Reverse Strategy", title="Bollinger Bands Trending Reverse Strategy", overlay=true, default_qty_type = strategy.cash, default_qty_value = 150, initial_capital = 1000, currency = currency.USD, commission_type = "percent", commission_value = 0.036)

// The built-in Bollinger Band indicator inputs and variables, added some inputs of my own and organised the code
length              = input(20, minval=1)
src                 = input(close, title="Source")
mult                = input(2.0, minval=0.001, maxval=50, title="StdDev")
emaInput            = input(title = "EMA Input", type = input.integer, defval = 200, minval = 10, maxval = 400, step = 1)
riskreward          = input(title = "Risk/Reward Ratio", type = input.float, defval = 1.50, minval = 0.01, maxval = 100, step = 0.01)
offset              = input(0, "Offset", type = input.integer, minval = -500, maxval = 500)
basis               = sma(src, length)
dev                 = mult * stdev(src, length)
upper               = basis + dev
lower               = basis - dev
ema                 = ema(close, emaInput)

// These are our conditions as explained above
entryLong           = low[1] <= lower[1] and low <= lower and low > ema
entryShort          = high[1] >= upper[1] and high >= upper and high < ema
reversecandleLong   = close > open and close[1] < open[1]
reversecandleShort  = close < open and close[1] > open[1]
var stopLong        = 0.0
var stopShort       = 0.0

// These are our entry signals, notice how the stop condition is within the if statement while the strategy.exit is outside of the if statement, this way the take profit targets trails up or down depending on what the price does
if reversecandleLong and entryLong and strategy.position_size == 0
    stopLong := (((close / upper - 1) * riskreward + 1) * close)
    strategy.entry("Long Entry", strategy.long, comment = "Long Entry")
    
strategy.exit("Exit Long", "Long Entry", limit = upper, stop = stopLong, comment = "Exit Long")

if reversecandleShort and entryShort and strategy.position_size == 0
    stopShort := (((close / lower - 1) / riskreward + 1) * close)
    strategy.entry("Short Entry", strategy.short, comment = "Short Entry")

strategy.exit("Exit Short", "Short Entry", limit = lower, stop = stopShort, comment = "Exit Short")


// The built-in Bollinger Band plots
plot(basis, "Basis", color=#872323, offset = offset)
p1 = plot(upper, "Upper", color=color.teal, offset = offset)
p2 = plot(lower, "Lower", color=color.teal, offset = offset)
fill(p1, p2, title = "Background", color=#198787, transp=95)
plot(ema, color=color.red)

// These plots are to check the stoplosses, they can  make a mess of your chart so only use these if you want to make sure these work
// plot(stopLong)
// plot(stopShort)