RSI Длинная краткосрочная автоматизированная стратегия торговли

Автор:Чао Чжан, Дата: 2023-10-30 17:13:24
Тэги:

img

Обзор

Эта стратегия разрабатывает автоматизированную торговую систему для длинных и коротких на основе индикатора относительной силы (RSI).

Логика стратегии

Стратегия рассчитывает значения RSI в диапазоне от 0 до 100 на основе роста и падения цены в течение определенного периода. Когда RSI ниже 30, это статус перепроданности. Когда RSI выше 70, это статус перекупления. Согласно этому правилу, стратегия автоматически идет в длинную, когда RSI достигает зоны перепроданности, и идет в короткую, когда RSI достигает зоны перекупки.

В частности, стратегия сначала рассчитывает 15-периодический RSI. Когда RSI падает ниже 20, он считается перепроданным. В это время, когда цена превышает 200-дневную скользящую среднюю, открывается длинная позиция. Когда RSI поднимается выше 80, он считается перекупленным. В это время открывается короткая позиция. После длинного или короткого выхода, вывод прибыли и стоп-лосс устанавливаются на выходные позиции.

Кроме того, стратегия рисует соответствующие линии ориентиров и маркировки при появлении ценовых сигналов, чтобы сделать торговые сигналы более интуитивными.

Преимущества стратегии

  • Идея стратегии ясна и легко понятна и реализована
  • На основе показателя RSI, суждение о перекупленном и перепроданном является точным
  • Полностью автоматизированная торговля без ручного вмешательства
  • Приобретение прибыли и остановка убытков, предназначенные для эффективного контроля рисков
  • Торговые сигналы интуитивно понятны и легко контролируются

Риски стратегии

  • Индикатор RSI имеет некоторое отставание, может вызвать ошибочное суждение
  • Фиксированные пороги перекупки и перепродажи не подходят для всех продуктов
  • Неправильное установление стоп-лосса может привести к увеличению потерь
  • Торговля с основным трендом на развивающихся рынках может привести к потерям

Меры контроля риска включают: оптимизацию параметров RSI, корректировку порогов перекупленности и перепродажи в соответствии с различными продуктами, разумное установление стоп-лосса, сочетание с индикаторами тренда, чтобы избежать торговли против тренда.

Руководство по оптимизации стратегии

  • Оптимизировать параметры RSI для улучшения точности оценки перекупленности и перепроданности
  • Подтвердить торговые сигналы с помощью других индикаторов, таких как KDJ, MACD и т.д.
  • Оптимизировать установку стоп-лосса в соответствии с рыночными условиями
  • Добавить суждение о тренде, чтобы избежать обратных операций
  • Установленная кривая собственного капитала с отслеживанием стоп-лосса
  • Разработка модуля контроля рисков для контроля отдельных и общих рисков

Резюме

В целом, это автоматизированная стратегия торговли, использующая индикатор RSI для оценки условий перекупленности и перепродажи. Он генерирует торговые сигналы, когда RSI достигает экстремального уровня перекупленности или перепродажи, и может автоматически проводить длинную и короткую торговлю. Идея стратегии проста и ясна, легко внедряется и подходит как основная автоматизированная стратегия торговли. Но индикатор RSI имеет некоторые задержки, поэтому рекомендуется оптимизировать его с другими индикаторами для улучшения точности сигнала. Кроме того, следует обратить внимание на контроль рисков, оптимизировать механизм остановки потери, разрабатывать модули контроля рисков для снижения торговых рисков. Если оптимизировать и проверить в живой торговле, стратегия может стать эффективной автоматизированной системой для длинной и короткой торговли.


/*backtest
start: 2023-10-22 00:00:00
end: 2023-10-29 00:00:00
period: 15m
basePeriod: 5m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI Improved strategy", overlay=true)
higherTF1 = input.timeframe('15' , "Resolution", options = ['5', '15', '1H', 'D', 'W', 'M'])
dailyopen = request.security(syminfo.tickerid, higherTF1, close)

Reward = input(1600)
Risk = input(1600)

length = input( 5 )
overSold = input( 30 )
overBought = input( 70 )
EMA = input(200)
price = close

vrsi = ta.rsi(price, length)

RSIlowest =  vrsi[1] > vrsi ? true : false
RSIhighest = vrsi[1] < vrsi ? true : false

//ro = ta.crossunder(vrsi, 20)
//ru = ta.crossover(vrsi, 80)

co = ta.crossunder(vrsi, overSold)
cu = ta.crossunder(vrsi, overBought)

plot(ta.ema(close, EMA))
plot(ta.ema(close, 50), color = color.orange)

UponEMA = close > ta.ema(close, EMA) ? true : false
belowEMA = close < ta.ema(close, EMA) ? true : false
//transfer 'float' to 'int' to 'string'
r = int(vrsi)
value = str.tostring(r)

m = int(strategy.openprofit)
money = str.tostring(m)
if (not na(vrsi))
	//when price stand up on 200ema and rsi is at oversold area, open long position 
//	if (co and UponEMA)
  //      strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long")
        
    if(vrsi < 20 and RSIlowest)
        // line1 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color=color.aqua, width = 2)
        // line.delete(line1[1])  // remove the previous line when new bar appears
        // label1 = label.new(x=bar_index, y=dailyopen,yloc=yloc.belowbar, text = value,textcolor = color.white, color = color.green, style = label.style_label_up)
        // label.delete(label1[1])
        strategy.order("Rsi long", strategy.long, 1 , comment = "Rsi long")
        strategy.exit("exit", "Rsi long", profit = Reward, loss = Risk, comment = "Rsi long exit")
//strategy.close("Rsi short", comment = "Rsi close")

	
	

	if(vrsi > 80 and RSIhighest)
        // line2 = line.new(x1=bar_index, y1=dailyopen, x2=bar_index+1, y2=dailyopen, xloc=xloc.bar_index, style=line.style_solid,extend=extend.right, color = #e65100, width = 2)
        // line.delete(line2[1])  // remove the previous line when new bar appears
        // label2 = label.new(x=bar_index, y=dailyopen,yloc=yloc.abovebar, text = value, textcolor = color.white, color = color.red)            
        // label.delete(label2[1])
        strategy.order("Rsi short",strategy.short, 1,  comment = "Rsi short ")
        strategy.exit("exit", "Rsi short", profit = Reward,loss = Risk, comment = "Rsi short exit")
//	if(UponEMA)
//        strategy.close("Rsi short", comment = "Rsi short close")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_cross)
//plotshape(confirmPH, title="Label",offset = 1,text="Bull",style=shape.labeldown,location=location.abovebar,color=color.green,textcolor=color.green)




//when Rsi reaches overbought, draw a Horizontal Ray to close prices, similarly when it comes to oversold.(accomplished)
//detects when there is more lower/higher RSI values, adjust horizontal Ray and label to new posistion.(accomplished)

Больше