
Strategi RSI dan acak adalah strategi yang menggunakan gabungan RSI dan acak untuk menilai pasaran yang lebih baik daripada pasaran yang lebih baik. Strategi ini menggabungkan RSI dan acak dalam empat bingkai masa, menggunakan purata untuk menilai pergerakan keseluruhan pasaran dan keadaan yang lebih baik daripada pasaran, untuk memanfaatkan kelebihan setiap indikator bingkai masa.
RSI merupakan satu indikator yang kuat untuk membeli dan menjual saham berdasarkan kenaikan dan penurunan saham dalam jangka masa tertentu. Nilai RSI berfluktuasi antara 0 dan 100, secara amnya, RSI lebih besar daripada 70 menandakan membeli dan lebih kecil daripada 30 menandakan menjual.
Strategi ini menggunakan 14 RSI panjang dan mengambil nilai RSI untuk 1 bulan, 1 hari, 4 jam dan 1 jam 4 tempoh masa.
Indikator rawak %K adalah penunjuk yang menunjukkan bahawa pasaran adalah overbought atau oversold, nilai berfluktuasi antara 0 dan 100. Secara amnya, penunjuk rawak yang lebih besar daripada 80 menunjukkan overbought, dan lebih kecil daripada 20 menunjukkan oversold.
Dalam strategi ini, panjang indikator% K secara rawak adalah 14, dan kelancaran adalah 3, yang juga mengambil nilai 4 bingkai masa di atas.
Kunci strategi ini adalah untuk mengira nilai purata kedua-dua petunjuk di atas dalam 4 bingkai masa untuk memanfaatkan kelebihan setiap bingkai masa untuk menilai pergerakan pasaran keseluruhan. Rumus pengiraan khusus adalah seperti berikut:
RSI purata = (RSI bulan + RSI hari + RSI 4 jam + RSI 1 jam) / 4
Nilai purata penunjuk rawak = (penunjuk rawak bulan + penunjuk rawak hari + penunjuk rawak 4 jam + penunjuk rawak 1 jam) / 4
Apabila RSI lebih kecil daripada 30 dan purata acak lebih kecil daripada 20, buat lebih banyak; apabila RSI lebih besar daripada 70 dan purata acak lebih besar daripada 80, buat kosong.
Selepas melakukan over, kedudukan kosong apabila nilai purata penunjuk rawak lebih besar daripada 70 dan nilai purata RSI lebih besar daripada 50; selepas melakukan over, kedudukan kosong apabila nilai purata penunjuk rawak kurang daripada 30 dan nilai purata RSI kurang daripada 50
Kelebihan utama strategi ini ialah menggabungkan kedua-dua indikator dan pelbagai bingkai masa pada masa yang sama, yang dapat meningkatkan kebolehpercayaan isyarat perdagangan dan mengelakkan isyarat palsu sebanyak mungkin. Kelebihan khusus adalah sebagai berikut:
Penunjuk RSI dan penunjuk rawak saling mengesahkan. Dengan hanya bergantung pada satu penunjuk mudah menghasilkan isyarat palsu, dan strategi ini dapat meningkatkan ketepatan isyarat dengan menggabungkan kedua-dua penunjuk.
Analisis pelbagai bingkai masa dapat meningkatkan ketepatan penghakiman. Sebagai contoh, garis bulan dan garis matahari menunjukkan overbought, tetapi 4 jam dan 1 jam tidak sepenuhnya overbought, yang menunjukkan bahawa trend mungkin berterusan.
Lebih jelas untuk menilai titik perubahan struktur. Melihat penembusan sokongan / rintangan utama secara serentak pada pelbagai bingkai masa, anda dapat menilai perubahan trend semasa.
Pengiraan purata indikator secara automatik memudahkan operasi. Tidak perlu mengira secara manual, kod secara automatik menyelesaikan pengambilan data, mengira dan rata-rata indikator, mengurangkan beban kerja.
Risiko utama strategi ini adalah bahawa seperti semua strategi analisis teknikal, tidak dapat sepenuhnya mengelakkan kebarangkalian untuk ditipu dan menghasilkan isyarat palsu. Risiko utama adalah:
Pembalikan trend jangka pendek menyebabkan penutupan. Sebagai contoh, semasa memegang kedudukan berbilang, garis pendek harga turun dan bangkit semula setelah memecahkan sokongan. Apabila logik kedudukan yang rata mengikut strategi memerlukan hentian segera, tetapi mungkin menyebabkan kerugian jangka pendek.
Kehilangan titik sokongan / rintangan utama menyebabkan kegagalan tracking stop loss. Jika titik sokongan atau rintangan utama gagal, harga berhenti asal mungkin akan ditembusi secara langsung, menyebabkan kerugian yang lebih besar.
Tetapan jangka masa yang tidak betul menyebabkan kesalahan penghakiman. Jika jangka masa yang terlalu panjang atau terlalu pendek boleh menyebabkan penilaian indikator menjadi sesat.
Penyebaran penunjuk menyebabkan kesan Dunkirk. Iaitu, penunjuk pada jangka masa yang lebih tinggi menunjukkan kelebihan dan penunjuk pada jangka masa yang lebih rendah menunjukkan kelebihan, dan penunjuk purata tidak dapat mencerminkan keadaan sebenar.
Penyelesaian untuk menghadapi risiko termasuk: mengoptimumkan strategi menghentikan kerugian, mengesan tahap sokongan / rintangan yang dinamik, menyesuaikan parameter bingkai masa dan menambah mekanisme penapisan.
Berikutan risiko yang disebutkan di atas, strategi ini boleh dioptimumkan dalam beberapa arah:
Mengoptimumkan mekanisme henti kerugian, mewujudkan henti kerugian yang boleh dikesan dan henti kerugian yang boleh dikurangkan. Ini dapat mengawal risiko kerugian tunggal sambil memastikan keuntungan.
Tambahan tempoh masa yang lebih tinggi seperti garis suku. Ini boleh menggunakan penapisan trend yang lebih besar untuk menyesatkan isyarat. Apabila penunjuk berselisih, beri keutamaan kepada tempoh masa yang lebih tinggi.
Menambah pengesahan multi-udara untuk jumlah trafik. Menggabungkan perubahan trafik untuk menilai kebelakang bawah dan kebelakang atas, untuk mengelakkan kesilapan pergerakan zombi.
Optimumkan masa masuk. Anda boleh menunggu untuk masuk di sekitar sokongan / rintangan sejarah yang penting, atau menunggu untuk membeli pada titik panggilan balik yang optimum.
Peningkatan Stop Loss Adaptif. Stop Loss Dinamis boleh dikira dan disesuaikan berdasarkan kadar turun naik dan ATR terkini.
Strategi RSI bingkai masa berbilang dengan strategi penunjuk rawak adalah strategi perdagangan yang jelas dan boleh dipercayai dengan menggunakan kombinasi indikator RSI dan penunjuk rawak untuk menilai jarak jual beli di pasaran dalam pelbagai bingkai masa. Kelebihannya yang terbesar adalah gabungan penunjuk dan bingkai masa saling mengesahkan, yang dapat mengelakkan risiko tanda-tanda palsu dan palsu. Sudah tentu, strategi ini juga mempunyai risiko yang sama seperti strategi analisis teknikal yang umum, yang memerlukan penambahbaikan dan pengoptimuman yang berterusan dari segi pengoptimuman waktu henti rugi, pilihan bingkai dan sebagainya, untuk menjadikannya strategi perdagangan algoritma yang menguntungkan secara stabil.
/*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")
///////////////////////////////////////////////////////////////////////////////////////////