Эта стратегия сочетает в себе инструменты технического анализа, такие как скользящие средние (MA), индекс относительной силы (RSI) и средний истинный диапазон (ATR), чтобы поймать трендовые возможности на рынке.
Ядром этой стратегии является использование перекрестного соединения двух скользящих средних с различными периодами (быстрыми и медленными) для выявления рыночных тенденций. Когда быстрый MA пересекается над медленным MA, он указывает на восходящий тренд, и стратегия будет генерировать длинный сигнал. Напротив, когда быстрый MA пересекается ниже медленного MA, он указывает на нисходящий тренд, и стратегия будет генерировать короткий сигнал.
Для повышения надежности торговых сигналов стратегия вводит индикатор RSI в качестве фильтра импульса. Долгие позиции разрешены только тогда, когда RSI превышает определенный порог (например, 50), а короткие позиции разрешены только тогда, когда RSI ниже этого порога. Это помогает избежать торговли во время боковых рынков или когда импульс отсутствует, тем самым улучшая качество сигнала.
Кроме того, стратегия использует ATR в качестве основы для стоп-лосса, динамически корректируя уровень стоп-лосса в соответствии с волатильностью цен в течение последнего периода.
Эта стратегия эффективно сочетает в себе отслеживание трендов и фильтрацию импульса для захвата трендовых возможностей на рынке при управлении рисками. Логика стратегии ясна и легко внедряется и оптимизируется. Однако в практическом применении следует обратить внимание на риски и параметры риска. Стратегия должна быть гибко скорректирована и оптимизирована на основе характеристик рынка и индивидуальных потребностей. В целом, это сбалансированная стратегия, которая учитывает как захват трендов, так и контроль рисков, достойная дальнейшего изучения и практики.
/*backtest start: 2023-05-28 00:00:00 end: 2024-06-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Trend-Following Strategy with MACD and RSI Filter", overlay=true) // Input variables fastLength = input(12, title="Fast MA Length") slowLength = input(26, title="Slow MA Length") signalLength = input(9, title="Signal Line Length") stopLossPct = input(1.0, title="Stop Loss %") / 100 rsiLength = input(14, title="RSI Length") rsiThreshold = input(50, title="RSI Threshold") // Moving averages fastMA = ta.sma(close, fastLength) slowMA = ta.sma(close, slowLength) // MACD [macdLine, signalLine, _] = ta.macd(close, fastLength, slowLength, signalLength) // RSI rsi = ta.rsi(close, rsiLength) // Entry conditions with RSI filter bullishSignal = ta.crossover(macdLine, signalLine) and rsi > rsiThreshold bearishSignal = ta.crossunder(macdLine, signalLine) and rsi < rsiThreshold // Calculate stop loss levels longStopLoss = ta.highest(close, 10)[1] * (1 - stopLossPct) shortStopLoss = ta.lowest(close, 10)[1] * (1 + stopLossPct) // Execute trades strategy.entry("Long", strategy.long, when=bullishSignal) strategy.entry("Short", strategy.short, when=bearishSignal) strategy.exit("Exit Long", "Long", stop=longStopLoss) strategy.exit("Exit Short", "Short", stop=shortStopLoss) // Plotting signals plotshape(bullishSignal, style=shape.triangleup, location=location.belowbar, color=color.green, size=size.small, title="Bullish Signal") plotshape(bearishSignal, style=shape.triangledown, location=location.abovebar, color=color.red, size=size.small, title="Bearish Signal") // Plot MACD plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.orange, title="Signal Line") // Plot RSI hline(rsiThreshold, "RSI Threshold", color=color.gray) plot(rsi, color=color.purple, title="RSI")