Эта стратегия представляет собой количественную торговую систему, которая сочетает в себе принципы среднего реверсии с техническими индикаторами MACD и ATR. Она использует полосы Боллинджера для выявления отклонений цен, MACD для подтверждения импульса и ATR для динамического управления рисками. Основная концепция заключается в том, чтобы захватить средние возможности реверсии, когда цены показывают значительное отклонение, проверяемое с помощью нескольких технических индикаторов.
Стратегия использует три технических индикатора, работающих совместно: во-первых, полосы Боллинджера определяют значительные отклонения цен; во-вторых, MACD подтверждает динамику цен, обеспечивая направление торговли в соответствии с рыночными тенденциями; наконец, ATR устанавливает динамические уровни стоп-лосса и берущей прибыли. В частности, длинные сигналы генерируются, когда цена прорывается ниже нижней полосы Боллинджера с линией MACD выше линии сигнала, в то время как короткие сигналы возникают, когда цена прорывается выше верхней полосы Боллинджера с линией MACD ниже линии сигнала. ATR динамически регулирует уровни стоп-лосса и берущей прибыли на основе волатильности рынка.
Эта стратегия сочетает в себе классический технический анализ с современными количественными методами торговли. Благодаря скоординированному использованию нескольких индикаторов, она сохраняет основные преимущества среднего реверсия, преодолевая ограничения отдельных индикаторов. Стратегия очень расширяема, способна к постоянному улучшению посредством оптимизации параметров и дополнительных функциональных модулей. Между тем, ее комплексный механизм контроля рисков обеспечивает стабильность.
/*backtest start: 2024-11-12 00:00:00 end: 2024-12-11 08:00:00 period: 3h basePeriod: 3h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Enhanced Mean Reversion with MACD and ATR", overlay=true) // Nastavenia Bollinger Bands bbLength = input(20, title="Bollinger Bands Length") bbMult = input(2, title="Bollinger Bands Multiplier") basis = ta.sma(close, bbLength) dev = ta.stdev(close, bbLength) upperBand = basis + bbMult * dev lowerBand = basis - bbMult * dev // MACD indikátor macdShort = input(12, title="MACD Short Length") macdLong = input(26, title="MACD Long Length") macdSignal = input(9, title="MACD Signal Length") [macdLine, signalLine, _] = ta.macd(close, macdShort, macdLong, macdSignal) // ATR pre dynamický Stop Loss a Take Profit atrLength = input(14, title="ATR Length") atrMultiplier = input(1.5, title="ATR Multiplier") atrValue = ta.atr(atrLength) // Vstupné podmienky pre long pozície longCondition = ta.crossover(close, lowerBand) and macdLine > signalLine if (longCondition) strategy.entry("Long", strategy.long) // Vstupné podmienky pre short pozície shortCondition = ta.crossunder(close, upperBand) and macdLine < signalLine if (shortCondition) strategy.entry("Short", strategy.short) // Dynamický Stop Loss a Take Profit na základe ATR longSL = strategy.position_avg_price - atrValue * atrMultiplier longTP = strategy.position_avg_price + atrValue * atrMultiplier * 2 shortSL = strategy.position_avg_price + atrValue * atrMultiplier shortTP = strategy.position_avg_price - atrValue * atrMultiplier * 2 // Pridanie stop loss a take profit if (strategy.position_size > 0) strategy.exit("Take Profit/Stop Loss", "Long", stop=longSL, limit=longTP) if (strategy.position_size < 0) strategy.exit("Take Profit/Stop Loss", "Short", stop=shortSL, limit=shortTP) // Vizualizácia Bollinger Bands a MACD plot(upperBand, color=color.red, title="Upper Bollinger Band") plot(lowerBand, color=color.green, title="Lower Bollinger Band") plot(basis, color=color.blue, title="Bollinger Basis") hline(0, "MACD Zero Line", color=color.gray) plot(macdLine - signalLine, color=color.blue, title="MACD Histogram") plot(macdLine, color=color.red, title="MACD Line") plot(signalLine, color=color.green, title="Signal Line") // Generovanie alertov alertcondition(longCondition, title="Long Alert", message="Long Entry Signal") alertcondition(shortCondition, title="Short Alert", message="Short Entry Signal")