Стратегия следования за трендом на основе трехлинейного прорыва в сочетании с динамической фильтрацией EMA и системой управления рисками ATR

EMA ATR 3LS
Дата создания: 2025-02-18 15:30:08 Последнее изменение: 2025-02-18 15:30:08
Копировать: 1 Количество просмотров: 353
1
Подписаться
1617
Подписчики

Стратегия следования за трендом на основе трехлинейного прорыва в сочетании с динамической фильтрацией EMA и системой управления рисками ATR

Обзор

Эта стратегия является системой торговли, которая отслеживает тренды, основанные на трехлинейных прорывах в техническом анализе японского графического анализа. Динамическое управление рисками в сочетании с индексом движущейся средней (EMA) в качестве фильтра тренда и индикатором реального диапазона волн (ATR) повышает надежность традиционной модели трехлинейных прорывов. Эта стратегия не только может улавливать переломные моменты тренда на рынке, но и эффективно контролировать риск, подходящий для торговли трендом в среднесрочной и долгосрочной перспективе.

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

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

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

  1. Повышение надежности торговых сигналов в сочетании с признанием направленного тренда и распознаванием обратных форм
  2. Динамическая настройка стоп-стоп, которая может адаптироваться к волатильности рынка
  3. Четкая логика стратегии, регулируемые параметры, которые можно оптимизировать в соответствии с различными рыночными характеристиками
  4. Значительное сокращение ложных сигналов с помощью фильтра EMA, повышение стабильности стратегии
  5. Полная система управления рисками, включающая в себя управление капиталом и механизмы погашения убытков

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

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

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

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

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

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

Исходный код стратегии
/*backtest
start: 2025-01-18 00:00:00
end: 2025-02-17 00:00:00
period: 2h
basePeriod: 2h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

// Copyright ...
// Based on the TMA Overlay by Arty, converted to a simple strategy example.
// Pine Script v5

//@version=5
strategy(title='3 Line Strike [TTF] - Strategy with ATR and EMA Filter',
     shorttitle='3LS Strategy [TTF]',
     overlay=true,
     initial_capital=100000,
     default_qty_type=strategy.percent_of_equity,
     default_qty_value=100,
     pyramiding=0)

// -----------------------------------------------------------------------------
//                               INPUTS
// -----------------------------------------------------------------------------

// ATR and EMA Inputs
atrLength = input.int(title='ATR Length', defval=14, group='ATR & EMA')
emaLength = input.int(title='EMA Length', defval=200, group='ATR & EMA')

// ### 3 Line Strike
showBear3LS = input.bool(title='Show Bearish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bearish 3 Line Strike (3LS-Bear) = 3 zelené sviečky, potom veľká červená sviečka (engulfing).")
showBull3LS = input.bool(title='Show Bullish 3 Line Strike', defval=true, group='3 Line Strike',
     tooltip="Bullish 3 Line Strike (3LS-Bull) = 3 červené sviečky, potom veľká zelená sviečka (engulfing).")

// -----------------------------------------------------------------------------
//                          CALCULATIONS
// -----------------------------------------------------------------------------

// Calculate ATR
atr = ta.atr(atrLength)

// Calculate EMA
ema = ta.ema(close, emaLength)

// Helper Functions
getCandleColorIndex(barIndex) =>
    int ret = na
    if (close[barIndex] > open[barIndex])
        ret := 1
    else if (close[barIndex] < open[barIndex])
        ret := -1
    else
        ret := 0
    ret

isEngulfing(checkBearish) =>
    sizePrevCandle = close[1] - open[1]
    sizeCurrentCandle = close - open
    isCurrentLargerThanPrevious = math.abs(sizeCurrentCandle) > math.abs(sizePrevCandle)

    if checkBearish
        isGreenToRed = (getCandleColorIndex(0) < 0) and (getCandleColorIndex(1) > 0)
        isCurrentLargerThanPrevious and isGreenToRed
    else
        isRedToGreen = (getCandleColorIndex(0) > 0) and (getCandleColorIndex(1) < 0)
        isCurrentLargerThanPrevious and isRedToGreen

isBearishEngulfing() => isEngulfing(true)
isBullishEngulfing() => isEngulfing(false)

is3LSBear() =>
    is3LineSetup = (getCandleColorIndex(1) > 0) and (getCandleColorIndex(2) > 0) and (getCandleColorIndex(3) > 0)
    is3LineSetup and isBearishEngulfing()

is3LSBull() =>
    is3LineSetup = (getCandleColorIndex(1) < 0) and (getCandleColorIndex(2) < 0) and (getCandleColorIndex(3) < 0)
    is3LineSetup and isBullishEngulfing()

// Signals
is3LSBearSig = is3LSBear() and close < ema
is3LSBullSig = is3LSBull() and close > ema

// Take Profit and Stop Loss
longTP = close + 2 * atr
longSL = close - 1 * atr
shortTP = close - 2 * atr
shortSL = close + 1 * atr

// -----------------------------------------------------------------------------
//                          STRATEGY ENTRY PRÍKAZY
// -----------------------------------------------------------------------------
if (showBull3LS and is3LSBullSig)
    strategy.entry("3LS_Bull", strategy.long, comment="3LS Bullish")
    strategy.exit("Exit Bull", from_entry="3LS_Bull", limit=longTP, stop=longSL)

if (showBear3LS and is3LSBearSig)
    strategy.entry("3LS_Bear", strategy.short, comment="3LS Bearish")
    strategy.exit("Exit Bear", from_entry="3LS_Bear", limit=shortTP, stop=shortSL)