Многоуровневая интеллектуальная динамическая отслеживающая стратегия стоп-лосса на основе полос Боллинджера и ATR

BB ATR MA SMA EMA SMMA WMA VWMA SD
Дата создания: 2024-12-11 14:52:24 Последнее изменение: 2024-12-11 14:52:24
Копировать: 2 Количество просмотров: 363
1
Подписаться
1617
Подписчики

Многоуровневая интеллектуальная динамическая отслеживающая стратегия стоп-лосса на основе полос Боллинджера и ATR

Обзор

Эта стратегия является интеллектуальной торговой системой, основанной на показателях Brin Belt и ATR, в сочетании с многоуровневым механизмом стоп-стоп. Стратегия в основном выполняет многоуровневое вхождение, идентифицируя обратные сигналы вблизи погонки Brin Belt, и управляет риском с использованием динамического метода стоп-стоп. Система разработана с целью получения 20% прибыли и 12% стоп-стоп, а также в сочетании с показателями ATR реализует динамический стоп-стоп, который позволяет предоставить тренду достаточно пространства для развития, защищая прибыль.

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

Основная логика стратегии включает в себя следующие ключевые части:

  1. Условия входа: требуется, чтобы красный фонарь коснулся подвесной полосы Брин, после чего появился зеленый фонарь, эта форма обычно предвещает возможный обратный сигнал.
  2. Поддержка различных типов скользящих средних (SMA, EMA, SMMA, WMA, VWMA), по умолчанию используется 20-циклическая SMA.
  3. Параметр Блин-диапазона: используется стандартное расхождение в 1,5 раза в качестве полосы пропускания, что является более консервативным, чем традиционное стандартное расхождение в 2 раза.
  4. Механизм сдерживания: установление первоначальной цели прибыли в 20%
  5. Стоп-механизм: установка 12% фиксированного стоп-пакета.
  6. Потеря динамического слежения:
    • Активация ATR-стоп-лосса после достижения ценовой цели
    • Движение ATR останавливается после прикосновения рельсового пояса Брин
    • Динамическая настройка с использованием ATR для отслеживания остановочного расстояния

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

  1. Многоуровневый контроль риска:
    • Фиксированная стоп-страховая сумма
    • Динамическое отслеживание стоп-локации прибыли
    • Динамическая остановка, вызванная поездом Брин, обеспечивает дополнительную защиту
  2. Гибкий выбор скользящей средней позволяет стратегии адаптироваться к различным рыночным условиям
  3. Динамические стоп-стопы в сочетании с ATR могут автоматически корректироваться в зависимости от волатильности рынка, чтобы избежать преждевременного выхода из игры.
  4. Входные сигналы в сочетании с ценовой формой и техническими показателями повышают надежность сигналов
  5. Поддержка управления позициями и настройки затрат на торговлю, более близкая к реальной торговой среде

Стратегический риск

  1. Быстрые рыночные колебания могут привести к частым сделкам и увеличению их стоимости.
  2. Фиксированный стоп-лимит в 12% может быть слишком низким на некоторых высоко волатильных рынках.
  3. Сигналы в лентах Брин могут создавать ложные сигналы на трендовых рынках
  4. Прекращение отслеживания ATR может привести к большему отступлению при сильных колебаниях Меры по смягчению последствий:
  • Рекомендуется использовать в более длительных периодах времени (примерно 30 минут - 1 час).
  • Стойкость может быть скорректирована в зависимости от особенностей конкретной породы
  • Подумайте о том, чтобы добавить фильтр тренда и уменьшить ложные сигналы.
  • Динамическая адаптация ATR к различным рыночным условиям

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

  1. Оптимизация входа:
  • Добавить механизм подтверждения объема транзакции
  • Добавление фильтрации сигнала индикатора интенсивности тренда
  • Рассмотреть возможность включения вспомогательного суждения по динамическим показателям
  1. Оптимизация убытков:
  • Переход от фиксированного к динамическому по ATR
  • Разработка адаптивных алгоритмов по прекращению потерь
  • Динамическая коррекция стоп-дистанции в зависимости от волатильности
  1. Оптимизация скользящей средней:
  • Тестирование различных комбинаций циклов
  • Исследование адаптационных циклов
  • Рассмотрите возможность использования ценового поведения вместо скользящей средней
  1. Оптимизация управления позициями:
  • Разработка системы управления позициями на основе волатильности
  • Реализовать механизм пакетного наращивания и сокращения позиций
  • Присоединение к системе контроля за выходом

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

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

