Strategi RSI dan Stokastik Multi-Kerangka Waktu


Tanggal Pembuatan: 2024-02-21 15:56:37 Akhirnya memodifikasi: 2024-02-21 15:56:37
menyalin: 1 Jumlah klik: 924
1
fokus pada
1617
Pengikut

Strategi RSI dan Stokastik Multi-Kerangka Waktu

Ringkasan

Strategi RSI dan indikator acak adalah strategi yang menggunakan kombinasi RSI dan indikator acak untuk menilai pasar overbought dan oversold dalam beberapa frame waktu. Strategi ini menggabungkan RSI dan indikator acak dari 4 frame waktu, menggunakan rata-rata untuk menilai tren pasar secara keseluruhan dan overbought dan oversold, untuk memanfaatkan keuntungan dari masing-masing indikator frame waktu.

Prinsip Strategi

1. Indeks RSI

Indeks RSI adalah indikator overbought dan oversold yang kuat. Indeks ini didasarkan pada kenaikan dan penurunan harga saham dalam jangka waktu tertentu. Nilai RSI berfluktuasi antara 0 dan 100. Secara umum, RSI lebih besar dari 70 berarti overbought, dan lebih kecil dari 30 berarti oversold.

Strategi ini menggunakan 14 indikator RSI dengan panjang dan mendapatkan nilai RSI dalam 1 bulan, 1 hari, 4 jam, dan 1 jam 4 frame waktu.

2. Indikator acak %K

Indikator acak% K adalah indikator yang menunjukkan pasar berada di kisaran overbought atau oversold, dengan nilai berfluktuasi antara 0 dan 100. Secara umum, indikator acak lebih besar dari 80 berarti overbought, dan lebih kecil dari 20 berarti oversold.

Dalam strategi ini, panjang indikator acak% K adalah 14, dan halus adalah 3, yang juga mendapatkan nilai dari 4 frame waktu di atas.

3. Komposisi rata-rata

Kunci dari strategi ini adalah dengan menghitung rata-rata kedua indikator di atas dalam 4 kerangka waktu, untuk memanfaatkan keuntungan dari setiap kerangka waktu, untuk menilai pergerakan pasar secara keseluruhan. Rumus perhitungan spesifik adalah sebagai berikut:

RSI rata-rata = (RSI bulan + RSI hari + RSI 4 jam + RSI 1 jam) / 4

Rata-rata indikator acak = (indikator acak bulan + indikator acak hari + indikator acak 4 jam + indikator acak 1 jam) / 4

4. Sinyal perdagangan

Bila RSI lebih kecil dari 30 dan rata-rata indikator acak lebih kecil dari 20, lakukan over; bila RSI lebih besar dari 70 dan rata-rata indikator acak lebih besar dari 80, lakukan over.

Setelah melakukan over, bernegasi pada saat rata-rata indikator acak lebih besar dari 70 dan rata-rata RSI lebih besar dari 50; setelah melakukan over, bernegasi pada saat rata-rata indikator acak kurang dari 30 dan rata-rata RSI kurang dari 50

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah kombinasi dua indikator dan beberapa frame waktu pada saat yang sama, yang dapat secara signifikan meningkatkan keandalan sinyal perdagangan dan meminimalkan sinyal palsu. Keuntungan spesifiknya adalah sebagai berikut:

  1. Indikator RSI dan indikator acak saling memverifikasi. Hanya mengandalkan satu indikator mudah menghasilkan sinyal palsu, dan strategi ini dapat meningkatkan akurasi sinyal dengan menggabungkan dua indikator.

  2. Analisis multi-frame waktu dapat meningkatkan akurasi penilaian. Misalnya, garis bulan dan garis matahari menunjukkan overbought, tetapi 4 jam dan 1 jam tidak sepenuhnya overbought, yang menunjukkan bahwa tren mungkin berlanjut. Jika semua frame waktu konsisten, sinyal lebih dapat diandalkan.

  3. Lebih jelas menilai titik-titik perubahan struktural. Melihat penembusan pada titik-titik support/resistance yang penting secara simultan pada beberapa kerangka waktu, dapat dipastikan bahwa tren saat ini telah berbalik.

  4. Perhitungan rata-rata indikator otomatis mempermudah operasi. Tidak perlu menghitung secara manual, kode secara otomatis menyelesaikan pengambilan data, menghitung indikator dan rata-rata, mengurangi beban kerja.

