Стратегия Three EMA Stochastic RSI Crossover Golden Cross представляет собой стратегию следующего тренда. Она сочетает в себе индикатор Three EMA и Индекс относительной силы стохастики для определения сигналов входа, основанных на перекрестке двух индикаторов.
Определение сигнала этой стратегии основано на следующей логике:
Три EMA для определения тренда: 8-дневная EMA сверху, 14-дневная EMA в середине и 50-дневная EMA внизу формируют восходящий тренд; обратная форма формирует нисходящий тренд.
Только длинный, короткий пока не рассматривается.
Когда три EMA показывает восходящий тренд и стохастический RSI генерирует золотой крест, идите длинный.
Основными преимуществами этой стратегии с двойным определением показателей являются:
Три EMA отфильтровывают краткосрочный шум и блокируют среднесрочные и долгосрочные тенденции.
Золотой крестик стохастического RSI подтверждает сильный восходящий тренд.
ATR умные остановки потери и взять прибыль блокировки в прибыли.
Простая и понятная логика стратегии, легко понятная и реализуемая.
Основными рисками этой стратегии являются:
К основным направлениям оптимизации относятся:
Оптимизировать параметры EMA для улучшения определения тренда.
Добавьте индикаторы волатильности, такие как ATR, чтобы улучшить остановки и лимиты.
Включите громкость, чтобы избежать ложных прорывов.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-25 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Stoch RSI Crossover Strat + EMA", shorttitle="Stoch RSI Cross + EMA Strat", overlay = true) // Time Range FromMonth=input(defval=1,title="FromMonth",minval=1,maxval=12) FromDay=input(defval=1,title="FromDay",minval=1,maxval=31) FromYear=input(defval=2020,title="FromYear",minval=2017) ToMonth=input(defval=1,title="ToMonth",minval=1,maxval=12) ToDay=input(defval=1,title="ToDay",minval=1,maxval=31) ToYear=input(defval=9999,title="ToYear",minval=2017) start=timestamp(FromYear,FromMonth,FromDay,00,00) finish=timestamp(ToYear,ToMonth,ToDay,23,59) window()=>true // See if this bar's time happened on/after start date afterStartDate = time >= start and time<=finish?true:false //STOCH RSI smoothK = input(3, minval=1) smoothD = input(3, minval=1) lengthRSI = input(14, minval=1) lengthStoch = input(14, minval=1) src = input(close, title="RSI Source") rsi1 = rsi(src, lengthRSI) k = sma(stoch(rsi1, rsi1, rsi1, lengthStoch), smoothK) d = sma(k, smoothD) //ATR lengthATR = input(title="ATR Length", defval=14, minval=1) atr = atr(lengthATR) //MULTI EMA emasrc = close, len1 = input(8, minval=1, title="EMA 1") len2 = input(14, minval=1, title="EMA 2") len3 = input(50, minval=1, title="EMA 3") ema1 = ema(emasrc, len1) ema2 = ema(emasrc, len2) ema3 = ema(emasrc, len3) col1 = color.lime col2 = color.blue col3 = color.orange //EMA Plots //plot(ema1, title="EMA 1", linewidth=1, color=col1) //plot(ema2, title="EMA 2", linewidth=1, color=col2) //plot(ema3, title="EMA 3", linewidth=1, color=col3) crossup = k[0] > d[0] and k[1] <= d[1] emapos = ema1 > ema2 and ema2 > ema3 and close > ema1 barbuy = crossup and emapos //plotshape(crossup, style=shape.triangleup, location=location.belowbar, color=color.white) plotshape(barbuy, style=shape.triangleup, location=location.belowbar, color=color.green) longloss = sma(open, 1) //plot(longloss, color=color.red) //Buy and Sell Factors profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=2) stopfactor = input(title="Stopfactor", type=input.float, step=0.1, defval=3) bought = strategy.position_size[1] < strategy.position_size longcondition = barbuy if (longcondition) and (afterStartDate) and strategy.opentrades < 1 strategy.entry("Long", strategy.long) if (afterStartDate) and strategy.opentrades > 0 barsbought = barssince(bought) profit_level = strategy.position_avg_price + (atr*profitfactor) stop_level = strategy.position_avg_price - (atr*stopfactor) strategy.exit("Take Profit/ Stop Loss", "Long", stop=stop_level[barsbought], limit=profit_level[barsbought])