Indikator RSI dikombinasikan dengan strategi perdagangan Bollinger Bands


Tanggal Pembuatan: 2023-12-21 11:17:19 Akhirnya memodifikasi: 2023-12-21 11:17:19
menyalin: 0 Jumlah klik: 809
1
fokus pada
1623
Pengikut

Indikator RSI dikombinasikan dengan strategi perdagangan Bollinger Bands

1. Gambaran Umum Strategi

Strategi ini disebut strategi RSI Bollinger Bands Stop Loss (RSI Bollinger Bands TP/SL Strategy). Strategi ini menggabungkan indikator RSI dan indikator Bollinger Bands untuk melakukan posisi tren dan melakukan perdagangan yang melanggar.

2. Prinsip Strategi

1. RSI mengindeks kebalikan

Indikator RSI dapat menentukan apakah suatu saham berada dalam zona overbought dan oversold. Jika RSI lebih besar dari garis overbought yang ditetapkan, maka itu adalah overbought, dan jika lebih kecil dari garis oversold yang ditetapkan, maka itu adalah oversold. Strategi ini menetapkan garis overbought menjadi 50, dan garis oversold menjadi 50.

2. Kecenderungan Brin untuk menilai

Brin-band dengan menghitung selisih standar harga saham, mendapatkan harga saham naik-turun. Rel atas adalah garis resistensi, rel bawah adalah garis dukungan. Rel atas adalah titik beli ketika harga saham naik turun, dan rel bawah adalah titik jual ketika naik turun.

3. RSI digabungkan dengan BRI

Ketika indikator RSI muncul di bawah sinyal reversal, sementara harga saham menembus Bollinger Bands downtrack, berpikir bahwa pasar dari bawah ke atas reversal, melakukan lebih banyak; ketika indikator RSI muncul di atas sinyal reversal, sementara harga saham jatuh Bollinger Bands uptrack, berpikir bahwa pasar dari atas ke bawah reversal, melakukan shorting.

Ketiga, keunggulan strategi.

1. Filter ganda indikator meningkatkan akurasi sinyal

Indikator RSI dan indikator Brinks digunakan untuk menentukan tren dan titik balik. Penggunaan keduanya dalam kombinasi dapat meningkatkan akurasi identifikasi sinyal jual beli yang sebenarnya dan mencegah terjadinya false breakout.

2. Pengendalian risiko dari Stop Loss Mechanism

Strategi yang mengatur stop loss stop loss, melakukan stop loss plus entry price(Rasio Stop Loss + 1) Stop Loss adalah harga masuk(1- Stop Loss Ratio); sebaliknya, melakukan shorting dapat mengunci keuntungan, menghindari kerugian, dan mengontrol risiko.

3. Mengatur arah jual beli

Strategi dapat memilih hanya melakukan perdagangan lebih banyak, hanya melakukan perdagangan lebih sedikit atau perdagangan dua arah, pengguna dapat memilih arah yang berbeda sesuai dengan kondisi pasar, dan memiliki fleksibilitas untuk mengendalikan risiko.

Keempat, risiko strategis

1. Sensitif terhadap parameter Brin.

Ukuran standar dari Brinband mempengaruhi lebar dari Brinband sehingga mempengaruhi sinyal perdagangan yang dihasilkan. Jika parameter yang tidak tepat, dapat menghasilkan banyak sinyal yang salah.

2. Risiko dari Stop Loss

Jika terjadi pembalikan V, pengaturan Stop Loss bisa terlalu radikal dan menyebabkan kerugian yang tidak perlu.

3. Parameter RSI sensitif

Parameter RSI juga mempengaruhi bentuk kurva RSI. Jika parameter RSI ditetapkan dengan salah, akurasi sinyal reversal RSI berkurang.

Kelima, optimalisasi strategi

1. Mengoptimalkan parameter RSI

Lebih banyak parameter panjang RSI dapat diuji untuk menemukan kombinasi parameter yang optimal.

2. Mengoptimalkan parameter Brin

Anda dapat menguji lebih banyak panjang pita Brin dan parameter standar deviasi untuk menemukan kombinasi parameter optimal.

3. Uji berbagai stop loss ratio

Parameter rasio stop-loss optimal dapat ditemukan dengan pengukuran ulang.

VI. Kesimpulan

Strategi ini menggunakan indikator RSI dan indikator Bollinger Bands untuk menilai tren dan pembalikan, menambahkan risiko pengendalian mekanisme stop loss, yang dapat secara otomatis mengidentifikasi titik jual beli dan menghentikan stop loss tepat waktu. Strategi ini juga memiliki beberapa risiko, terutama dapat ditingkatkan melalui metode optimasi parameter. Secara keseluruhan, strategi ini memiliki kepraktisan yang kuat.