Analisis risiko

Risiko utama dari strategi ini adalah bahwa, seperti semua strategi analisis teknis, tidak dapat sepenuhnya menghindari kemungkinan untuk ditiru dan menghasilkan sinyal palsu.

  1. Pembalikan tren jangka pendek menyebabkan penutupan. Misalnya, selama multi-posisi, garis pendek harga ke bawah setelah menembus level dukungan dan bangkit kembali. Pada saat ini, logika posisi terendah strategi memerlukan penghentian kerugian segera, tetapi dapat menyebabkan kerugian jangka pendek.

  2. Kehilangan titik support / resistance yang penting menyebabkan kegagalan tracking stop loss. Jika titik support atau resistance yang penting terjadi, maka harga stop loss yang asli dapat langsung terobosan, sehingga menyebabkan kerugian yang lebih besar.

  3. Pengaturan waktu yang tidak tepat menyebabkan kesalahan penilaian. Pengaturan waktu yang terlalu panjang atau terlalu pendek dapat menyebabkan penilaian indikator yang menyimpang.

  4. Penyebaran indikator menyebabkan efek Dunkirk. Indikator pada jangka waktu yang lebih tinggi menunjukkan overbought dan indikator pada jangka waktu yang lebih rendah menunjukkan oversold, dan rata-rata tidak mencerminkan situasi yang sebenarnya.

Solusi untuk menghadapi risiko meliputi: mengoptimalkan strategi stop loss, melacak posisi support/resistance yang dinamis, menyesuaikan parameter time frame, dan menambahkan mekanisme penyaringan.

Arah optimasi

Mengingat risiko yang ada di atas, strategi ini juga dapat dioptimalkan dari beberapa arah:

  1. Mengoptimalkan mekanisme stop loss, memungkinkan untuk melacak stop loss dan batch stop loss. Hal ini dapat mengontrol risiko kerugian tunggal sambil menjamin keuntungan.

  2. Tambahkan garis waktu yang lebih tinggi. Ini dapat digunakan untuk memfilter sinyal yang lebih besar untuk menyesatkan. Jika ada perbedaan dalam indikator, prioritaskan frame waktu yang lebih tinggi.

  3. Meningkatkan validasi multi-ruang dari volume lalu lintas. Menggabungkan perubahan volume lalu lintas untuk menilai kebalikan bawah dan kebalikan atas, menghindari kesalahan dalam gerakan zombie.

  4. Optimalkan waktu masuk. Anda dapat menunggu untuk masuk di dekat support / resistance sejarah yang penting, atau menunggu untuk membeli di titik callback optimal.

  5. Peningkatan Stop Loss Adaptif. Stop Loss Dinamis dapat dihitung dan disesuaikan berdasarkan volatilitas dan ATR terakhir.

Meringkaskan

Strategi RSI berjangka waktu ganda dengan indikator acak adalah strategi perdagangan yang jelas dan dapat diandalkan dengan menggunakan indikator RSI dan indikator acak dalam kombinasi untuk menilai interval overbought dan oversold di pasar pada beberapa frame waktu. Keuntungan terbesarnya adalah bahwa kombinasi indikator dan frame waktu saling diverifikasi, sehingga dapat menghindari risiko sinyal yang terpotong dan palsu. Tentu saja, strategi ini juga memiliki risiko yang umum terjadi pada strategi analisis teknis serupa, yang perlu terus diperbaiki dan dioptimalkan untuk menjadi strategi perdagangan algoritmik yang stabil dan menguntungkan.

Kode Sumber Strategi
/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-31 23:59:59
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

////////////////////////////////////////// MTF Stochastic & RSI Strategy πŸš₯ ©️ bykzis /////////////////////////////////////////
//

// *** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 *** and LOT OF COPY of Indicator-Jones MTF Scanner
// 
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

//@version=5
strategy('MTF RSI & STOCH StrategyπŸš₯ by kzi', overlay=false,initial_capital=100, currency=currency.USD, commission_value=0.01, commission_type=strategy.commission.percent)


// Pair list
var string GRP1       = '══════════ β€Šβ€Š General β€Šβ€Š ══════════'
overbought = input.int(80, 'Overbought Level', minval=1, group=GRP1)
oversold = input.int(20, 'Oversold Level', minval=1, group=GRP1)


