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

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

Автор:Чао Чжан, Дата: 2024-12-05 16:49:57
Тэги:ATRSMAТРМФТПSLМ.А.AATR

img

Обзор

Это многоуровневая торговая стратегия, которая объединяет адаптивные расчеты среднего истинного диапазона (ATR) с обнаружением тренда на основе импульса. Наиболее отличительной особенностью стратегии является ее уникальный 7-ступенчатый механизм получения прибыли, который сочетает в себе четыре уровня выхода на основе ATR и три фиксированных процентных уровня. Этот гибридный подход позволяет трейдерам динамически адаптироваться к волатильности рынка, систематически получая прибыль как на длинных, так и на коротких рыночных позициях. Стратегия предоставляет комплексное торговое решение посредством сочетания динамических расчетов ATR, обнаружения силы тренда и нескольких механизмов получения прибыли.

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

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

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

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

  1. Высокая адаптивность: адаптируется к различным рыночным условиям с помощью динамических расчетов ATR.
  2. Комплексное управление рисками: многоуровневый механизм получения прибыли обеспечивает систематический контроль рисков.
  3. Высокая гибкость: работает одинаково эффективно как на длинных, так и на коротких рынках.
  4. Регулируемые параметры: предлагает несколько настраиваемых параметров, чтобы соответствовать различным стилям торговли.
  5. Систематическое исполнение: четкие правила входа и выхода уменьшают эмоциональную торговлю.

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

  1. Чувствительность параметров: неправильное настройка параметров может привести к переоценке или упущенным возможностям.
  2. Зависимость от рыночных условий: может оказаться менее эффективным на сильно волатильных или колеблющихся рынках.
  3. Риск сложности: многоуровневый механизм получения прибыли может увеличить сложность исполнения.
  4. Влияние скольжения: несколько точек прибыли могут быть значительно затронуты скольжением.
  5. Требования к капиталу: требуется достаточный капитал для реализации многоуровневой стратегии получения прибыли.

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

  1. Динамическая корректировка параметров: автоматическая корректировка параметров на основе рыночных условий.
  2. Фильтрация рыночной среды: Добавление механизма идентификации рыночной среды.
  3. Улучшение управления рисками: внедрение динамического механизма стоп-лосса.
  4. Оптимизация исполнения: упростить механизм получения прибыли для уменьшения влияния скольжения.
  5. Улучшение рамочной бактестировки: включить более реалистичные факторы торговли.

Резюме

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


