RSI SMA & Strategi Beli Jual Tiba-tiba

Penulis:ChaoZhang, Tarikh: 2023-12-20 17:33:04
Tag:

img

Ringkasan

Strategi ini terutamanya menggunakan nilai purata RSI dan perubahan harga tiba-tiba untuk mengenal pasti trend pasaran dan titik pembalikan. Idea utama adalah untuk mempertimbangkan untuk menubuhkan kedudukan apabila RSI terlalu banyak dibeli atau terlalu banyak dijual, dan mencari peluang pembalikan apabila perubahan harga tiba-tiba berlaku. EMA juga digunakan sebagai penapis.

Prinsip-prinsip

  1. Hitung SMA RSI. Apabila RSI SMA melintasi di atas 60 atau jatuh di bawah 40, ia dianggap terlalu banyak dibeli atau terlalu banyak dijual, dan kedudukan terbalik akan dipertimbangkan.

  2. Apabila perubahan RSI melebihi nilai tertentu, ia dianggap sebagai perubahan tiba-tiba.

  3. Gunakan beberapa EMA untuk penapisan. Hanya apabila harga melintasi di atas EMA tempoh yang lebih pendek, kedudukan panjang akan dipertimbangkan. Hanya apabila harga jatuh di bawah EMA tempoh yang lebih pendek, kedudukan pendek akan dipertimbangkan.

  4. Dengan menggabungkan penggunaan purata RSI, perubahan tiba-tiba dan penapisan EMA, titik kemasukan yang lebih baik dapat dikenal pasti.

Analisis Kelebihan

  1. Menggunakan purata RSI boleh menilai keadaan overbought dan oversold dengan tepat, yang mendorong untuk menangkap peluang pembalikan.

  2. Perubahan tiba-tiba sering menandakan perubahan dalam trend dan arah harga, menggunakan isyarat ini boleh meningkatkan ketepatan masa entri.

  3. Penapisan EMA pelbagai peringkat dapat mengelakkan isyarat palsu dan mengurangkan kerugian yang tidak perlu.

  4. Gabungan pelbagai parameter sebagai kriteria keputusan boleh meningkatkan kestabilan dan kebolehpercayaan strategi.

Risiko dan Pengurangan

  1. Prestasi RSI mungkin tidak stabil dan kadar SMA mungkin rendah. Parameter RSI boleh dioptimumkan atau penunjuk lain boleh menggantikannya.

  2. Perubahan tiba-tiba mungkin hanya turun naik jangka pendek dan bukannya pembalikan sebenar.

  3. Terdapat kelewatan dalam penapisan arah EMA. Uji EMA jangka pendek untuk meningkatkan kepekaan.

  4. Secara amnya, strategi ini agak sensitif terhadap penyesuaian parameter. Ujian yang teliti diperlukan untuk mencari kombinasi parameter yang optimum. Gunakan stop loss untuk mengawal risiko.

Cadangan Pengoptimuman

  1. Uji penunjuk lain seperti ADX, MACD digabungkan dengan RSI untuk mencari titik kemasukan yang lebih baik.

  2. Meningkatkan algoritma pembelajaran mesin untuk menilai kesahihan dan kestabilan isyarat beli / jual tiba-tiba.

  3. Mempertingkatkan lagi penapisan arah EMA seperti menggunakan penilaian komposit EMA tempoh yang berbeza.

  4. Tambah strategi stop loss adaptif untuk menyesuaikan julat stop loss secara dinamik berdasarkan turun naik pasaran.

  5. Lanjutkan pengoptimuman parameter untuk mencari kombinasi parameter optimum.

Kesimpulan

Strategi ini pertama-tama menggunakan purata RSI untuk menentukan keadaan overbought / oversold. Posisi terbalik kemudiannya ditubuhkan apabila perubahan mendadak berlaku. EMA juga digunakan sebagai penapis tambahan. Dengan tetapan parameter yang betul, strategi ini dapat menentukan perubahan trend pasaran dengan berkesan. Secara keseluruhan, ia mempunyai kestabilan dan nilai praktikal yang baik. Masih ada ruang untuk penambahbaikan lanjut, yang memerlukan ujian dan pengoptimuman yang berterusan.


/*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)

Lebih lanjut