Стратегия динамического стоп-лосса на пробое EMA

EMA ATR VOLUME BREAKOUT TRAILING_STOP
Дата создания: 2025-08-26 11:50:41 Последнее изменение: 2025-08-26 11:50:41
Копировать: 0 Количество просмотров: 328
2
Подписаться
319
Подписчики

Стратегия динамического стоп-лосса на пробое EMA Стратегия динамического стоп-лосса на пробое EMA

Ключевые моменты в стратегии: Тренд к тройному страхованию прорывает тайны

Знаете ли вы? Эта стратегия - как тройная страховка для вашей торговли! Сначала используйте EMA200, чтобы определить направление большого тренда, затем используйте объем, чтобы подтвердить подлинность прорыва, а затем используйте ATR, чтобы защитить прибыль.

Это не механическая торговля, а интеллектуальная стратегия, которая “наблюдает за тем, что происходит”. Когда цена превышает EMA200, она также проверяет, достаточно ли большой объем торгов (по умолчанию в 1,5 раза больше среднего значения), чтобы избежать ложных прорывов.

️ Динамический механизм остановки повреждений: бог-хранитель, который “поднимается по лестнице”

И вот самое интересное! Стоп-лост этой стратегии - это не фиксированная величина на плоскости, а динамическая защита, которая “поднимается по лестнице”.

Это очень просто.

  • При входе: стоп-лост установлен в 2 раза ниже входного размера ATR
  • Хеджирование: стоп-убытки будут скорректированы вверх после 20-ти циклических минимумов
  • На старте: цена упала за пределы динамической остановки и была ликвидирована

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

Подтверждение доставки ядра: ключевое оружие в руководстве по избежанию ям

Самые большие проблемы многих стратегий прорыва - это фальшивые прорывы, как в истории “Волк пришел”.

Объем сделок должен быть более чем в 1,5 раза выше 20-дневного среднего значенияПредставьте, что если новость распространяется несколькими людьми, она может быть ложной, но если она обсуждается целым городом, то это заслуживает внимания!

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

Приложения для боевых действий: как эта стратегия поможет вам

Подходит для людей

  • Инвесторы, которые хотят следить за среднесрочными тенденциями
  • Осторожность, которая пугает поддельных взломов
  • Рационалисты хотят систематизированной защиты от ущерба

Основные проблемы решены

  1. Непонятное направлениеEMA200 поможет вам определить основные тенденции
  2. Фальшивые взломыПропускная способность подтверждена:
  3. Предотвращение ущербаДвижущийся ATR - защищенный и гибкий
  4. Эмоциональная торговля“Все автоматизировано” - сообщение о человеческих слабостях

Помните, что наибольшая ценность этой стратегии заключается не в том, чтобы стать богатым в одночасье, а в том, чтобы помочь вам стабильно получать прибыль в трендовых рынках, максимально защищая ваши деньги. Это как GPS-навигация + безопасная подушка + система защиты от столкновений в ваших сделках!

Исходный код стратегии
/*backtest
start: 2024-08-26 00:00:00
end: 2025-08-24 08:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"ETH_USDT"}]
*/

//@version=5
strategy("EMA Break + Stop ATR", overlay = true)
// =============================================================================
// STRATEGY PARAMETERS
// =============================================================================
// User inputs for strategy customization
shortPeriod = input.int(20, title = "Stop Period", minval = 1, maxval = 100, tooltip = "Period for lowest low calculation")
atrPeriod = 1  // ATR period always set to 1
initialStopLoss = 0.0  // Initial stop loss always set to 0 (auto based on ATR)
// Confirmation indicator settings
useVolumeConfirmation = input.bool(true, title = "Use Volume Confirmation", tooltip = "Require volume above average for breakout confirmation")
volumeMultiplier = input.float(1.5, title = "Volume Multiplier", minval = 1.0, maxval = 5.0, step = 0.1, tooltip = "Volume must be this times above average")
// Strategy variables
var float STOP_LOSS = 0.0     // Dynamic stop loss value
var float TRAILING_STOP = na   // Trailing stop based on lowest low
// =============================================================================
// TECHNICAL INDICATORS
// =============================================================================
// Calculate True Range and its Simple Moving Average
trueRange = ta.tr(true)
smaTrueRange = ta.sma(trueRange, atrPeriod)
// Calculate 200-period Exponential Moving Average
ema200 = ta.ema(close, 200)
// Calculate lowest low over the short period
lowestLow = ta.lowest(input(low), shortPeriod)
// Calculate potential stop loss level (always available)
potentialStopLoss = close - 2 * smaTrueRange
// Volume confirmation for breakout validation
volumeSMA = ta.sma(volume, 20)  // 20-period average volume
isVolumeConfirmed = not useVolumeConfirmation or volume > volumeSMA * volumeMultiplier
// =============================================================================
// STOP LOSS MANAGEMENT
// =============================================================================
// Update trailing stop based on lowest low (always, not just when in position)
if na(TRAILING_STOP) or lowestLow > TRAILING_STOP
    TRAILING_STOP := lowestLow
// Update stop loss if we have an open position and new lowest low is higher
if (strategy.position_size > 0) and (STOP_LOSS < lowestLow)
    strategy.cancel("buy_stop")
    STOP_LOSS := lowestLow
// Soft stop loss - exit only when close is below stop level
if (strategy.position_size > 0) and (close < STOP_LOSS)
    strategy.close("buy", comment = "Soft Stop Loss")
    alert("Position closed: Soft Stop Loss triggered at " + str.tostring(close), alert.freq_once_per_bar)
// =============================================================================
// ENTRY CONDITIONS
// =============================================================================
// Enhanced entry signal with volume confirmation to avoid false breakouts
isEntrySignal = ta.crossover(close, ema200) and (strategy.position_size == 0) and isVolumeConfirmed
if isEntrySignal
    // Cancel any pending orders
    strategy.cancel("buy")
    strategy.cancel("sell")
    // Enter long at market on crossover
    strategy.entry("buy", strategy.long)
    // Set initial stop loss (2 * ATR below close, or use custom value if specified)
    if initialStopLoss > 0
        STOP_LOSS := initialStopLoss
    else
        STOP_LOSS := close - 2 * smaTrueRange
    // Alert for position opened
    alert("Position opened: Long entry at " + str.tostring(close) + " with stop loss at " + str.tostring(STOP_LOSS), alert.freq_once_per_bar)
// =============================================================================
// PLOTTING
// =============================================================================
// Plot EMA 200
plot(ema200, color = color.blue, title = "EMA 200", linewidth = 2)
// Plot Stop Loss
plot(strategy.position_size > 0 ? STOP_LOSS : lowestLow, color = color.red, title = "Stop Loss", linewidth = 2)
// Plot confirmation signals
plotshape(isEntrySignal, title="Confirmed Breakout", location=location.belowbar,
          color=color.green, style=shape.triangleup, size=size.normal)
// Plot volume confirmation (only if enabled)
bgcolor(useVolumeConfirmation and isVolumeConfirmed and ta.crossover(close, ema200) ? color.new(color.green, 90) : na, title="Volume Confirmed")