
Эта стратегия называется RSI-обратный оборот, это количественная торговая стратегия, основанная на индексе относительной силы (RSI). Эта стратегия использует два различных цикла RSI в качестве сигнала для покупки и продажи, чтобы достичь низких покупок и высоких продаж, чтобы получить торговые возможности, вызванные переворотом цен на акции.
Эта стратегия использует RSI с быстрым периодом (например, 55 дней) и RSI с медленным периодом (например, 126 дней) для построения торговых сигналов. Быстрый период RSI генерирует сигнал покупки, когда RSI с медленным периодом пересекает RSI с быстрым периодом, и, наоборот, продажа, когда RSI с медленным периодом пересекает RSI с быстрым периодом. Таким образом, сравнивая относительно сильную и слабую динамику цен в двух разных временных промежутках, можно обнаружить возможности для краткосрочного и долгосрочного переворота тенденций.
После входа в сигнал стратегия устанавливает стоп-стоп-стоп. Стоп-стоп по умолчанию в 0,9 раза выше входной цены, стоп-стоп по умолчанию в 3% выше входной цены. В то же время, при повторном появлении обратного сигнала, текущая позиция будет уравнена.
Эта стратегия использует двунаправленный RSI обратный поворот в качестве торгового сигнала с целью уловить краткосрочные возможности для ценового переворота, сравнивая более быстрый и более медленный циклы RSI. При этом устанавливаются правила стоп-стопа, чтобы избежать риска. Это типичная стратегия, использующая сравнение показателей с использованием нескольких временных осей для достижения ценового переворота.
/*backtest
start: 2022-11-29 00:00:00
end: 2023-12-05 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=2
strategy(title="Relative Strength Index", shorttitle="RSI")
slen = input(55, title="Short length")
llen = input(126, title="Long length")
sup = ema(max(change(close), 0), slen)
sdown = ema(-min(change(close), 0), slen)
rsi1 = sdown == 0 ? 100 : sup == 0 ? 0 : 100 - (100 / (1 + sup / sdown))
lup = ema(max(change(close), 0), llen)
ldown = ema(-min(change(close), 0), llen)
rsi2 = ldown == 0 ? 100 : lup == 0 ? 0 : 100 - (100 / (1 + lup / ldown))
ob = input(55, title="Overbought")
os = input(45, title="Oversold")
tp = input(.9, title="Take profit level %")*.01
sl = input(3, title="Stoploss level %")*.01
mid = avg(ob,os)
plot (mid, color=#4f4f4f, transp=0)
hline (ob, color=#4f4f4f)
hline (os, color=#4f4f4f)
long = crossover(rsi1,rsi2)
short = crossunder(rsi1,rsi2)
vall = valuewhen(long,close,0)
lexit1 = high>=(vall*tp)+vall
lexit2 = low<=vall-(vall*sl)
vals = valuewhen(short,close,0)
sexit1 = low<=vals - (vals*tp)
sexit2 = high>=vals + (vals*sl)
bgcolor (color=long?lime:na,transp=50)
bgcolor (color=short?red:na, transp=50)
strategy.entry("Long", strategy.long, when=long)
strategy.close("Long", when=lexit1)
strategy.close("Long", when=lexit2)
strategy.close("Long", when=short)
strategy.entry("Short", strategy.short, when=short)
strategy.close("Short", when=sexit1)
strategy.close("Short", when=sexit2)
strategy.close("Short", when=long)
plot (rsi1, color=orange, transp=0,linewidth=1, title="Short period RSI")
plot (rsi2, color=aqua , transp=0,linewidth=1, title="Long period RSI")