
Стратегия использует относительно сильный и слабый индекс (RSI) и простое движущееся среднее (SMA) для выявления потенциальных возможностей для возвращения средней стоимости на рынке. Сигнал покупки возникает, когда RSI ниже отметки покупки и цена ниже SMA; Сигнал продажи возникает, когда RSI выше отметки продажи и цена выше SMA.
Центральным принципом стратегии является концепция средневекового регресса, то есть цена часто возвращается к своему среднему значению, когда она находится на крайнем уровне. С помощью индикатора RSI, измеряющего состояние перекупа и перепродажи цен, и в сочетании с SMA в качестве эталонного эталона цены, стратегия пытается захватить возможность возвращения после того, как цена отклоняется от средней величины слишком далеко.
В частности, эта стратегия использует следующие шаги:
Эта относительно слабая стратегия среднезначного возвращения использует RSI и SMA для захвата возможности возвращения после отклонения цен от среднего значения. Она обладает такими преимуществами, как простота, легкость понимания, адаптивность, но может плохо работать в трендовых рынках и зависит от выбора параметров.
/*backtest
start: 2024-04-01 00:00:00
end: 2024-04-30 23:59:59
period: 3h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=5
strategy('Mean Reversion with Tight Stop Loss', overlay=true)
// Define parameters
rsiLength = 14
rsiThresholdBuy = 30
rsiThresholdSell = 70
smaPeriod = 20
stopLossPercentage = 0.5 // 0.5% stop loss
profitTargetPercentage = 1 // 1% profit target
// Calculate indicators
rsi = ta.rsi(close, rsiLength)
sma = ta.sma(close, smaPeriod)
// Entry conditions
buySignal = rsi < rsiThresholdBuy and close < sma
sellSignal = rsi > rsiThresholdSell and close > sma
// Exit conditions
if strategy.position_size > 0
stopLoss = strategy.position_avg_price * (1 - stopLossPercentage / 100)
takeProfit = strategy.position_avg_price * (1 + profitTargetPercentage / 100)
if close <= stopLoss or close >= takeProfit
strategy.close('Exit', comment='Stop Loss / Take Profit')
// Execute trades
if buySignal
strategy.entry('Buy', strategy.long)
if sellSignal
strategy.entry('Sell', strategy.short)