Это стратегия, которая сочетает в себе пересечение скользящей средней с индексом относительной силы (RSI). Стратегия определяет направление тренда рынка с помощью краткосрочных и долгосрочных пересечений скользящей средней, используя RSI в качестве фильтра импульса для подтверждения силы тренда, тем самым повышая надежность торговых сигналов. Стратегия также включает процентные стоп-лосс и прибыль для управления рисками.
Стратегия использует 9-периодные и 21-периодные простые скользящие средние (SMA) в качестве основных индикаторов тренда. Долгие сигналы генерируются, когда краткосрочный MA пересекает длительный MA и RSI превышает 50, в то время как короткие сигналы возникают, когда краткосрочный MA пересекает длительный MA и RSI ниже 50.
Это хорошо структурированная стратегия, следующая за трендом с четкой логикой. Она обеспечивает базовое направление тренда через перекрестки MA, подтверждение импульса через RSI, в сочетании с механизмами управления рисками для формирования полной торговой системы. Хотя у нее есть некоторые врожденные ограничения, благодаря постоянной оптимизации и корректировке, стратегия имеет потенциал для поддержания стабильной производительности в различных рыночных условиях.
/*backtest start: 2019-12-23 08:00:00 end: 2024-12-10 08:00:00 period: 1d basePeriod: 1d exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Moving Average Crossover + RSI Strategy", overlay=true, shorttitle="MA RSI Strategy") // --- Input Parameters --- shortMA = input.int(9, title="Short MA Period", minval=1) longMA = input.int(21, title="Long MA Period", minval=1) rsiLength = input.int(14, title="RSI Length", minval=1) rsiOverbought = input.int(70, title="RSI Overbought Level", minval=50, maxval=100) rsiOversold = input.int(30, title="RSI Oversold Level", minval=0, maxval=50) stopLossPercent = input.float(1, title="Stop Loss Percentage", minval=0.1, maxval=10.0) / 100 takeProfitPercent = input.float(2, title="Take Profit Percentage", minval=0.1, maxval=10.0) / 100 // --- Calculate Moving Averages --- shortMA_value = ta.sma(close, shortMA) longMA_value = ta.sma(close, longMA) // --- Calculate RSI --- rsi_value = ta.rsi(close, rsiLength) // --- Buy and Sell Conditions --- longCondition = ta.crossover(shortMA_value, longMA_value) and rsi_value > 50 shortCondition = ta.crossunder(shortMA_value, longMA_value) and rsi_value < 50 // --- Plot Moving Averages --- plot(shortMA_value, color=color.blue, linewidth=2, title="Short MA") plot(longMA_value, color=color.red, linewidth=2, title="Long MA") // --- Plot RSI (Optional) --- hline(rsiOverbought, "Overbought", color=color.red) hline(rsiOversold, "Oversold", color=color.green) plot(rsi_value, color=color.purple, title="RSI") // --- Strategy Execution --- if (longCondition) strategy.entry("Long", strategy.long) if (shortCondition) strategy.entry("Short", strategy.short) // --- Risk Management (Stop Loss and Take Profit) --- longStopLoss = close * (1 - stopLossPercent) longTakeProfit = close * (1 + takeProfitPercent) shortStopLoss = close * (1 + stopLossPercent) shortTakeProfit = close * (1 - takeProfitPercent) // Set the stop loss and take profit for long and short positions strategy.exit("Long Exit", from_entry="Long", stop=longStopLoss, limit=longTakeProfit) strategy.exit("Short Exit", from_entry="Short", stop=shortStopLoss, limit=shortTakeProfit)