/*backtest
start: 2024-11-04 00:00:00
end: 2024-12-04 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// This Pine Script™ code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © PresentTrading

// The SuperATR 7-Step Profit Strategy is a multi-layered trading strategy that combines adaptive ATR and momentum-based trend detection 
// with a sophisticated 7-step take-profit mechanism. This approach utilizes four ATR-based exit levels and three fixed percentage levels, 
// enabling flexible and dynamic profit-taking in both long and short market positions.

//@version=5
strategy("SuperATR 7-Step Profit - Strategy [presentTrading] ", overlay=true, precision=3, commission_value= 0.1, commission_type=strategy.commission.percent, slippage= 1, currency=currency.USD, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=10000)

// ————————
// User Inputs
// ————————
short_period = input.int(3, minval=1, title="Short Period")
long_period = input.int(7, minval=1, title="Long Period")
momentum_period = input.int(7, minval=1, title="Momentum Period")
atr_sma_period = input.int(7, minval=1, title="ATR SMA Period for Confirmation")
trend_strength_threshold = input.float(1.618, minval=0.0, title="Trend Strength Threshold", step=0.1)

// ————————
// Take Profit Inputs
// ————————
useMultiStepTP = input.bool(true, title="Enable Multi-Step Take Profit")

// ATR-based Take Profit Inputs
atrLengthTP = input.int(14, minval=1, title="ATR Length for Take Profit")
atrMultiplierTP1 = input.float(2.618, minval=0.1, title="ATR Multiplier for TP Level 1")
atrMultiplierTP2 = input.float(5.0, minval=0.1, title="ATR Multiplier for TP Level 2")
atrMultiplierTP3 = input.float(10.0, minval=0.1, title="ATR Multiplier for TP Level 3")
atrMultiplierTP4 = input.float(13.82, minval=0.1, title="ATR Multiplier for TP Level 4")

// Fixed Percentage Take Profit Inputs
tp_level_percent1 = input.float(3.0, minval=0.1, title="Fixed TP Level 1 (%)")
tp_level_percent2 = input.float(8.0, minval=0.1, title="Fixed TP Level 2 (%)")
tp_level_percent3 = input.float(17.0, minval=0.1, title="Fixed TP Level 3 (%)")

// Take Profit Percentages for Each Level
tp_percent_atr = input.float(10.0, minval=0.1, maxval=100, title="Percentage to Exit at Each ATR TP Level")
tp_percent_fixed = input.float(10.0, minval=0.1, maxval=100, title="Percentage to Exit at Each Fixed TP Level")


// —————————————
// Helper Functions
// —————————————

// Function to calculate True Range with enhanced volatility detection
calculate_true_range() =>
    prev_close = close[1]
    tr1 = high - low
    tr2 = math.abs(high - prev_close)
    tr3 = math.abs(low - prev_close)
    true_range = math.max(tr1, tr2, tr3)
    true_range

// ———————————————
// Indicator Calculations
// ———————————————

// Calculate True Range
true_range = calculate_true_range()

// Calculate Momentum Factor
momentum = close - close[momentum_period]
stdev_close = ta.stdev(close, momentum_period)
normalized_momentum = stdev_close != 0 ? (momentum / stdev_close) : 0
momentum_factor = math.abs(normalized_momentum)

// Calculate Short and Long ATRs
short_atr = ta.sma(true_range, short_period)
long_atr = ta.sma(true_range, long_period)

// Calculate Adaptive ATR
adaptive_atr = (short_atr * momentum_factor + long_atr) / (1 + momentum_factor)

// Calculate Trend Strength
price_change = close - close[momentum_period]
atr_multiple = adaptive_atr != 0 ? (price_change / adaptive_atr) : 0
trend_strength = ta.sma(atr_multiple, momentum_period)

// Calculate Moving Averages
short_ma = ta.sma(close, short_period)
long_ma = ta.sma(close, long_period)

// Determine Trend Signal
trend_signal = (short_ma > long_ma and trend_strength > trend_strength_threshold) ? 1 :
               (short_ma < long_ma and trend_strength < -trend_strength_threshold) ? -1 : 0

// Calculate Adaptive ATR SMA for Confirmation
adaptive_atr_sma = ta.sma(adaptive_atr, atr_sma_period)

// Determine if Trend is Confirmed with Price Action
trend_confirmed = (trend_signal == 1 and close > short_ma and adaptive_atr > adaptive_atr_sma) or (trend_signal == -1 and close < short_ma and adaptive_atr > adaptive_atr_sma)

// —————————————
// Trading Logic
// —————————————

// Entry Conditions
long_entry = trend_confirmed and trend_signal == 1
short_entry = trend_confirmed and trend_signal == -1

// Exit Conditions
long_exit = strategy.position_size > 0 and short_entry
short_exit = strategy.position_size < 0 and long_entry



// Execute Long Trades
if long_entry
    strategy.entry("Long Entry", strategy.long)
if long_exit
    strategy.close("Long Entry")

// Execute Short Trades
if short_entry
    strategy.entry("Short Entry", strategy.short)
if short_exit
    strategy.close("Short Entry")

// ————————————————
// Multi-Step Take Profit Logic
// ————————————————

if useMultiStepTP
    // Calculate ATR for Take Profit Levels
    atrValueTP = ta.atr(atrLengthTP)

    // Long Position Take Profit Levels
    if strategy.position_size > 0
        // ATR-based Take Profit Prices
        tp_priceATR1_long = strategy.position_avg_price + atrMultiplierTP1 * atrValueTP
        tp_priceATR2_long = strategy.position_avg_price + atrMultiplierTP2 * atrValueTP
        tp_priceATR3_long = strategy.position_avg_price + atrMultiplierTP3 * atrValueTP
        tp_priceATR4_long = strategy.position_avg_price + atrMultiplierTP4 * atrValueTP

        // Fixed Percentage Take Profit Prices
        tp_pricePercent1_long = strategy.position_avg_price * (1 + tp_level_percent1 / 100)
        tp_pricePercent2_long = strategy.position_avg_price * (1 + tp_level_percent2 / 100)
        tp_pricePercent3_long = strategy.position_avg_price * (1 + tp_level_percent3 / 100)

        // Set ATR-based Take Profit Exits
        strategy.exit("TP ATR 1 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR1_long)
        strategy.exit("TP ATR 2 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR2_long)
        strategy.exit("TP ATR 3 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR3_long)
        strategy.exit("TP ATR 4 Long", from_entry="Long Entry", qty_percent=tp_percent_atr, limit=tp_priceATR4_long)

        // Set Fixed Percentage Take Profit Exits
        strategy.exit("TP Percent 1 Long", from_entry="Long Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent1_long)
        strategy.exit("TP Percent 2 Long", from_entry="Long Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent2_long)
        strategy.exit("TP Percent 3 Long", from_entry="Long Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent3_long)

    // Short Position Take Profit Levels
    if strategy.position_size < 0
        // ATR-based Take Profit Prices
        tp_priceATR1_short = strategy.position_avg_price - atrMultiplierTP1 * atrValueTP
        tp_priceATR2_short = strategy.position_avg_price - atrMultiplierTP2 * atrValueTP
        tp_priceATR3_short = strategy.position_avg_price - atrMultiplierTP3 * atrValueTP
        tp_priceATR4_short = strategy.position_avg_price - atrMultiplierTP4 * atrValueTP

        // Fixed Percentage Take Profit Prices
        tp_pricePercent1_short = strategy.position_avg_price * (1 - tp_level_percent1 / 100)
        tp_pricePercent2_short = strategy.position_avg_price * (1 - tp_level_percent2 / 100)
        tp_pricePercent3_short = strategy.position_avg_price * (1 - tp_level_percent3 / 100)

        // Set ATR-based Take Profit Exits
        strategy.exit("TP ATR 1 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR1_short)
        strategy.exit("TP ATR 2 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR2_short)
        strategy.exit("TP ATR 3 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR3_short)
        strategy.exit("TP ATR 4 Short", from_entry="Short Entry", qty_percent=tp_percent_atr, limit=tp_priceATR4_short)

        // Set Fixed Percentage Take Profit Exits
        strategy.exit("TP Percent 1 Short", from_entry="Short Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent1_short)
        strategy.exit("TP Percent 2 Short", from_entry="Short Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent2_short)
        strategy.exit("TP Percent 3 Short", from_entry="Short Entry", qty_percent=tp_percent_fixed, limit=tp_pricePercent3_short)


// ——————————
// Plotting
// ——————————

plot(short_ma, color=color.blue, title="Short MA")
plot(long_ma, color=color.orange, title="Long MA")

// Plot Buy and Sell Signals
//plotshape(long_entry, title="Long Entry", style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, text="Buy")
//plotshape(short_entry, title="Short Entry", style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, text="Sell")

// Optional: Plot Trend Strength for analysis
// Uncomment the lines below to display Trend Strength on a separate chart pane
// plot(trend_strength, title="Trend Strength", color=color.gray)
// hline(trend_strength_threshold, title="Trend Strength Threshold", color=color.gray, linestyle=hline.style_dashed)
// hline(-trend_strength_threshold, title="Trend Strength Threshold", color=color.gray, linestyle=hline.style_dashed)



Связанные

Больше