Эта стратегия открывает длинные позиции на основе EMA кроссовера и скрытых сигналов бычьего расхождения RSI, чтобы определить начало восходящей тенденции. Комбинация линий EMA, индикатора RSI и цен закрытия K-линии обеспечивает двойное подтверждение для обеспечения восходящего импульса. Эта стратегия подходит для отслеживания средне-долгосрочных тенденций и открытия длинных позиций после консолидации цен.
Стратегия EMA: использование золотого креста 50-периодного EMA и 250-периодного EMA для определения направления тренда.
Скрытая стратегия дивергенции: RSI формирует более низкие минимумы, в то время как цена формирует более высокие минимумы, сигнализируя об обратном тренде в начале.
К-линейная стратегия закрытия: идти длинный, когда цена закрытия выше линии 50 EMA.
Сочетание трех вышеуказанных стратегий определяет начало восходящей тенденции и соответствующим образом открывает длинные позиции.
Использование линий EMA для определения направления тренда наряду с сигналами обратного движения RSI позволяет начать ранний вход в начале тренда.
Двойное подтверждение от линий EMA, индикатора RSI и цены закрытия линии K эффективно отфильтровывает ложные сигналы.
Следование среднесрочным и долгосрочным тенденциям позволяет выявить новые тенденции роста после консолидации.
Закрыть позиции, когда линии EMA имеют смертельный крест.
Выявление скрытых расхождений RSI требует опыта, неправильная настройка параметров может привести к отсутствию или ложным сигналам.
Параметры должны быть оптимизированы для различных торговых инструментов.
Динамически регулируйте параметры EMA для лучшей точности определения тренда.
Прекрасно настройте параметры RSI для лучшей точности скрытого дивергентного сигнала.
Добавьте механизмы остановки потери, такие как ATR или процентные остановки для контроля рисков.
Разработать стратегии для коротких позиций для торговли понижающимися тенденциями.
Эта стратегия сочетает в себе линии EMA для определения тренда и сигналы RSI для повышения точности. Она идентифицирует новые восходящие тенденции после консолидации. При правильном настроении параметров и управлении рисками она может достичь хороших результатов. По сравнению с простыми движущимися средними стратегиями, она имеет более высокую точность в улавливании тенденций с лучшими показателями выигрыша.
/*backtest start: 2024-01-25 00:00:00 end: 2024-02-01 00:00:00 period: 1m basePeriod: 1m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="EMA RSI ATR Hidden Div Strat", shorttitle="Hidden Div Strat", overlay = true, pyramiding = 0, max_bars_back=3000, calc_on_order_fills = false, commission_type = strategy.commission.percent, commission_value = 0, default_qty_type = strategy.percent_of_equity, default_qty_value = 10, initial_capital=5000, currency=currency.USD) // 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=2016) 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 // Bar's time happened on/after start date? afterStartDate = time >= start and time<=finish?true:false //EMA'S emasrc = close len1 = input(50, minval=1, title="EMA1") ema1 = ema(emasrc, len1) col1 = color.white len2 = input(250, minval=1, title="EMA2") ema2 = ema(emasrc, len2) col2 = color.yellow //Plots plot(ema1, title="EMA1", linewidth=1, color=col1) plot(ema2, title="EMA2", linewidth=1, color=col2) //Stoch periodK = input(4, title="K", minval=1) periodD = input(4, title="D", minval=1) smoothK = input(3, title="Smooth", minval=1) k = sma(stoch(close, high, low, periodK), smoothK) d = sma(k, periodD) //Hidden Divergence Indikator len = input(title="RSI Period", minval=1, defval=14) src = input(title="RSI Source", defval=close) lbR = input(title="Pivot Lookback Right", defval=1) lbL = input(title="Pivot Lookback Left", defval=19) rangeUpper = input(title="Max of Lookback Range", defval=20) rangeLower = input(title="Min of Lookback Range", defval=4) hiddenBullColor = color.new(color.green, 80) textColor = color.white noneColor = color.new(color.white, 100) osc = rsi(src, len) plFound = na(pivotlow(osc, lbL, lbR)) ? false : true phFound = na(pivothigh(osc, lbL, lbR)) ? false : true _inRange(cond) => bars = barssince(cond == true) rangeLower <= bars and bars <= rangeUpper //------------------------------------------------------------------------------ // Hidden Bullish // Osc: Lower Low oscLL = osc[lbR] < valuewhen(plFound, osc[lbR], 1) and _inRange(plFound[1]) // Price: Higher Low priceHL = low[lbR] > valuewhen(plFound, low[lbR], 1) hiddenBullCond = priceHL and oscLL and plFound //buy Conditions buyhiddenbull = hiddenBullCond[1] or hiddenBullCond[2] or hiddenBullCond[3] or hiddenBullCond[4] or hiddenBullCond[5] or hiddenBullCond[6] or hiddenBullCond[7] or hiddenBullCond[8] or hiddenBullCond[9] or hiddenBullCond[10] emacondition = ema1 > ema2 upcondition = close[1] > ema1[1] and ema2[1] and close[2] > ema1[2] and ema2[2] and close[3] > ema1[3] and ema2[3] crossup = k[0] >= d[0] and k[1] <= d[1] longcondition = emacondition and upcondition and crossup and buyhiddenbull if (afterStartDate) strategy.entry("Long", strategy.long, when = longcondition) //TakeProfit, StopLoss lowest low profitfactor = input(title="Profitfactor", type=input.float, step=0.1, defval=1.6) loLen = input(title="Lowest Low Lookback", type=input.integer, defval=38, minval=2) stop_level = lowest(low, loLen)[1] bought = strategy.position_size[1] < strategy.position_size barsbought = barssince(bought) if strategy.position_size>0 profit_level = strategy.position_avg_price + ((strategy.position_avg_price - stop_level[barsbought])*profitfactor) strategy.exit(id="TP/ SL", stop=stop_level[barsbought], limit=profit_level)