Эта стратегия сначала рассчитывает ADX и SMA в более высокие временные рамки для определения направления тренда и изменений. Затем RSI рассчитывается в более низкие временные рамки для определения условий перекупа и перепродажи для генерации торговых сигналов.
ADX на более высоких временных отрезках оценивает силу тренда.
Увеличение SMA на более высоких временных отрезках определяет направление тренда.
RSI на более низких временных отрезках оценивает условия перекупа и перепродажи.
Когда ADX поднимается, SMA поднимается, а RSI перекуплен на более низком временном отрезке, считается, что восходящий тренд укрепляется.
Когда ADX повышается, SMA падает, а RSI перепродан на более низком временном отрезке, считается, что нисходящий тренд укрепляется, идите на длинный здесь.
Сочетает в себе суждение о тенденциях и торговлю реверсией, может поймать возможности реверсии в основных тенденциях.
Использует индикаторы по временным рамкам, улучшает надежность сигналов.
Стратегия RSI проста в понимании и реализации.
Возможность ложных сигналов RSI, вызывающих потерю сделок, может оптимизировать параметры для уменьшения ложных сигналов.
Основные тенденции цикла могут быть неправильными, что делает стратегию не подходит для рыночных условий.
Потенциально высокая частота торговли, влияющая на рентабельность из-за затрат на транзакции.
Испытайте больше комбинаций параметров, чтобы найти оптимальное соответствие между параметрами RSI и ADX, SMA.
Добавить механизм остановки потери для контроля потери на одной сделке.
Подумайте о индикаторе волатильности для уменьшения размера позиции при низкой волатильности.
Оптимизировать конкретные цены входа и выхода, например, выйти на короткий срок после прорыва предыдущих высоких уровней.
Эта стратегия сочетает в себе суждение о тренде и сигналы обворота, чтобы найти локальные изменения в основных тенденциях. По сравнению с использованием только RSI, она более надежна и избегает попадания в ловушку. В целом относительно консервативная стратегия подходит для инвесторов, стремящихся уменьшить ложные сигналы. Дальнейшее тестирование параметров и оптимизация механизма могут улучшить эффективность стратегии.
/*backtest start: 2022-12-27 00:00:00 end: 2024-01-02 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI scalping", overlay=true) CustSession = input(defval=true,title= "Custom Resolution / TF ? ",type=bool) SessionTF0 = input(title="Custom Resolution / TF", defval="180") adxlen = input(14, title="ADX Smoothing") dilen = input(14, title="DI Length") length = input(7, title= "RSI length") overSold = input( 28, title= "RSI oversold" ) overBought = input( 68, title= "RSI overbought" ) RSI = rsi(close, 7) res = CustSession ? SessionTF0 : period o = request.security(syminfo.tickerid, res, open) c = request.security(syminfo.tickerid, res, close) l = request.security(syminfo.tickerid, res, low) h = request.security(syminfo.tickerid, res, high) // ADX higher time frame dirmov(len) => up = change(h) down = -change(l) plusDM = na(up) ? na : (up > down and up > 0 ? up : 0) minusDM = na(down) ? na : (down > up and down > 0 ? down : 0) truer = request.security(syminfo.tickerid, res, tr) truerange = rma(truer, len) plus = fixnan(100 * rma(plusDM, len) / truerange) minus = fixnan(100 * rma(minusDM, len) / truerange) [plus, minus] adx(dilen, adxlen) => [plus, minus] = dirmov(dilen) sum = plus + minus adx = 100 * rma(abs(plus - minus) / (sum == 0 ? 1 : sum), adxlen) sig = adx(dilen, adxlen) // SMA higher time frame len = input(20, minval=1, title="SMA HTF Length") smma = 0.0 smma := na(smma[1]) ? sma(c, len) : (smma[1] * (len - 1) + c) / len ADXrising = (sig > sig[1]) and (sig[1] > sig[2]) and (sig[2] > sig[3]) and (sig > 15) SMAdrop= (smma < smma[1]) and (smma[1] < smma[2]) and (smma[2] < smma[3]) SMArising = (smma > smma[1]) and (smma[1] > smma[2]) and (smma[2] > smma[3]) longCondition = crossover(RSI, overBought) and ADXrising and SMArising shortCondition = crossunder(RSI, overSold) and SMAdrop and ADXrising if (longCondition) strategy.entry("Long entry", strategy.long) if (shortCondition) strategy.entry("Short Entry", strategy.short)