Sumber daya yang dimuat... Pemuatan...

Strategi Perdagangan RSI-SRSI Multi Timeframe

Penulis:ChaoZhang, Tanggal: 2024-02-18 16:13:50
Tag:

img

Gambaran umum

Strategi trading ini menggabungkan indikator teknis Relative Strength Index (RSI) dan Stochastic Relative Strength Index (Stochastic RSI) untuk menghasilkan sinyal trading.

Nama Strategi

Strategi Perdagangan RSI-SRSI Multi Timeframe

Logika Strategi

Strategi ini menilai kondisi overbought dan oversold berdasarkan nilai RSI. RSI di bawah 30 dianggap sinyal overbought dan RSI di atas 70 dianggap sinyal overbought. Indikator RSI Stochastic mengamati fluktuasi nilai RSI. RSI Stochastic di bawah 5 adalah oversold dan RSI Stochastic di atas 50 adalah overbought.

Strategi ini juga menggabungkan tren harga cryptocurrency dalam kerangka waktu yang lebih tinggi (misalnya mingguan). Hanya ketika RSI kerangka waktu yang lebih tinggi berada di atas ambang batas (misalnya 45), sinyal panjang dipicu.

Sinyal beli dan jual perlu dikonfirmasi selama beberapa periode (misalnya 8 bar) sebelum sinyal perdagangan yang sebenarnya dihasilkan untuk menghindari sinyal palsu.

Keuntungan

  • Metode analisis teknis klasik menggunakan RSI untuk mengidentifikasi tingkat overbought/oversold
  • Menggabungkan RSI Stochastic untuk menangkap pembalikan RSI
  • Menggunakan teknik multi-frame waktu untuk menyaring sinyal palsu dan meningkatkan kualitas

Risiko & Solusi

  • RSI cenderung menghasilkan sinyal palsu
    • Menggabungkan indikator lain untuk menyaring sinyal palsu
    • Menerapkan teknik konfirmasi tren
  • Pengaturan ambang yang tidak benar dapat menghasilkan terlalu banyak sinyal
    • Mengoptimalkan parameter untuk menemukan kombinasi terbaik
  • Sinyal membutuhkan waktu konfirmasi
    • Periode konfirmasi saldo - menyaring sinyal palsu tanpa melewatkan kesempatan

Bidang Peningkatan

  • Uji lebih banyak kombinasi indikator untuk sinyal yang lebih kuat
    • misalnya memasukkan indikator MACD
  • Menggunakan metode pembelajaran mesin untuk menemukan parameter optimal
    • misalnya algoritma genetik/algoritma evolusioner untuk optimasi otomatis
  • Tambahkan strategi stop loss untuk mengendalikan risiko perdagangan tunggal
    • Setel stop loss ketika harga melanggar level support

Kesimpulan

Strategi ini terutama mengandalkan dua indikator teknis klasik, RSI dan Stochastic RSI, untuk menghasilkan sinyal perdagangan. Selain itu, pengenalan konfirmasi tren dari kerangka waktu yang lebih tinggi membantu menyaring sinyal palsu secara efektif dan meningkatkan kualitas sinyal. Peningkatan kinerja lebih lanjut dapat dicapai dengan mengoptimalkan parameter, menambahkan stop loss dan cara lain. Logika sederhana dan mudah dipahami. Ini berfungsi sebagai titik awal yang baik untuk perdagangan kuantitatif.


/*backtest
start: 2023-02-11 00:00:00
end: 2024-02-17 00:00:00
period: 1d
basePeriod: 1h
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("RSI and Stochatic Strategy", overlay=true, use_bar_magnifier = false)


/////// Inputs ///////////////

// RSI and SRSI
rsiLength = input(14, title="RSI Length") 
stochLength = input(14, title="Stochastic Length")
kSmooth = input(3, title="K Smooth")
dSmooth = input(3, title="D Smooth")


//////// thresholds ///////////////
st_low = input(5, title="Low SRSI") // stochastic RSI low -- prepare to sell
st_hi = input(50, title="High SRSI") // stochastic RSI high -- prepare to buy
diff = input(5, title="difference") // minimum change in RSI
// inval_diff = input(12, title="difference") // invalidation difference: change in the oposite direction that invalidates rsi falling/rising
rsi_low = input(30, title="Low RSI") // RSI considered low
rsi_hi = input(60, title="High RSI") // RSI considered high
rsi_ht_hi = input(45, title="High higher time frame RSI") // RSI in higher time frame considered high


/// buy trigger duration 
tr_dur = input(8, title="Trigger duration")
low_dur = input(20, title="Monitoring last low")


///////////////// Higher time frame trend ///////////////////
// higher time frame resolution
res2 = input.timeframe("W", title="Higher time-frame")
// Input for the ticker symbol, default is an empty string
// For instance we could monitor BTC higher time frame trend
symbol = input("BTC_USDT:swap", "Input Ticker (leave empty for current)")

// Determine the symbol to use
inputSymbol = symbol == "" ? syminfo.tickerid : symbol
//////////////////////////////////////////////////////////

// Calculate RSI //
rsi = ta.rsi(close, rsiLength)

// Calculate Stochastic RSI //
rsiLowest = ta.lowest(rsi, stochLength)
rsiHighest = ta.highest(rsi, stochLength)
stochRsi = 100 * (rsi - rsiLowest) / (rsiHighest - rsiLowest)

// Apply smoothing
K = ta.sma(stochRsi, kSmooth)
D = ta.sma(K, dSmooth)

// Higher time Frame RSI
cl2 = request.security(inputSymbol, res2, close)
rsi2 = ta.rsi(cl2, 14)

// SRSI BUY/SELL signals 
sell_stoch = (ta.lowest(K, tr_dur) < st_low) or (ta.highest(rsi, tr_dur) < rsi_low)
buy_stoch = ((ta.lowest(K, tr_dur) > st_hi) or (ta.lowest(rsi, tr_dur) > rsi_hi)) and (rsi2 > rsi_ht_hi)

 // valitation / invalidation sell signal
ll = ta.barssince(not sell_stoch)+1
sell_validation = (ta.highest(rsi, ll)>rsi[ll]+diff and rsi < rsi[ll]) or (rsi < rsi[ll]-diff)

// valitation / invalidation buy signal
llb = ta.barssince(not buy_stoch)+1
buy_validation = (ta.lowest(rsi, llb)<rsi[llb]-diff and rsi > rsi[llb]) or (rsi > rsi_hi and rsi - rsi[tr_dur] > 0)

sell_signal = sell_stoch and sell_validation
buy_signal = buy_stoch and buy_validation 

// Define the start date for the strategy
startYear = input(2019, "Start Year")
startMonth = input(1, "Start Month")
startDay = input(1, "Start Day")

// Convert the start date to Unix time
startTime = timestamp(startYear, startMonth, startDay, 00, 00)

// Define the end date for the strategy
endYear = input(2030, "End Year")
endMonth = input(1, "End Month")
endDay = input(1, "End Day")

// Convert the end date to Unix time
endTime = timestamp(endYear, endMonth, endDay, 00, 00)


if true
    if buy_signal
        strategy.entry("buy", strategy.long, comment = "Buy")
    if sell_signal
        strategy.close("buy", "Sell")

Lebih banyak