Двойная стратегия перекупки/перепродажи на основе индикатора RSI

Автор:Чао Чжан, Дата: 2023-09-13 16:58:55
Тэги:

Эта стратегия называется Dual Overbought/Oversold Strategy Based on RSI Indicator. Она использует как индикатор RSI, так и индикатор Stoch RSI для определения условий перекупления и перепродажи для более надежных торговых сигналов.

Показатель RSI отражает уровни перекупленности/перепроданности в ценах. Показатель RSI выше 70 предполагает перекупленность, а ниже 30 - перепроданность.

Логика торговли такова:

Когда 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)

Больше