Kode Sumber Strategi
/*backtest
start: 2023-11-20 00:00:00
end: 2023-12-20 00:00:00
period: 1h
basePeriod: 15m
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/
// © BigCoinHunter

//@version=5
strategy(title="RSI_Boll-TP/SL", overlay=true, 
     pyramiding=0, default_qty_type=strategy.percent_of_equity, 
     default_qty_value=100, initial_capital=1000, 
     currency=currency.USD, commission_value=0.05, 
     commission_type=strategy.commission.percent, 
     process_orders_on_close=true)

//----------- get the user inputs --------------

//---------- RSI -------------
price = input(close, title="Source")

RSIlength = input.int(defval=6,title="RSI Length") 
RSIoverSold = input.int(defval=50, title="RSI OverSold", minval=1)
RSIoverBought = input.int(defval=50, title="RSI OverBought", minval=1)

//------- Bollinger Bands -----------
BBlength = input.int(defval=200, title="Bollinger Period Length", minval=1)
BBmult = input.float(defval=2.0, minval=0.001, maxval=50, step=0.1, title="Bollinger Bands Standard Deviation")
BBbasis = ta.sma(price, BBlength)
BBdev = BBmult * ta.stdev(price, BBlength)
BBupper = BBbasis + BBdev
BBlower = BBbasis - BBdev
source = close
buyEntry = ta.crossover(source, BBlower)
sellEntry = ta.crossunder(source, BBupper)
plot(BBbasis, color=color.aqua, title="Bollinger Bands SMA Basis Line")
p1 = plot(BBupper, color=color.silver, title="Bollinger Bands Upper Line")
p2 = plot(BBlower, color=color.silver, title="Bollinger Bands Lower Line")
fill(plot1=p1, plot2=p2, title="Bollinger BackGround", color=color.new(color.aqua,90), fillgaps=false, editable=true)

//---------- input TP/SL ---------------
tp = input.float(title="Take Profit:", defval=0.0, minval=0.0, maxval=100.0, step=0.1) * 0.01
sl = input.float(title="Stop Loss:  ", defval=0.0, minval=0.0, maxval=100.0, step=0.1) * 0.01

longEntry = input.bool(defval=true, title= 'Long Entry', inline="11")
shortEntry = input.bool(defval=true, title='Short Entry', inline="11")

//---------- backtest range setup ------------
fromDay   = input.int(defval = 1, title = "From Day", minval = 1, maxval = 31)
fromMonth = input.int(defval = 1, title = "From Month", minval = 1, maxval = 12)
fromYear  = input.int(defval = 2021, title = "From Year", minval = 2010)
toDay     = input.int(defval = 30, title = "To Day", minval = 1, maxval = 31)
toMonth   = input.int(defval = 12, title = "To Month", minval = 1, maxval = 12)
toYear    = input.int(defval = 2042, title = "To Year", minval = 2010)

//------------ time interval setup -----------
start     = timestamp(fromYear, fromMonth, fromDay, 00, 00)  // backtest start window
finish    = timestamp(toYear, toMonth, toDay, 23, 59)        // backtest finish window
window()  => time >= start and time <= finish ? true : false // create function "within window of time"

//------- define the global variables ------
var bool long = true
var bool stoppedOutLong = false
var bool stoppedOutShort = false
//--------- Colors ---------------

TrendColor = RSIoverBought and (price[1] > BBupper and price < BBupper) and BBbasis < BBbasis[1] ? color.red : RSIoverSold and (price[1] < BBlower and price > BBlower) and BBbasis > BBbasis[1] ? color.green : na
//bgcolor(switch2?(color.new(TrendColor,50)):na)


//--------- calculate the input/output points -----------
longProfitPrice  = strategy.position_avg_price * (1 + tp)     // tp -> take profit percentage
longStopPrice = strategy.position_avg_price * (1 - sl)        // sl -> stop loss percentage

shortProfitPrice  = strategy.position_avg_price * (1 - tp)
shortStopPrice = strategy.position_avg_price * (1 + sl)


//---------- RSI + Bollinger Bands Strategy -------------
vrsi = ta.rsi(price, RSIlength)

rsiCrossOver = ta.crossover(vrsi, RSIoverSold)
rsiCrossUnder = ta.crossunder(vrsi, RSIoverBought)

BBCrossOver = ta.crossover(source, BBlower)
BBCrossUnder = ta.crossunder(source, BBupper)

if (not na(vrsi))

    if rsiCrossOver and BBCrossOver
        long := true
        
    if rsiCrossUnder and BBCrossUnder
        long := false

//------------------- determine buy and sell points ---------------------
buySignall = window() and long  and (not stoppedOutLong)
sellSignall = window() and (not long)  and (not stoppedOutShort)

//---------- execute the strategy -----------------
if(longEntry and shortEntry)
    if long 
        strategy.entry("LONG", strategy.long, when = buySignall, comment = "ENTER LONG")
        stoppedOutLong := true
        stoppedOutShort := false
    else 
        strategy.entry("SHORT", strategy.short, when = sellSignall, comment = "ENTER SHORT")
        stoppedOutLong  := false
        stoppedOutShort := true

else if(longEntry)
    strategy.entry("LONG", strategy.long,  when = buySignall)
    strategy.close("LONG", when = sellSignall)
    if long 
        stoppedOutLong := true
    else
        stoppedOutLong  := false

else if(shortEntry)
    strategy.entry("SHORT", strategy.short, when = sellSignall)
    strategy.close("SHORT", when = buySignall)
    if not long
        stoppedOutShort := true
    else
        stoppedOutShort := false
    

//----------------- take profit and stop loss -----------------
if(tp>0.0 and sl>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG", limit=longProfitPrice, stop=longStopPrice, comment="Long TP/SL Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT", limit=shortProfitPrice, stop=shortStopPrice, comment="Short TP/SL Trigger")

else if(tp>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG", limit=longProfitPrice, comment="Long TP Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT", limit=shortProfitPrice, comment="Short TP Trigger")
        
else if(sl>0.0)
    if ( strategy.position_size > 0 )
        strategy.exit(id="LONG",  stop=longStopPrice, comment="Long SL Trigger")

    else if ( strategy.position_size < 0 )
        strategy.exit(id="SHORT",  stop=shortStopPrice, comment="Short SL Trigger")