Исходный код стратегии
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-09 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Demo GPT - Bollinger Bands Strategy with Tightened Trailing Stops", overlay=true, default_qty_type=strategy.percent_of_equity, default_qty_value=100, commission_value=0.1, slippage=3)

// Input settings
length = input.int(20, minval=1)
maType = input.string("SMA", "Basis MA Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"])
src = input(close, title="Source")
mult = 1.5 // Standard deviation multiplier set to 1.5
offset = input.int(0, "Offset", minval=-500, maxval=500)
atrMultiplier = input.float(1.0, title="ATR Multiplier for Trailing Stop", minval=0.1) // ATR multiplier for trailing stop

// Time range filters
start_date = input(timestamp("2018-01-01 00:00"), title="Start Date")
end_date = input(timestamp("2069-12-31 23:59"), title="End Date")
in_date_range = true

// Moving average function
ma(source, length, _type) =>
    switch _type
        "SMA" => ta.sma(source, length)
        "EMA" => ta.ema(source, length)
        "SMMA (RMA)" => ta.rma(source, length)
        "WMA" => ta.wma(source, length)
        "VWMA" => ta.vwma(source, length)

// Calculate Bollinger Bands
basis = ma(src, length, maType)
dev = mult * ta.stdev(src, length)
upper = basis + dev
lower = basis - dev

// ATR Calculation
atr = ta.atr(length) // Use ATR for trailing stop adjustments

// Plotting
plot(basis, "Basis", color=#2962FF, offset=offset)
p1 = plot(upper, "Upper", color=#F23645, offset=offset)
p2 = plot(lower, "Lower", color=#089981, offset=offset)
fill(p1, p2, title="Background", color=color.rgb(33, 150, 243, 95))

// Candle color detection
isGreen = close > open
isRed = close < open

// Flags for entry and exit conditions
var bool redTouchedLower = false
var float targetPrice = na
var float stopLossPrice = na
var float trailingStopPrice = na

if in_date_range
    // Entry Logic: First green candle after a red candle touches the lower band
    if close < lower and isRed
        redTouchedLower := true
    if redTouchedLower and isGreen
        strategy.entry("Long", strategy.long)
        targetPrice := close * 1.2       // Set the target price to 20% above the entry price
        stopLossPrice := close * 0.88   // Set the stop loss to 12% below the entry price
        trailingStopPrice := na         // Reset trailing stop on entry
        redTouchedLower := false

    // Exit Logic: Trailing stop after 20% price increase
    if strategy.position_size > 0 and not na(targetPrice) and close >= targetPrice
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop after 20% increase
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop After 20% Increase")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Stop Loss: Exit if the price drops 12% below the entry price
    if strategy.position_size > 0 and not na(stopLossPrice) and close <= stopLossPrice
        strategy.close("Long", comment="Stop Loss Triggered")
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price
        trailingStopPrice := na // Reset trailing stop

    // Trailing Stop: Activate after touching the upper band
    if strategy.position_size > 0 and close >= upper and isGreen
        if na(trailingStopPrice)
            trailingStopPrice := close - atr * atrMultiplier // Initialize trailing stop using ATR
        trailingStopPrice := math.max(trailingStopPrice, close - atr * atrMultiplier) // Tighten dynamically based on ATR

    // Exit if the price falls below the trailing stop
    if strategy.position_size > 0 and not na(trailingStopPrice) and close < trailingStopPrice
        strategy.close("Long", comment="Trailing Stop Triggered")
        trailingStopPrice := na // Reset trailing stop
        targetPrice := na // Reset the target price
        stopLossPrice := na // Reset the stop loss price