
Стратегия RSI с пересечением равной линии в несколько временных рамок - это стратегия для отслеживания тенденций в несколько временных рамок. Эта стратегия использует одновременно показатели RSI для нескольких временных рамок и обрабатывает весомые движущиеся средние для RSI для каждого временного периода, в конечном итоге объединяясь в два комплексных индикатора сигнала.
Сначала стратегия рассчитывает RSI на несколько временных рамок (например, 1 минута, 5 минут, 15 минут и т. д.), а затем обрабатывает RSI для каждого временного рама в виде весомой подвижной средней (VMA) длиной 15 и получает среднее значение RSI для каждого временного периода.
Затем средняя линия RSI всех временных рамок объединяется в равновесном объединении в два сигнала - быструю и медленную линии.
Сигнал покупки возникает, когда быстрая линия спускается вверх и пробивается через медленную линию; сигнал продажи возникает, когда быстрая линия спускается вверх и пробивается через медленную линию. Таким образом, комплексный кросс-сигнал RSI в многократных временных рамках позволяет эффективно отслеживать тенденции и фильтровать краткосрочный рыночный шум.
Многократное сочетание временных рамок позволяет сгладить кривую цены и эффективно отфильтровать ложные прорывы.
Индекс RSI может отражать состояние перекупа и перепродажи, чтобы избежать преследования.
Двойная равнолинейная система имеет лучшую эффективность удержания позиции, чем однолинейная.
Использование VMA вместо SMA может снизить влияние краткосрочных колебаний на среднюю линию.
Политика многократных временных рамок, высокие требования к настройке параметров, неправильная настройка может начать игру слишком рано или слишком поздно.
Среднелинейная система плохо подходит для корректировки кривых и плохо работает в точках перехода тенденции.
RSI легко отклоняется, следует обратить внимание на обратные сигналы.
Решение: корректировка параметров временных рамок; в сочетании с другими показателями, чтобы определить тенденцию, например, MACD; предупреждение о том, что RSI отклоняется от сигнала.
Оптимизация количества и параметров временных рамок, чтобы лучше улавливать тенденции.
Помимо того, что они могут быть использованы в качестве инструмента для борьбы с рисками, они также могут быть использованы в качестве инструмента для борьбы с рисками.
Повышение качества принятия решений в сочетании с другими показателями по оценке тенденций и отклонений.
Тестирование различных параметров периода удержания позиции для поиска оптимального эффекта удержания позиции.
Многовременная стратегия RSI с равнолинейным перекрестным переходом, использующая комплексные суждения о RSI-индикаторе в течение нескольких временных промежутков, использует равнолинейную систему для сглаживания кривой цены и создания торговых сигналов, является типичной стратегией отслеживания тенденций многовременных рамок. Преимущество этой стратегии заключается в том, что она может эффективно отслеживать тенденции и одновременно фильтровать шум, но требует внимания к оптимизации параметров и контролю риска.
/*backtest
start: 2023-10-16 00:00:00
end: 2023-11-15 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy(title="RSI multitimeframe SMA crossover", shorttitle="RSI multitimeframe strategy", default_qty_type= strategy.percent_of_equity, margin_long=50, default_qty_value=150)
res1 = input(title="Res 01", type=input.resolution, defval="1")
res2 = input(title="Res 0", type=input.resolution, defval="5")
res3 = input(title="Res 1", type=input.resolution, defval="15")
res4 = input(title="Res 2", type=input.resolution, defval="15")
res5 = input(title="Res 3", type=input.resolution, defval="15")
res6 = input(title="Res 4", type=input.resolution, defval="30")
res7 = input(title="Res 5", type=input.resolution, defval="45")
res8 = input(title="Res 6", type=input.resolution, defval="60")
lengthRSI = input(15, minval=1)
lengthMA = input(15, minval=1)
lengthFMA = input(100, minval=1)
lengthFMA2 = input(150, minval=1)
Long_yes = input(defval=1, title="Long trades 0 or 1", minval=0, maxval=1)
Short_yes = input(defval=0, title="Short trades 0 or 1", minval=0, maxval=1)
src = close
// === INPUT BACKTEST RANGE ===
fromMonth = input(defval = 1, title = "From Month", type = input.integer, minval = 1, maxval = 12)
fromDay = input(defval = 1, title = "From Day", type = input.integer, minval = 1, maxval = 31)
fromYear = input(defval = 2020, title = "From Year", type = input.integer, minval = 1970)
thruMonth = input(defval = 1, title = "Thru Month", type = input.integer, minval = 1, maxval = 12)
thruDay = input(defval = 1, title = "Thru Day", type = input.integer, minval = 1, maxval = 31)
thruYear = input(defval = 2112, title = "Thru Year", type = input.integer, minval = 1970)
// === INPUT SHOW PLOT ===
showDate = input(defval = true, title = "Show Date Range", type = input.bool)
// === FUNCTION EXAMPLE ===
start = timestamp(fromYear, fromMonth, fromDay, 00, 00) // backtest start window
finish = timestamp(thruYear, thruMonth, thruDay, 23, 59) // backtest finish window
window() => time >= start and time <= finish ? true : false // create function "within window of time"
// stop loss
longLossPerc = input(title="Long Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) *
0.01
longStopPrice = strategy.position_avg_price * (1 - longLossPerc)
shortLossPerc = input(title="Short Stop Loss (%)", type=input.float, minval=0.0, step=0.5, defval=10) *
0.01
shortStopPrice = strategy.position_avg_price * (1 + shortLossPerc)
rsi1 = rsi(src, lengthRSI)
MA1 = vwma(rsi1, lengthMA)
outD1 = security(syminfo.tickerid, res1, MA1)
outD2 = security(syminfo.tickerid, res2, MA1)
outD3 = security(syminfo.tickerid, res3, MA1)
outD4 = security(syminfo.tickerid, res4, MA1)
outD5 = security(syminfo.tickerid, res5, MA1)
outD6 = security(syminfo.tickerid, res6, MA1)
outD7 = security(syminfo.tickerid, res7, MA1)
outD8 = security(syminfo.tickerid, res8, MA1)
//plot_d0 = outD0
//plot_d1 = outD1
//plot_d2 = outD2
//plot_d3 = outD3
//plot_d4 = outD4
//plot_d5 = outD5
//plot_d6 = outD6
out_multi = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA)
out_multi2 = ema(outD1+outD2+outD3+outD4+outD5+outD6+outD7+outD8, lengthFMA2)
//out_multi1 = outD2+outD3+outD4
//out_multi2 = outD4+outD5+outD6
//col0 = outD0 < 20 ? color.lime : outD0 > 80 ? color.red : color.blue
//col1 = outD1 < 20 ? color.lime : outD1 > 80 ? color.red : color.blue
//col2 = outD2 < 20 ? color.lime : outD2 > 80 ? color.red : color.blue
//col3 = outD3 < 20 ? color.lime : outD3 > 80 ? color.red : color.blue
//col4 = outD4 < 20 ? color.lime : outD4 > 80 ? color.red : color.blue
//col5 = outD5 < 20 ? color.lime : outD5 > 80 ? color.red : color.blue
//col6 = outD6 < 20 ? color.lime : outD6 > 80 ? color.red : color.blue
// plot(plot_d0,linewidth=2, color=col0)
// plot(plot_d1, linewidth=2, color=col1)
// plot(plot_d2,linewidth=2, color=col2)
// plot(plot_d3,linewidth=2, color=col3)
// plot(plot_d4,linewidth=2, color=col4)
// plot(plot_d5,linewidth=2, color=col5)
// plot(plot_d6,linewidth=2, color=col6)
long=(out_multi/8)
short=(out_multi2/8)
plot(long, linewidth=1, color=color.green)
plot(short, linewidth=1, color=color.red)
long1=crossover(long,short)
short1=crossunder(long,short)
h0 = hline(65, "Upper Band", color=color.red, linestyle=hline.style_solid, linewidth=2 )
h1 = hline(35, "Lower Band", color=color.green, linestyle=hline.style_solid, linewidth=2)
strategy.entry("buy", strategy.long, when=long1 and window() and Long_yes > 0)
if strategy.position_size > 0
strategy.exit(id="XL STP", stop=longStopPrice)
strategy.close("buy",when=short1 )
strategy.entry("sell", strategy.short, when=short1 and window() and Short_yes > 0)
if strategy.position_size < 0
strategy.exit(id="XS STP", stop=shortStopPrice)
strategy.close("buy",when=long1 )