
Эта стратегия основана на RSI, разработанной для многолинейной автоматической торговой системы. Система может автоматически вводить многолинейные позиции, когда RSI перекупает и перепродает, и активно останавливать убытки при возникновении определенных условий.
Эта стратегия использует RSI, чтобы определить явление перекупа и перепродажи на рынке. В частности, когда RSI ниже установленной линии перепродажи, вы совершаете покупку; когда RSI выше установленной линии перекупа, вы совершаете покупку.
Кроме того, в этой стратегии также установлены условия для выхода из игры. Если RSI снова пересечет линию перекупа после выхода из игры, то это вызовет убыточный выход из игры. Точно так же, если RSI снова пересечет линию продажи после выхода из игры, то это вызовет убыточный выход из игры.
Наибольшее преимущество этой стратегии заключается в том, что она использует индикатор RSI для определения перекупа и перепродажи на рынке, что является более зрелым и надежным методом технического анализа в количественной торговле. По сравнению с простой стратегией движущихся средних, эта стратегия может более точно улавливать переломные моменты рынка, что повышает прибыльность торговой системы.
Кроме того, эта стратегия устанавливает условия выхода из игры, которые позволяют эффективно контролировать риски потери в односторонней ситуации. Это отличается от традиционной стратегии следования тенденции, которая позволяет избежать ситуации, когда держатель позиции забит.
Наибольший риск этой стратегии заключается в том, что торговые сигналы, исходящие от RSI, могут быть неправильно истолкованы. Ни один технический индикатор не может точно определить движение рынка, RSI не является исключением.
Чтобы снизить этот риск, в этой стратегии установлена линия стоп-лосса. Однако в односторонних ситуациях вероятность того, что линия стоп-лосса будет вызвана, также будет выше. В этом случае требуется ручное вмешательство, чтобы закрыть ошибочную позицию.
В этой стратегии есть место для дальнейшей оптимизации:
В сочетании с несколькими индикаторами, подтверждающими входный сигнал, избегается ошибочный вход, вызванный суждением о RSI отдельно. Например, можно добавить индикатор скользящей средней и т. Д.
Оптимизируйте RSI, чтобы найти более подходящие параметры длины RSI, чтобы более точно оценивать перекуп и перепродажу.
Оптимизируйте настройки стоп-линий, чтобы избежать максимальных потерь, но также убедитесь, что они не будут слишком чувствительными.
В целом, эта автоматическая торговая стратегия, основанная на RSI, имеет преимущества в эффективном распознавании перекупа и перепродажи на рынке. Она направлена на получение прибыли от рыночных оборотов, входя в позиции сверх и ниже во время экстремальных уровней RSI.
/*backtest
start: 2023-02-22 00:00:00
end: 2024-02-28 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("Soran Strategy 2 - LONG SIGNALS", pyramiding=1, initial_capital=1000, default_qty_type=strategy.percent_of_equity, default_qty_value=50, overlay=false)
// ----------------- Inputs ----------------- //
reso = input(title="Resolution", type=input.resolution, defval="")
length = input(20, title="RSI Length", type=input.integer)
ovrsld = input(30, "RSI Oversold level", type=input.float)
ovrbgt = input(85, "RSI Overbought level", type=input.float)
lateleave = input(28, "Number of candles", type=input.integer)
// lateleave : numbers of bars in overbought/oversold zones where the position is closed. The position is closed when this number is reached or when the zone is left (the first condition).
// best parameters BTCUSDTPERP M15 : 20 / 30 / 85 / 28
stratbull = input(title="Enter longs ?", type = input.bool, defval=true)
stratbear = input(title="Enter shorts ?", type = input.bool, defval=true)
stratyear = input(2020, title = "Strategy Start Year")
stratmonth = input(1, title = "Strategy Start Month")
stratday = input(1, title = "Strategy Start Day")
stratstart = timestamp(stratyear,stratmonth,stratday,0,0)
// --------------- Laguerre ----------------- //
laguerre = input(title="Use Laguerre on RSI ?", type=input.bool, defval=false)
gamma = input(0.06, title="Laguerre Gamma")
laguerre_cal(s,g) =>
l0 = 0.0
l1 = 0.0
l2 = 0.0
l3 = 0.0
l0 := (1 - g)*s+g*nz(l0[1])
l1 := -g*l0+nz(l0[1])+g*nz(l1[1])
l2 := -g*l1+nz(l1[1])+g*nz(l2[1])
l3 := -g*l2+nz(l2[1])+g*nz(l3[1])
(l0 + 2*l1 + 2*l2 + l3)/6
// ---------------- Rsi VWAP ---------------- //
rsiV = security(syminfo.tickerid, reso, rsi(vwap(close), length))
rsiVWAP = laguerre ? laguerre_cal(rsiV,gamma) : rsiV
// ------------------ Plots ----------------- //
prsi = plot(rsiVWAP, color = rsiVWAP>ovrbgt ? color.red : rsiVWAP<ovrsld ? color.green : color.white, title="RSI on VWAP", linewidth=1, style=plot.style_line)
hline = plot(ovrbgt, color = color.gray, style=plot.style_line)
lline = plot(ovrsld, color = color.gray, style=plot.style_line)
fill(prsi,hline, color = rsiVWAP > ovrbgt ? color.red : na, transp = 30)
fill(prsi,lline, color = rsiVWAP < ovrsld ? color.green : na, transp = 30)
// ---------------- Positions: only shows Buy and close Buy positions --------------- //
timebull = stratbull
timebear = stratbear
strategy.entry("Long", true, when = timebull and crossover(rsiVWAP, ovrsld), comment="")
strategy.close("Long", when = timebull and crossover(rsiVWAP, ovrbgt)[lateleave] or crossunder(rsiVWAP, ovrbgt), comment="")