Стратегия следования за трендом на основе двойной скользящей средней полосы Боллинджера


Дата создания: 2023-12-22 14:54:20 Последнее изменение: 2023-12-22 14:54:20
Копировать: 1 Количество просмотров: 619
1
Подписаться
1621
Подписчики

Стратегия следования за трендом на основе двойной скользящей средней полосы Боллинджера

Обзор

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

Стратегический принцип

  1. Используйте расчеты максимумов и минимумов для определения направления рыночных тенденций

    • Высшая ценаhighest и низшая ценаlowest вычислительные каналы вверх и вниз
    • Средние цены на наивысшую и наименьшую цены
    • Определение местоположения цены на канале определяет направление тренда
  2. Расчет величины солнечного объекта, определение стоп- и обратного сигнала

    • Абсолютное значение ценой закрытия минус ценой открытия для солнечного объекта
    • Вычислить среднее значение солнечных объектов за N циклов, сравнить его с текущим размером солнечных объектов, чтобы определить стоп-страты и обратный ход
  3. После подтверждения направления тренда, вход в направлении коридора

    • При повышении тренда вблизи нижней полосы
    • Воздушная голова вблизи верхней полосы во время понижения тренда
  4. Фильтрация движущихся средних для предотвращения ложных сигналов

    • Вычислить скользящую среднюю цены закрытия за N циклов
    • Сигналы для торгов только тогда, когда цена превышает среднюю

Стратегические преимущества

  1. Сильная систематичность, объединенная с тенденциями оценки по Бринскому каналу и подвижным средним

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

  1. Использование величины солнечного объекта для сдерживания убытков и эффективного управления рисками

Вычислив среднее значение величины солнечных объектов за определенный период и сравнив его с величиной объектов текущего периода, можно четко определить обратный тренд, остановить убытки и снизить позиции, чтобы эффективно контролировать риск стратегии.

  1. Ясные правила количественного ввода и остановки убытков

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

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

  1. Потенциальные риски потери при шоковых ситуациях

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

  1. Опасность попадания на слишком большие колебания, находящиеся слишком близко от точки остановки.

В сильных тенденциях краткосрочное изменение цены может вызвать удары по правилам остановки, в этом случае следует соответствующим образом ослабить степень остановки, чтобы следовать тренду.

  1. Неправильные параметры могут вызвать ошибочный сигнал

Неправильно настроенные параметры для скользящих средних и бриндовых полос могут привести к ошибочному распознаванию сигнала. Параметры должны быть соответствующим образом оптимизированы, чтобы сигнал был стабильным и надежным.

Направление оптимизации стратегии

  1. Оптимизация циклических параметров скользящих средних

Настройка параметров скользящих средних, уменьшение степени сглаживания, более быстрое обнаружение изменений тенденций.

  1. Тестирование эффективности различных правил потери

Попробуйте различные правила остановки убытков, такие как остановка слежения, остановка ATR и т. Д., чтобы выбрать оптимальный способ остановки убытков.

  1. Добавление вспомогательных моделей машинного обучения

Тренировочные модели, основанные на большом количестве исторических данных, помогают оценивать тенденции и подавать торговые сигналы.

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

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

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


//@version=2
strategy("Noro's Bands Scalper Strategy v1.3", shorttitle = "Scalper str 1.3", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value=100.0, pyramiding=0)

//Settings
needlong = input(true, defval = true, title = "Long")
needshort = input(true, defval = true, title = "Short")
takepercent = input(0, defval = 0, minval = 0, maxval = 1000, title = "take, %")
needct = input(false, defval = false, title = "Counter-trend entry")
len = input(20, defval = 20, minval = 2, maxval = 200, title = "Period")
needbb = input(true, defval = true, title = "Show Bands")
needbg = input(true, defval = true, title = "Show Background")
src = close

//PriceChannel 1
lasthigh = highest(src, len)
lastlow = lowest(src, len)
center = (lasthigh + lastlow) / 2

//Distance
dist = abs(src - center)
distsma = sma(dist, len)
hd = center + distsma
ld = center - distsma
hd1 = center + distsma / 2
ld1 = center - distsma / 2

//Trend
trend = close < ld and high < center ? -1 : close > hd and low > center ? 1 : trend[1]

//Lines
colo = needbb == false ? na : black
plot(hd, color = colo, linewidth = 1, transp = 0, title = "High band")
plot(center, color = colo, linewidth = 1, transp = 0, title = "center")
plot(ld, color = colo, linewidth = 1, transp = 0, title = "Low band")

//Background
col = needbg == false ? na : trend == 1 ? lime : red
bgcolor(col, transp = 80)

//Body
body = abs(close - open)
smabody = ema(body, 30)
candle = high - low

//Engulfing
min = min(open, close)
max = max(open, close)
bar = close > open ? 1 : close < open ? -1 : 0
upeng = bar == 1 and bar[1] == -1 and min >= min[1] and max <= max[1] ? 1 : 0
dneng = bar == -1 and bar[1] == 1 and min >= min[1] and max <= max[1] ? 1 : 0

//Signals
up7 = trend == 1 and ((bar == -1 and bar[1] == -1) or (body > smabody and close < open)) ? 1 : 0
dn7 = trend == 1 and bar == 1 and bar[1] == 1 and close > strategy.position_avg_price * (100 + takepercent) / 100 ? 1 : 0
up8 = trend == -1 and bar == -1 and bar[1] == -1 and close < strategy.position_avg_price * (100 - takepercent) / 100 ? 1 : 0
dn8 = trend == -1 and ((bar == 1 and bar[1] == 1) or (body > smabody and close > open)) ? 1 : 0

if up7 == 1 or up8 == 1 
    strategy.entry("Long", strategy.long, needlong == false ? 0 : trend == -1 and needct == false ? 0 : na)

if dn7 == 1 or dn8 == 1
    strategy.entry("Short", strategy.short, needshort == false ? 0 : trend == 1 and needct == false ? 0 : na)