Долгосрочная стратегия торговли, основанная на диапазонах Боллинджера

Автор:Чао Чжан, Дата: 2024-02-01 11:15:44
Тэги:

img

Обзор

Эта стратегия генерирует торговые сигналы, основанные на индикаторе Bollinger Bands %B. Она становится длинной, когда значение %B падает ниже заданного порога и использует динамический подход к средней позиции, чтобы следовать тренду до того момента, пока не начнется получение прибыли или остановка убытков. Стратегия подходит для выявления возможностей отступления после того, как поддержка нижней полосы Боллинджера будет нарушена.

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

  1. Расчет средней полосы, верхней полосы и нижней полосы N-дневных полос Боллинджера
  2. Вычислить значение %B: (%B = (Close - LowerBB) /(UpperBB - LowerBB)
  3. Пройти длинный путь, когда значение %B падает ниже порога (по умолчанию 0)
  4. Установка прибыли на основе входной цены (неопределенное значение составляет 105% от входной цены) и стоп-лосса (неопределенное значение составляет 95% от входной цены)
  5. Добавить к позиции до тех пор, пока условия соблюдены после открытия позиции
  6. Первый задействованный "прием прибыли" или "стоп-лосс" закрывает позицию.

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

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

  1. Индикатор %B эффективно определяет точки отступления после поддержки нижней полосы
  2. Динамическое усреднение позиций отслеживает тенденцию к увеличению прибыли
  3. Ясные условия получения прибыли и остановки убытков облегчают контроль рисков

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

Существуют также некоторые риски, связанные с этой стратегией:

  1. Более высокая вероятность ложных сигналов от %B
  2. Более частые триггеры стоп-лосса на рыночных диапазонах
  3. Риски агрессивного среднего значения неконтролируемых потерь

Решения:

  1. Комбинировать с такими индикаторами, как KD и MACD, чтобы подтвердить надежность сигнала
  2. Корректировать размещение стоп-лосса для устойчивости к волатильности рынка
  3. Контроль средней скорости для предотвращения взрыва риска

Возможности для расширения

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

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

Резюме

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


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Bollinger Bands %B Long Strategy", shorttitle="BB %B Long Strategy", overlay=true)

// Girdiler
length = input.int(20, title="BB Length")
src = input(close, title="Source")
dev = input.float(2.0, title="Deviation")
kar_hedefi = input(5, title="Take Profit")
zarar_durumu = input(100, title="Stop Loss")
start_date = input(timestamp("01 Jan 2023 00:00 +0000"), "Start Date")
end_date = input(timestamp("01 Jan 2024 00:00 +0000"), "End Date")
altinda_kalirsa_long = input.float(0, title="hangi degerin altinda long alsin")

// Bollinger Bantları %B göstergesi
basis = ta.sma(src, length)
stdDev = ta.stdev(src, length)
upperBand = basis + dev * stdDev
lowerBand = basis - dev * stdDev
percentB = (src - lowerBand) / (upperBand - lowerBand)

// Alım-Satım Sinyalleri
longCondition = percentB < altinda_kalirsa_long

// Kar/Zarar Hesaplama
takeProfit = strategy.position_avg_price * (1 + kar_hedefi / 100)
stopLoss = strategy.position_avg_price * (1 - zarar_durumu / 100)

// Long (Alım) İşlemi
if (longCondition )
    strategy.entry("Long", strategy.long)
    strategy.exit("Take Profit/Stop Loss", "Long", limit=takeProfit, stop=stopLoss)

// Take Profit Seviyesi Çizgisi
plot(takeProfit, title="Take Profit", color=color.green, linewidth=1, style=plot.style_linebr)


Больше