Strategi ini merancang sistem perdagangan otomatis untuk panjang dan pendek berdasarkan indikator Relative Strength Index (RSI).
Strategi ini menghitung nilai RSI dalam kisaran 0-100 berdasarkan kenaikan dan penurunan harga dalam periode tertentu. Ketika RSI di bawah 30, itu adalah status oversold. Ketika RSI di atas 70, itu adalah status overbought. Menurut aturan ini, strategi secara otomatis pergi panjang ketika RSI mencapai zona oversold dan pergi pendek ketika RSI mencapai zona overbought.
Secara khusus, strategi pertama menghitung RSI 15 periode. Ketika RSI turun di bawah 20, dianggap oversold. Pada saat ini, ketika harga melanggar di atas rata-rata bergerak 200 hari, posisi panjang dibuka. Ketika RSI naik di atas 80, dianggap overbought. Pada saat ini, posisi pendek dibuka. Setelah pergi panjang atau pendek, mengambil keuntungan dan stop loss diatur untuk keluar posisi.
Selain itu, strategi menggambar garis landmark dan label yang sesuai ketika sinyal harga terjadi untuk membuat sinyal perdagangan lebih intuitif.
Langkah-langkah pengendalian risiko meliputi: mengoptimalkan parameter RSI, menyesuaikan ambang overbought dan oversold agar sesuai dengan produk yang berbeda, menetapkan stop loss secara wajar, menggabungkan dengan indikator tren untuk menghindari perdagangan melawan tren.
Secara keseluruhan ini adalah strategi perdagangan otomatis yang menggunakan indikator RSI untuk menilai kondisi overbought dan oversold. Ini menghasilkan sinyal perdagangan ketika RSI mencapai tingkat overbought atau oversold yang ekstrim, dan dapat secara otomatis melakukan perdagangan panjang dan pendek. Ide strategi sederhana dan jelas, mudah diterapkan, dan cocok sebagai strategi perdagangan otomatis dasar. Tetapi indikator RSI memiliki beberapa keterlambatan, sehingga disarankan untuk mengoptimalkannya dengan indikator lain untuk meningkatkan akurasi sinyal. Selain itu, perhatian harus diberikan pada pengendalian risiko, mengoptimalkan mekanisme stop loss, mengembangkan modul pengendalian risiko untuk mengurangi risiko perdagangan. Jika dioptimalkan dan diverifikasi dalam perdagangan langsung, strategi dapat menjadi sistem otomatis yang efektif untuk perdagangan panjang dan pendek.
/*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)