В процессе загрузки ресурсов... загрузка...

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

Автор:Чао Чжан, Дата: 2024-12-11 14:52:24
Тэги:ББATRМ.А.SMAЕМАСММАWMAVWMAСД

img

Обзор

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

Принципы стратегии

Основная логика включает в себя несколько ключевых компонентов:

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

Преимущества стратегии

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

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

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

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

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

Резюме

Стратегия строит многоуровневую торговую систему с использованием полос Боллинджера и индикаторов 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


Связанные

Больше