
Strategi ini menggunakan rata-rata RSI dan perubahan harga yang tiba-tiba untuk mengidentifikasi tren pasar dan titik balik. Ide inti adalah untuk mempertimbangkan posisi dalam kasus RSI overbought dan oversold, dan mencari peluang untuk membalik ketika terjadi perubahan harga yang tiba-tiba.
Perhitungan rata-rata RSI pada SMA. Ketika RSI pada SMA melewati 60 atau melewati 40 di bawah garis, dianggap sebagai overbought dan oversold, pertimbangkan untuk membuka posisi terbalik.
Ketika perubahan RSI melebihi suatu nilai, dianggap terjadi perubahan mendadak. Dikombinasikan dengan verifikasi harga penutupan yang sebenarnya, sebagai sinyal untuk membangun posisi terbalik.
Dengan menggunakan EMA multi-array filter, hanya ketika harga melewati EMA dengan siklus yang lebih pendek, akan mempertimbangkan untuk membangun multi-head; hanya ketika harga melewati EMA dengan siklus yang lebih pendek, akan mempertimbangkan untuk membangun head kosong.
Untuk mencari posisi yang lebih baik dengan menggunakan kombinasi rata-rata RSI, perubahan mendadak, dan filter EMA.
Menggunakan nilai rata-rata RSI dapat lebih akurat menilai fenomena overbought dan oversold, yang membantu untuk merebut peluang untuk berbalik.
Perubahan tiba-tiba sering menandakan perubahan tren dan arah harga, dan menggunakan sinyal ini dapat meningkatkan waktu masuk.
Filter multi-garis EMA dapat lebih jauh menghindari sinyal yang salah, sehingga mengurangi kerugian yang tidak perlu.
Dengan menggunakan berbagai parameter sebagai kriteria penilaian, dapat meningkatkan stabilitas dan keandalan strategi.
RSI menunjukkan ketidakstabilan, SMA tidak memiliki tingkat hit yang tinggi. Parameter RSI dapat dioptimalkan dengan tepat atau diganti dengan indikator lain.
Perubahan tiba-tiba mungkin adalah getaran jangka pendek, bukan pembalikan nyata. Anda dapat meningkatkan panjang siklus induksi untuk meningkatkan akurasi penilaian.
Filter arah EMA memiliki keterlambatan. EMA dengan siklus yang lebih pendek dapat diuji untuk meningkatkan sensitivitas.
Secara keseluruhan, strategi ini lebih sensitif terhadap perubahan parameter, dan memerlukan pengujian yang cermat untuk menemukan kombinasi parameter yang optimal.
Uji indikator lain seperti ADX, MACD, dan lain-lain yang digunakan bersama RSI untuk mencari titik masuk yang lebih baik.
Menambahkan algoritma pembelajaran mesin untuk menilai keaslian dan stabilitas sinyal jual beli acak melalui pelatihan model.
Meningkatkan lebih lanjut efek dari penyaringan arah EMA, seperti peningkatan penilaian komposit untuk EMA periode yang berbeda.
Dengan menambahkan strategi stop loss adaptif, stop loss dapat disesuaikan secara dinamis sesuai dengan volatilitas pasar.
Terus mengoptimalkan parameter, mencari kombinasi parameter yang optimal. Kriteria penilaian optimasi dapat mempertimbangkan rasio Sharp dan lain-lain.
Strategi ini pertama-tama menggunakan nilai rata-rata RSI untuk menilai overbought dan oversold. Kemudian membangun posisi terbalik ketika ada perubahan mendadak. Selain itu, menggunakan EMA untuk penyaringan tambahan. Dengan parameter yang masuk akal, Anda dapat secara efektif menilai titik balik tren pasar. Secara keseluruhan, strategi ini stabil dan memiliki nilai nyata.
/*backtest
start: 2023-12-12 00:00:00
end: 2023-12-19 00:00:00
period: 3m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
// This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/
// © samwillington
//@version=5
strategy("sma RSI & sudden buy and sell Strategy v1", overlay=true)
price = close
length = input( 14 )
inst_length = input( 10 )
var rbc = 0
var float rsiBP = 0.0
var rsc = 0
var float rsiSP = 0.0
bars = input(10)
lookbackno2 = input.int(20)
rsi_buy = 0
rsi_sell = 0
//EMA inputs
input_ema20 = input.int(20)
ema20 = ta.ema(price, input_ema20)
input_ema50 = input.int(50)
ema50 = ta.ema(price, input_ema50)
input_ema100 = input.int(100)
ema100 = ta.ema(price, input_ema100)
input_ema200 = input.int(200)
ema200 = ta.ema(price, input_ema200)
input_ema400 = input.int(400)
ema400 = ta.ema(price, input_ema400)
input_ema800 = input.int(800)
ema800 = ta.ema(price, input_ema800)
vrsi = ta.rsi(price, length)
hi2 = ta.highest(price, lookbackno2)
lo2 = ta.lowest(price, lookbackno2)
buy_diff_rsi = vrsi - ta.rsi(close[1], length)
sell_diff_rsi = ta.rsi(close[1],length) - vrsi
//RSI high low
var int sudS = 0
var int sudB = 0
var float sudSO = 0.0
var float sudSC = 0.0
var float sudBO = 0.0
var float sudBC = 0.0
var sudBuy = 0
var sudSell = 0
var countB = 0
var countS = 0
var co_800 = false
var co_400 = false
var co_200 = false
var co_100 = false
var co_50 = false
var co_20 = false
co_800 := ta.crossover(price , ema800)
co_400 := ta.crossover(price , ema400)
co_200 := ta.crossover(price , ema200)
co_100 := ta.crossover(price , ema100)
co_50 := ta.crossover(price , ema50)
co_20 := ta.crossover(price , ema20)
if(ta.crossunder(price , ema20))
co_20 := false
if(ta.crossunder(price , ema50))
co_50 := false
if(ta.crossunder(price , ema100))
co_100 := false
if(ta.crossunder(price , ema200))
co_200 := false
if(ta.crossunder(price , ema400))
co_400 := false
if(ta.crossunder(price , ema800))
co_800 := false
if((price> ema800) and (price > ema400))
if(co_20)
if(co_50)
if(co_100)
if(co_200)
strategy.close("Sell")
strategy.entry("Buy", strategy.long, comment="spl Buy")
co_20 := false
co_50 := false
co_100 := false
co_200 := false
// too much rsi
if(vrsi > 90)
strategy.close("Buy")
strategy.entry("Sell", strategy.short, comment="RSI too overbuy")
if(vrsi < 10)
strategy.close("Sell")
strategy.entry("Buy", strategy.long, comment="RSI too oversold")
var sudbcount = 0 // counting no. of bars till sudden rise
var sudscount = 0 // counting no. of bars till sudden decrease
if(sudB == 1)
sudbcount := sudbcount + 1
if(sudS == 1)
sudscount := sudscount + 1
if((buy_diff_rsi > inst_length) and (hi2 > price))
sudB := 1
sudBO := open
sudBC := close
if((sell_diff_rsi > inst_length) )
sudS := 1
sudSO := open
sudSC := close
if(sudbcount == bars)
if(sudBC < price)
strategy.close("Sell")
strategy.entry("Buy", strategy.long, comment="sudd buy")
sudbcount := 0
sudB := 0
sudbcount := 0
sudB := 0
if(sudscount == bars)
if(sudSC > price)
strategy.close("Buy")
strategy.entry("Sell", strategy.short, comment="sudd sell")
sudscount := 0
sudS := 0
sudscount := 0
sudS := 0
over40 = input( 40 )
over60 = input( 60 )
sma =ta.sma(vrsi, length)
coo = ta.crossover(sma, over60)
cuu = ta.crossunder(sma, over40)
if (coo)
strategy.close("Sell")
strategy.entry("Buy", strategy.long, comment="modified buy")
if (cuu)
strategy.close("Buy")
strategy.entry("Sell", strategy.short, comment="modefied sell")
//plot(strategy.equity, title="equity", color=color.red, linewidth=2, style=plot.style_areabr)