Strategi dagangan berdasarkan RSI dan Stochastic RSI


Tarikh penciptaan: 2024-02-18 16:13:50 Akhirnya diubah suai: 2024-02-18 16:13:50
Salin: 1 Bilangan klik: 711
1
fokus pada
1617
Pengikut

Strategi dagangan berdasarkan RSI dan Stochastic RSI

Gambaran keseluruhan

Strategi perdagangan ini menggabungkan penggunaan kedua-dua indikator teknikal yang agak kuat (RSI) dan agak kuat (RSI) untuk menghasilkan isyarat perdagangan. Strategi ini juga menggunakan pergerakan harga cryptocurrency pada jangka masa yang lebih tinggi untuk mengesahkan trend, untuk meningkatkan kebolehpercayaan isyarat.

Nama strategi

Strategi Perdagangan RSI-SRSI Kerangka Masa Berbilang

Prinsip Strategi

Strategi ini menilai fenomena overbought dan oversold berdasarkan nilai RSI. Apabila RSI berada di bawah 30, ia memberi isyarat oversold, dan apabila ia berada di atas 70, ia memberi isyarat oversold.

Strategi ini digabungkan dengan pergerakan harga mata wang kripto pada jangka masa yang lebih tinggi (contohnya, garis pusingan). Isyarat pembelian hanya dihasilkan apabila RSI pada jangka masa yang lebih tinggi (contohnya, 45), yang menghasilkan isyarat perdagangan beli.

Sinyal beli dan jual perlu disahkan melalui kitaran tertentu (seperti 8 K line) selepas ia dicetuskan, untuk mengelakkan menghasilkan isyarat yang mengelirukan.

Kelebihan Strategik

  • Kaedah analisis teknikal klasik yang menggunakan RSI untuk menilai overbought dan oversold
  • Gabungan Stochastic RSI Indikator mengenal pasti RSI sendiri isyarat pembalikan
  • Penggunaan teknik penapisan pelbagai bingkai masa untuk meningkatkan kualiti isyarat

Risiko strategi dan penyelesaian

  • Indeks RSI mudah menghasilkan isyarat palsu
    • Penapisan isyarat yang menyesatkan yang digabungkan dengan petunjuk lain
    • Teknologi Pengesahan Trend
  • Tetapan parameter terhad yang tidak betul mudah menghasilkan terlalu banyak isyarat perdagangan
    • Mengoptimumkan kombinasi parameter untuk mencari parameter terbaik
  • Sinyal beli dan jual memerlukan pengesahan.
    • Mencari kitaran pengesahan yang seimbang, menyaring isyarat yang salah, dan tidak terlepas peluang

Arah pengoptimuman strategi

  • Uji gabungan lebih banyak indikator untuk mencari isyarat yang lebih kuat
    • Sebagai contoh, penambahan MACD ke dalam strategi
  • Mencuba kaedah pembelajaran mesin untuk mencari parameter yang optimum
    • Pengoptimuman automatik menggunakan algoritma genetik / evolusi
  • Peningkatan strategi Hentikan Kerosakan untuk mengawal risiko perdagangan tunggal
    • Hentikan kerugian apabila harga jatuh di bawah tahap sokongan

ringkaskan

Strategi ini bergantung kepada RSI dan Stochastic RSI, dua indikator perdagangan klasik untuk menghasilkan isyarat perdagangan. Pada masa yang sama, memperkenalkan jangka masa yang lebih tinggi untuk pengesahan trend, dapat menapis isyarat yang salah, meningkatkan kualiti isyarat.

Kod sumber strategi
/*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")