Стратегия двойной перекупленности и перепроданности на основе индикатора RSI


Дата создания: 2023-09-13 16:58:55 Последнее изменение: 2023-09-13 16:58:55
Копировать: 0 Количество просмотров: 670
1
Подписаться
1617
Подписчики

Эта стратегия называется “двойная стратегия перекупа и перепродажи на основе RSI”. Эта стратегия использует одновременно RSI и Stoch RSI для определения перекупа и перепродажи, что обеспечивает более надежный торговый сигнал.

RSI отражает уровень перекупа и перепродажи цены. RSI выше 70 означает перекуп, а ниже 30 означает перепродажу. RSI Stoch показывает, входит ли RSI в состояние перекупа или перепродажи.

Логика сделки в этой стратегии:

Когда RSI пересекает линию перекупа, установленную пользователем, это означает, что он перекупает и рассматривает возможность позиционирования в открытом положении;

Когда RSI пересекает линию перепродажи, установленную пользователем, это означает, что он перепродает и рассматривает возможность сделать больше;

В то же время, Stoch RSI также должен показывать сигналы о перекупке или перепродаже, чтобы подтвердить соответствующий входный сигнал.

Это двойственное сочетание условий позволяет отфильтровывать более неопределенные сигналы и избегать ложных прорывов.

Преимущество этой стратегии заключается в том, что она использует различные производные показатели RSI, чтобы более точно определить зоны перекупа и перепродажи. Однако следует обратить внимание на риск избыточной оптимизации, связанный с кривой. Также необходима стратегия остановки убытков.

В целом, использование пакетов индикаторов требует осторожного взвешивания. Разумное использование может повысить эффективность, но также может привести к риску чрезмерной оптимизации.

Исходный код стратегии
/*backtest
start: 2023-01-01 00:00:00
end: 2023-09-12 00:00:00
period: 4d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy("test1","t1",overlay=true, default_qty_type = strategy.percent_of_equity,default_qty_value=100,initial_capital=200, currency=currency.USD)
//user input
k_param = input(title = "k length", type = input.integer, defval = 14)
d_param = input(title = "d length", type = input.integer, defval = 3)
rsi_param = input(title = "RSI", type = input.integer, defval = 5)
upper = input(title = "over brought", type = input.integer, defval = 80)
lower = input(title = "over sold", type = input.integer, defval = 20)

//calculation
rsi = rsi(close,rsi_param)
stochastic = 100*(rsi - lowest(rsi,k_param))/(highest(rsi,k_param)-lowest(rsi,k_param))
SMA = sma(stochastic,d_param)

//DRAW
plot(upper,color = color.blue,linewidth = 2, title ="超买")
plot(lower,color = color.blue,linewidth = 2, title ="超卖")
plot(rsi,color = rsi>upper ?color.red:rsi<lower? color.green:color.black, linewidth=2,title ="ris超买超卖")
plot(stochastic,color = color.purple,title="震荡指数")
plot(SMA, color = color.orange,title="移动平均")

//trading
shortposition = crossover(rsi,upper)
longposition = crossunder(rsi,lower)
strategy.entry("卖",false,when =(shortposition))
strategy.entry("买",true,when = (longposition))
strategy.exit("止盈",profit = close*0.013/syminfo.mintick)