Широкополосная локомотивная стратегия - это стратегия прорыва в длинную линию, основанная на показателях буринского пояса, чтобы определить, снизилась ли волатильность рынка. Когда рынок вступает в стадию очистки от шока, буринский пояс спускается, и в это время мы рассматриваем возможность войти в поле.
Эта стратегия основана на использовании индикаторов Бринского пояса для определения того, вступает ли цена в период низких колебаний. Средняя орбитальная линия Бринского пояса является скользящим средним для цены закрытия, а верхняя и нижняя орбиты имеют по два стандартных разрыва, которые смещаются вверх и вниз по средней орбите.
Для дальнейшего подтверждения снижения волатильности мы проверяем, не является ли движущаяся средняя ATR тенденцией к снижению. Снижение среднего ATR также свидетельствует о снижении волатильности. Когда оба вышеперечисленных условия выполняются одновременно, мы считаем, что в булинской полосе уже наблюдается явный сближение, что является отличным моментом для покупки.
После покупки мы активируем мобильную стратегию остановки убытков с двойным ATR в качестве стоп-дистанции. Это эффективно контролирует убытки.
Основным преимуществом этой стратегии является то, что она позволяет точно определить, когда рынок вступает в период низкой волатильности, что позволяет определить оптимальное время покупки. По сравнению с другими долголинейными стратегиями, широкополосная стратегия блокирования колебаний имеет более высокую вероятность получения прибыли.
Во-вторых, в стратегии используется мобильный стоп для активного контроля риска. Это позволяет максимально снизить потери даже в неблагоприятных условиях. Это то, чего не хватает многим долгосрочным стратегиям.
Основной риск стратегии заключается в том, что индикатор бурин-пояса не может быть стопроцентно точным в определении изменений в волатильности цен. Когда бурин-пояса ошибочно оценивают волатильность, время покупки может быть неблагоприятным.
Кроме того, настройки различных параметров в стратегии также влияют на результаты. Нам нужно оптимизировать параметры с помощью большого количества обратной связи, чтобы сделать стратегию более устойчивой.
Мы можем рассмотреть возможность добавления других индикаторов, чтобы подтвердить, что трендовые индикаторы также имеют признаки поворота. Например, при сжатии в буринской полосе, мы также можем потребовать, чтобы разрыв MACD был отрицательно отрицательным, или RSI был проникнут в зону сверхпокупок. Это может еще больше повысить точность времени покупки.
Другой путь заключается в тестировании влияния различных параметров на результаты, таких как настройки, такие как цикл Брюлинга, цикл ATR и мобильный стоп-мобиль. Нам нужно использовать пошаговую оптимизацию, чтобы найти оптимальную комбинацию параметров.
Широкополосный шокирующий лок-стрит является относительно устойчивой стратегией прорыва в длинную линию, используя индикаторы Брин-полоса для определения времени снижения волатильности цен, а также эффективное управление риском с помощью мобильных стопов. Нам все еще нужно оптимизировать параметры и комбинировать другие показатели, чтобы повысить устойчивость стратегии.
/*backtest
start: 2023-02-15 00:00:00
end: 2024-02-21 00:00:00
period: 1d
basePeriod: 1h
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/
// © DojiEmoji
//@version=4
strategy("[KL] Bollinger Bands Consolidation Strategy",overlay=true,pyramiding=1)
// Timeframe {
backtest_timeframe_start = input(defval = timestamp("01 Apr 2016 13:30 +0000"), title = "Backtest Start Time", type = input.time)
USE_ENDTIME = input(false,title="Define backtest end-time (If false, will test up to most recent candle)")
backtest_timeframe_end = input(defval = timestamp("19 Apr 2021 19:30 +0000"), title = "Backtest End Time (if checked above)", type = input.time)
within_timeframe = true
// }
// Indicator: BOLL bands {
BOLL_length = 20//input(20,title="Periods to lookback for BOLL and ATR calc. (default 20)")
BOLL_src = close
BOLL_center = sma(BOLL_src, BOLL_length)
BOLL_sDEV_x2 = 2 * stdev(BOLL_src, BOLL_length)
BOLL_upper = BOLL_center + BOLL_sDEV_x2
BOLL_lower = BOLL_center - BOLL_sDEV_x2
plot(BOLL_center, "Basis", color=#872323, offset = 0)
BOLL_p1 = plot(BOLL_upper, "Upper", color=color.navy, offset = 0, transp=50)
BOLL_p2 = plot(BOLL_lower, "Lower", color=color.navy, offset = 0, transp=50)
fill(BOLL_p1, BOLL_p2, title = "Background", color=#198787, transp=85)
// }
// ATR and volatility Indicator {
ATR_x2 = atr(BOLL_length) * 2 // multiplier aligns with BOLL
avg_volat = sma(ATR_x2, BOLL_length)
//}
// Trailing stop loss {
var entry_price = float(0)
var trailing_SL_buffer = float(0)
var stop_loss_price = float(0)
trail_profit_line_color = color.green
UPDATE_ATR_TSL = false
if strategy.position_size == 0 or not within_timeframe // make TSL line less visible
trail_profit_line_color := color.black
stop_loss_price := close - trailing_SL_buffer
else if strategy.position_size > 0
if UPDATE_ATR_TSL and ATR_x2 < trailing_SL_buffer
trailing_SL_buffer := ATR_x2
stop_loss_price := max(stop_loss_price, close[1] - trailing_SL_buffer)
plot(stop_loss_price,color=trail_profit_line_color)
// }
IGNORE_BOLL_SHAPE = false//input(false,title="Ignore BOLL (vs ATR) during entry (experimental)")
IGNORE_VOLATILITY = false///input(false,title="Ignore average ATR during entry (experimental)")
// Main:
if within_timeframe
// ENTRY:
if (ATR_x2 > BOLL_sDEV_x2 or IGNORE_BOLL_SHAPE) and (avg_volat < avg_volat[1] or IGNORE_VOLATILITY)
if strategy.position_size == 0
entry_price := close
trailing_SL_buffer := ATR_x2
stop_loss_price := close - ATR_x2
strategy.entry("Long",strategy.long, comment="enter")
if strategy.position_size > 0
strategy.entry("Long",strategy.long, comment="+")
// EXIT:
if strategy.position_size > 0
if low <= stop_loss_price
if close > entry_price
strategy.close("Long", comment="take profit")
else if low <= entry_price
strategy.close("Long", comment="stop loss")
if strategy.position_size == 0
entry_price := 0