/// Timeframes
var string GRP2       = '══════════ β€Šβ€ŠTimeframesβ€Šβ€Š ══════════'
timeframe1 = input.timeframe(title="Timeframe 1", defval="W", group=GRP2)
timeframe2 = input.timeframe(title="Timeframe 2", defval="D", group=GRP2)
timeframe3 = input.timeframe(title="Timeframe 3", defval="240", group=GRP2)
timeframe4 = input.timeframe(title="Timeframe 4", defval="60", group=GRP2)

// RSI settings
var string GRP3       = '══════════ β€Šβ€ŠRSI settingsβ€Šβ€Š ══════════'
rsiLength = input.int(14, minval=1, title='RSI length', group=GRP3)
rsiSource = input(close, 'RSI Source', group=GRP3)
rsioverbought = input.int(70, 'RSI Overbought Level', minval=1, group=GRP3)
rsioversold = input.int(30, 'RSI Oversold Level', minval=1, group=GRP3)


/// Get RSI values of each timeframe /////////////////////////////////////////////////////
rsi = ta.rsi(rsiSource, rsiLength)
callRSI(id,timeframe) =>
    rsiValue = request.security(id, str.tostring(timeframe), rsi, gaps=barmerge.gaps_off)
    rsiValue

RSI_TF1 = callRSI(syminfo.tickerid, timeframe1)
RSI_TF2 = callRSI(syminfo.tickerid, timeframe2)
RSI_TF3 = callRSI(syminfo.tickerid, timeframe3)
RSI_TF4 = callRSI(syminfo.tickerid, timeframe4)




/////// Calculate Averages /////////////////////////////////////////////////////////////////
calcAVG(valueTF1, valueTF2, valueTF3, valueTF4) =>
    math.round((valueTF1 + valueTF2 + valueTF3 + valueTF4) / 4, 2)

AVG=calcAVG(RSI_TF1, RSI_TF2, RSI_TF3, RSI_TF4)



// Stochastic settings
var string GRP4       = '══════════ β€Šβ€ŠStochastic settingsβ€Šβ€Š ══════════'
periodK = input.int(14, '%K length', minval=1, group=GRP4)
smoothK = input.int(3, 'Smooth K', minval=1, group=GRP4)
stochSource = input(close, 'Stochastic Source', group=GRP4)
stochoverbought = input.int(70, 'Stochastic Overbought Level', minval=1, group=GRP4)
stochoversold = input.int(30, 'Stochastic Oversold Level', minval=1, group=GRP4)


/// Get Stochastic values of each timeframe ////////////////////////////////////////////////
stoch = ta.sma(ta.stoch(stochSource, high, low, periodK), smoothK)
getStochastic(id,timeframe) =>
    stochValue = request.security(id, str.tostring(timeframe), stoch, gaps=barmerge.gaps_off)
    stochValue

Stoch_TF1 = getStochastic(syminfo.tickerid, timeframe1)
Stoch_TF2 = getStochastic(syminfo.tickerid, timeframe2)
Stoch_TF3 = getStochastic(syminfo.tickerid, timeframe3)
Stoch_TF4 = getStochastic(syminfo.tickerid, timeframe4)


AVG_STOCH=calcAVG(Stoch_TF1, Stoch_TF2, Stoch_TF3, Stoch_TF4)


plot(AVG, color = color.blue, title='RSI')
plot(AVG_STOCH, color = color.yellow,title='STOCH')
hline(rsioverbought,color=color.red)
hline(rsioversold, color=color.lime)
hline(50, color=color.white)

//============ signal Generator ==================================//

if AVG <= rsioversold and AVG_STOCH <=stochoversold 
    strategy.entry('Buy_Long', strategy.long)

    
strategy.close("Buy_Long",when=(AVG_STOCH >=70 and AVG >=50 and close >=strategy.position_avg_price),comment="Long_OK")

if AVG >=rsioverbought and AVG_STOCH >=stochoverbought
    strategy.entry('Buy_Short', strategy.short)


strategy.close("Buy_Short",when=(AVG_STOCH <=30 and AVG <=50 and close <=strategy.position_avg_price),comment="Short_OK")


///////////////////////////////////////////////////////////////////////////////////////////