Bollinger Bands Channel Breakout Mean Reversion Strategy (Стратегия перехода через канал Боллинджера)

Автор:Чао Чжан, Дата: 2024-01-22 10:47:45
Тэги:

img

Обзор

Это средняя стратегия реверсии, основанная на канале Болинджеровских полос. Она длинна, когда цена проходит ниже нижней полосы Болинджеровских полос. Стоп-лосс устанавливается на нижней границе полосы прорыва. Целью прибыли является верхняя полоса Болинджеровских полос.

Логика стратегии

Стратегия использует 20-периодный канал полос Боллинджера, который состоит из средней полосы, верхней полосы и нижней полосы. Средняя полоса - это 20-периодная простая скользящая средняя. Верхняя полоса - это средняя полоса плюс 2 стандартных отклонения. Нижняя полоса - это средняя полоса минус 2 стандартных отклонения.

Когда цена проходит ниже нижней полосы, это указывает на то, что цена вступила в состояние перепродажи. Стратегия будет длинной в этот момент. После входа в позицию, стоп-лосс устанавливается на нижней границе входа, а цель прибыли - верхняя полоса. Таким образом, стратегия направлена на захват процесса реверсии от перепродажи до средней, чтобы получить прибыль.

Анализ преимуществ

Преимущества этой стратегии:

  1. Использовать полосы Боллинджера для оценки состояния перекупленности/перепроданности, которое имеет некоторую своевременность
  2. Стратегия реверсионной торговли, избегание погони за максимумами и уничтожение минимумов
  3. Разумное установление стоп-лосса и прибыли для лучшего контроля рисков

Анализ рисков

Риски этой стратегии включают:

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

Руководство по оптимизации

Стратегия может быть улучшена в следующих аспектах:

  1. Оптимизировать параметры полос Боллинджера для поиска наилучшей комбинации
  2. Добавить индикаторы фильтра для улучшения точности ввода
  3. Оптимизируйте стоп-лосс и получение прибыли для повышения прибыльности

Заключение

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


/*backtest
start: 2023-01-15 00:00:00
end: 2024-01-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/
// © Ronsword
//@version=5

strategy("bb 2ND target", overlay=true)
 
// STEP 1. Create inputs that configure the backtest's date range
useDateFilter = input.bool(true, title="Filter Date Range of Backtest",
     group="Backtest Time Period")
backtestStartDate = input(timestamp("1 Jan 1997"), 
     title="Start Date", group="Backtest Time Period",
     tooltip="This start date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")
backtestEndDate = input(timestamp("1 Sept 2023"),
     title="End Date", group="Backtest Time Period",
     tooltip="This end date is in the time zone of the exchange " + 
     "where the chart's instrument trades. It doesn't use the time " + 
     "zone of the chart or of your computer.")

// STEP 2. See if the current bar falls inside the date range
inTradeWindow = true

// Bollinger Bands inputs
length = input.int(20, title="Bollinger Bands Length")
mult = input.float(2.0, title="Multiplier")
src = input(close, title="Source")
basis = ta.sma(src, length)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// EMA Settings
ema20 = ta.ema(close, 20)
plot(ema20, color=color.blue, title="20 EMA")

// Entry condition
longEntryCondition = ta.crossover(close, lower)

// Define stop loss level as the low of the entry bar
var float stopLossPrice = na
if longEntryCondition
    stopLossPrice := low

// Top Bollinger Band itself is set as the target
topBandTarget = upper

// Enter long position when conditions are met
if inTradeWindow and longEntryCondition
    strategy.entry("Long", strategy.long, qty=1)

// Set profit targets
strategy.exit("ProfitTarget2", from_entry="Long", limit=topBandTarget)

// Set stop loss
strategy.exit("StopLoss", stop=stopLossPrice)

// Plot Bollinger Bands with the same gray color
plot(upper, color=color.gray, title="Upper Bollinger Band")
plot(lower, color=color.gray, title="Lower Bollinger Band")



Больше