
Стратегия представляет собой торговую систему для отслеживания тенденций, основанную на нескольких технических показателях. Она объединяет среднюю линию (EMA), относительно сильный индикатор (RSI), объем торгов (Volume) и реальный диапазон (ATR) для определения времени входа в рынок, а также использует ATR для динамической установки стоп-поста и стоп-позиций.
Стратегия использует пересечение быстрых ЭМА (цикл 9) и медленных ЭМА (цикл 21) для захвата изменения тренда. На этой основе, в сочетании с показателем RSI (цикл 14) для фильтрации избыточных зон покупок и продаж, требуя, чтобы значения RSI находились за пределами зон сверхпокупок (цикл 70) и сверхпродаж (цикл 30). В то же время, стратегия требует, чтобы объем торгов превышал средний объем торгов за 20 циклов, и требует, чтобы цена закрытия преодолела предыдущую высокую или низкую точку линии K в качестве дополнительного подтверждения входа.
Введите параметры для адаптивных показателей: Циклическая настройка EMA и RSI может быть автоматически скорректирована в зависимости от рыночных колебаний, что позволяет стратегии лучше адаптироваться к различным рыночным условиям.
Добавить фильтр рыночной среды: Добавление индикаторов интенсивности тренда, таких как ADX, автоматически снижает позиции или приостанавливает торговлю на горизонтальном рынке.
Оптимизируйте убыточные стратегии: Можно рассмотреть возможность установки сдерживания убытков в сочетании с сдерживающими сопротивлениями для повышения эффективности сдерживания убытков.
Улучшение управления объемами: Корректировка размеров позиций в соответствии с динамикой волатильности и ликвидности рынка.
Это целостная, логически строгая стратегия отслеживания тенденций. Использование множества технических показателей в сочетании гарантирует надежность торговых сигналов и позволяет эффективно контролировать риск. Динамическая стоп-стоп-установка обеспечивает хорошую прибыль по сравнению с риском.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"TRB_USDT"}]
*/
//@version=6
strategy("15m EMA RSI Strategy with ATR SL/TP and Candle Break Confirmation", overlay=true, initial_capital=100000, default_qty_type=strategy.percent_of_equity, default_qty_value=10)
// INPUTS
fastLength = input.int(9, title="Fast EMA Length")
slowLength = input.int(21, title="Slow EMA Length")
rsiLength = input.int(14, title="RSI Length")
rsiOverbought = input.int(70, title="RSI Overbought Level")
rsiOversold = input.int(30, title="RSI Oversold Level")
volLength = input.int(20, title="Volume MA Length")
atrLength = input.int(14, title="ATR Length")
atrMultiplierSL = input.float(1.5, title="ATR Multiplier for Stop Loss")
atrMultiplierTP = input.float(3.0, title="ATR Multiplier for Take Profit")
trailingStopMultiplier = input.float(1.0, title="ATR Multiplier for Trailing Stop")
// INDICATOR CALCULATIONS
fastEMA = ta.ema(close, fastLength)
slowEMA = ta.ema(close, slowLength)
rsiValue = ta.rsi(close, rsiLength)
volMA = ta.sma(volume, volLength)
atr = ta.atr(atrLength)
// Candle Breakout Conditions for Confirmation
longCandleBreak = close > high[1]
shortCandleBreak = close < low[1]
// Plot EMAs for visual reference
plot(fastEMA, color=color.blue, title="Fast EMA")
plot(slowEMA, color=color.orange, title="Slow EMA")
// ENTRY CONDITIONS
longCondition = ta.crossover(fastEMA, slowEMA) and (rsiValue < rsiOverbought) and (volume > volMA) and longCandleBreak
shortCondition = ta.crossunder(fastEMA, slowEMA) and (rsiValue > rsiOversold) and (volume > volMA) and shortCandleBreak
// Plot Buy/Sell Signals on the Chart
plotshape(longCondition, title="Buy Signal", location=location.belowbar, color=color.green, style=shape.labelup, size=size.normal)
plotshape(shortCondition, title="Sell Signal", location=location.abovebar, color=color.red, style=shape.labeldown, size=size.normal)
// TRADE EXECUTION WITH ATR-BASED STOP LOSS, TAKE PROFIT, AND TRAILING STOP
if longCondition
longStop = close - atrMultiplierSL * atr
longTP = close + atrMultiplierTP * atr
strategy.entry("Long", strategy.long)
strategy.exit("Exit Long", from_entry="Long", stop=longStop, limit=longTP, trail_points=atr * trailingStopMultiplier)
if shortCondition
shortStop = close + atrMultiplierSL * atr
shortTP = close - atrMultiplierTP * atr
strategy.entry("Short", strategy.short)
strategy.exit("Exit Short", from_entry="Short", stop=shortStop, limit=shortTP, trail_points=atr * trailingStopMultiplier)
// OPTIONAL: Plot RSI for reference
hline(rsiOverbought, "Overbought", color=color.red)
hline(rsiOversold, "Oversold", color=color.green)
plot(rsiValue, color=color.purple, title="RSI")