Strategi ini merancang sistem perdagangan automatik untuk panjang dan pendek berdasarkan penunjuk Indeks Kekuatan Relatif (RSI). Ia boleh menghasilkan isyarat panjang dan pendek secara automatik apabila RSI mencapai tahap overbought atau oversold dan menjalankan perdagangan automatik.
Strategi ini mengira nilai RSI dalam julat 0-100 berdasarkan kenaikan dan penurunan harga dalam tempoh tertentu. Apabila RSI di bawah 30, ia adalah status oversold. Apabila RSI di atas 70, ia adalah status overbought. Menurut peraturan ini, strategi secara automatik pergi lama apabila RSI mencapai zon oversold dan pergi pendek apabila RSI mencapai zon overbought.
Secara khusus, strategi ini pertama kali mengira RSI 15 tempoh. Apabila RSI jatuh di bawah 20, ia dianggap oversold. Pada masa ini, apabila harga memecahkan di atas purata bergerak 200 hari, kedudukan panjang dibuka. Apabila RSI meningkat di atas 80, ia dianggap overbought. Pada masa ini, kedudukan pendek dibuka. Selepas pergi panjang atau pendek, mengambil keuntungan dan menghentikan kerugian ditetapkan untuk keluar kedudukan.
Di samping itu, strategi menarik garis landmark dan label yang sesuai apabila isyarat harga berlaku untuk membuat isyarat perdagangan lebih intuitif.
Langkah-langkah kawalan risiko termasuk: mengoptimumkan parameter RSI, menyesuaikan ambang overbought dan oversold untuk menyesuaikan produk yang berbeza, menetapkan stop loss dengan munasabah, menggabungkan dengan penunjuk trend untuk mengelakkan perdagangan terhadap trend.
Secara keseluruhan, ini adalah strategi perdagangan automatik yang menggunakan penunjuk RSI untuk menilai keadaan overbought dan oversold. Ia menghasilkan isyarat perdagangan apabila RSI mencapai tahap overbought atau oversold yang melampau, dan boleh secara automatik menjalankan perdagangan panjang dan pendek. Idea strategi adalah mudah dan jelas, mudah dilaksanakan, dan sesuai sebagai strategi perdagangan automatik asas. Tetapi penunjuk RSI mempunyai beberapa kelewatan, jadi disyorkan untuk mengoptimumkannya dengan penunjuk lain untuk meningkatkan ketepatan isyarat. Di samping itu, perhatian harus diberikan kepada kawalan risiko, mengoptimumkan mekanisme kehilangan berhenti, membangunkan modul kawalan risiko untuk mengurangkan risiko perdagangan. Jika dioptimumkan dan disahkan dalam perdagangan langsung, strategi boleh menjadi sistem automatik yang berkesan 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)