Три стратегии EMA по стохастическому RSI Crossover Golden Cross

Автор:Чао Чжан, Дата: 2024-01-26 16:07:34
Тэги:

img

Обзор

Стратегия Three EMA Stochastic RSI Crossover Golden Cross представляет собой стратегию следующего тренда. Она сочетает в себе индикатор Three EMA и Индекс относительной силы стохастики для определения сигналов входа, основанных на перекрестке двух индикаторов.

Логика стратегии

Определение сигнала этой стратегии основано на следующей логике:

  1. Три EMA для определения тренда: 8-дневная EMA сверху, 14-дневная EMA в середине и 50-дневная EMA внизу формируют восходящий тренд; обратная форма формирует нисходящий тренд.

  2. Только длинный, короткий пока не рассматривается.

Когда три EMA показывает восходящий тренд и стохастический RSI генерирует золотой крест, идите длинный.

Анализ преимуществ

Основными преимуществами этой стратегии с двойным определением показателей являются:

  1. Три EMA отфильтровывают краткосрочный шум и блокируют среднесрочные и долгосрочные тенденции.

  2. Золотой крестик стохастического RSI подтверждает сильный восходящий тренд.

  3. ATR умные остановки потери и взять прибыль блокировки в прибыли.

  4. Простая и понятная логика стратегии, легко понятная и реализуемая.

Анализ рисков

Основными рисками этой стратегии являются:

Руководство по оптимизации

К основным направлениям оптимизации относятся:

  1. Оптимизировать параметры EMA для улучшения определения тренда.

  2. Добавьте индикаторы волатильности, такие как ATR, чтобы улучшить остановки и лимиты.

  3. Включите громкость, чтобы избежать ложных прорывов.

Заключение


/*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])









Больше