Стратегия кроссовера скользящих средних показателей RSI на несколько временных рамок - это стратегия, следующая за тенденциями в нескольких временных раумах.
Эта стратегия сначала рассчитывает индикаторы RSI на нескольких временных отрезках (1-минутный, 5-минутный, 15-минутный и т. Д.).
После этого все скользящие средние показатели 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 )