Strategi ini menggunakan indikator RSI untuk menilai trend pasaran, dan menghantar isyarat perdagangan di kawasan yang terlalu banyak dibeli untuk menangkap pergerakan penyesuaian garis pendek di pasaran. Ia menggabungkan indikator garis rata dan logik stop-loss untuk menyaring isyarat perdagangan dan mengawal risiko.
Hitung nilai RSI ((14) dan letakkan garis overbought pada 67, dan garis oversold pada 44.
Apabila RSI berada di atas, ia akan memberi isyarat beli. Apabila RSI berada di bawah, ia akan memberi isyarat beli.
Penapis garis rata-rata superimposed, hanya apabila harga penutupan lebih rendah daripada harga rata-rata semalam, akan menghantar isyarat beli di RSI; hanya apabila harga penutupan lebih tinggi daripada harga rata-rata semalam, akan menghantar isyarat beli di RSI.
Tetapkan logik hentian hentian. Anda boleh memilih hentian hentian pada titik tetap, atau berdasarkan nilai RSI.
Menggunakan RSI untuk menilai overbought dan oversold, dan menangkap peluang penyesuaian garis pendek.
Penapisan yang digabungkan dengan garis rata untuk mengelakkan operasi terbalik dalam keadaan trend.
Tetapkan stop loss untuk mengawal kerugian tunggal.
Ia adalah satu peluang untuk mengambil peluang di tengah-tengah kewujudan trend.
RSI mempunyai keterlambatan dan mungkin berlaku penyimpangan yang menyebabkan isyarat palsu. Penyelesaian adalah dengan menyesuaikan parameter dengan sewajarnya atau menggunakannya dengan kombinasi penunjuk lain.
Titik berhenti tetap mungkin terlalu besar atau terlalu kecil. Anda boleh memilih trailing stop yang lebih fleksibel.
Hentian tetap mungkin berhenti terlalu awal atau jumlah titik berhenti terlalu kecil. Hentian boleh dipertimbangkan berdasarkan nilai RSI atau ATR.
Ketidakupayaan untuk menyaring dengan berkesan pergerakan tren yang bergolak, yang boleh menyebabkan pembukaan dan kerugian yang kerap. Anda boleh menyesuaikan parameter RSI atau menambah syarat penyaringan lain dengan sewajarnya.
Uji kesan RSI pada parameter kitaran yang berbeza.
Menyesuaikan parameter RSI untuk menguji garis overbought dan oversold yang berbeza.
Cuba pelbagai jenis purata bergerak atau penapis lain.
Uji keserasian hentian brek tetap dan hentian brek dinamik.
Mengoptimumkan nilai hentian dan hentian sehingga lebih sesuai dengan undang-undang pergerakan pasaran.
Penambahan syarat penapisan lapangan untuk mengelakkan berlakunya gempa.
Pertimbangkan untuk menggabungkan beberapa tempoh masa untuk mengesahkan dan meningkatkan kualiti isyarat.
Strategi ini menggunakan indikator RSI untuk menilai keadaan overbought dan oversold, digabungkan dengan garis rata dan stop loss untuk perdagangan dua hala. Ia dapat menangkap peluang pembalikan pasaran dalam jangka pendek. Dengan pengoptimuman parameter dan penapis syarat tambahan, ia dapat meningkatkan lagi keberkesanan keuntungan strategi dan mengawal risiko.
/*backtest
start: 2022-09-21 00:00:00
end: 2023-09-27 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//© профешинил хомячело
//@version = 4
strategy("RSI Strategy Professional Хомячело", overlay=false)
length = input( 14 )
overSold = input( 44 )
overBought = input( 67 )
price = open
rsi = rsi(price, length)
band1 = hline(overSold, "overSold12", color=#C0C0C0)
band0 = hline(overBought, "overBought12", color=#C0C0C0)
plot(rsi, "RSI", color=color.red)
fill(band1, band0, color=color.black, transp=90, title="Background")
src = close
a = sma(src, 1)
aaa = strategy.opentrades + 1
n = input(defval = 0.0576923077, title = "AvgPrice - n")
//n = 0.0576923077
buysignal = crossover(rsi, overSold) and (a < (strategy.position_avg_price - n) or strategy.opentrades == 0)
sellsignal = crossunder(rsi, overBought) and (a > (strategy.position_avg_price + n) or strategy.opentrades == 0)
// crossover(rsi, overSold)
// crossunder(rsi, overBought)
if (not na(rsi))
if(buysignal)
strategy.entry("LONG", strategy.long, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
n += 1000
if(sellsignal)
strategy.entry("SHORT", strategy.short, comment = tostring(a) + "\n(" + tostring(aaa) + ")")
n += 1000
//лонги орні
if(rsi < 15 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("LONG", strategy.long, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ЛОНГ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
if(rsi < 20 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("LONG", strategy.long, comment = "ЛОНГ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//шорти орні
if(rsi > 85 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("SHORT", strategy.short, comment = "ЙОБАНИЙ НАСРАВ ТА БЕРИ ШОРТ НА ВСЬО ШО Є НАХУЙ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
if(rsi > 80 and strategy.opentrades != 5 and a < (strategy.position_avg_price - n))
strategy.entry("SHORT", strategy.short, comment = "ШОРТ НА ВСЮ КОТЛЄТУ\n" + tostring(a) + "\n(" + tostring(aaa) + "!!!)")
//стоп-лосс і ціль
//rsi
rsion = input(defval = false, title = "Тейк-профіт по RSI")
rcl = input(defval = 73.0, title = "RSI тейк по лонгу")
rcs = input(defval = 44.0, title = "RSI тейк по шорту")
possize = input(defval = 250.0, title = "Маржа")
posp = input(defval = 3.0, title = "Плече")
//tick
ut = input(defval = false, title = "Тейк-профіт")
tar = input(defval = 4500.0, title = "Тейк-профіт у тіках")
us = input(defval = false, title = "Стоп-лосс")
stop = input(defval = 0.0, title = "Стоп-лосс у тіках")
tar:=tar/syminfo.mintick
stop:=stop/syminfo.mintick
if(ut==true and us==false)
strategy.exit(id="LX", from_entry = "LONG", profit = tar, comment = "ТейкL")
strategy.exit(id="SX", from_entry = "SHORT", profit = tar, comment = "ТейкS")
if(us==true and ut==false)
strategy.exit(id="LX", from_entry = "LONG", loss = stop, comment = "СтопL")
strategy.exit(id="SX", from_entry = "SHORT", loss = stop, comment = "СтопS")
if(ut==true and us==true)
strategy.exit(id="LX", from_entry = "LONG", profit = tar, loss = stop, comment ="Тейк/СтопL")
strategy.exit(id="SX", from_entry = "SHORT", profit = tar, loss = stop, comment ="Тейк/СтопS")
//закриття по rsi
if(rsion == 1 )
pr = round(((a / strategy.position_avg_price - 1) * possize * posp), 2)
ppr = round(((a / strategy.position_avg_price - 1) * 100 * posp), 2)
spr = round((1 - (a / strategy.position_avg_price)) * possize * posp, 2)
sppr = round((100 - (a / strategy.position_avg_price * 100)) * posp, 2)
if(rsi > rcl)
strategy.close(id="LONG", comment = "LT\n" + tostring(ppr) + "%\n" + tostring(pr) + "$\n" + tostring(a))
if(rsi < rcs)
strategy.close(id="SHORT", comment = "ST\n" + tostring(sppr) + "%\n" + tostring(spr) + "$\n" + tostring(a))