Strategi RSI dan Stochastics Berbilang Jangka Masa

Penulis:ChaoZhang, Tarikh: 2024-02-21 15:56:37
Tag:

img

Ringkasan

Strategi RSI dan Stochastics Jangka Masa Berbilang adalah strategi yang menggabungkan penunjuk RSI dan Stochastics merentasi pelbagai jangka masa untuk menentukan keadaan overbought dan oversold di pasaran. Ia menggunakan nilai purata RSI dan Stochastics dari 4 jangka masa yang berbeza untuk mengukur momentum pasaran keseluruhan dan overextension. Ini membolehkan ia memanfaatkan kekuatan penunjuk merentasi jangka masa yang berbeza.

Logika Strategi

1. Penunjuk RSI

Indikator RSI adalah pengayun yang kuat yang mengukur tahap overbought dan oversold berdasarkan besar pergerakan harga baru-baru ini. Nilai RSI berfluktuasi antara 0 hingga 100, di mana nilai di atas 70 dianggap overbought dan di bawah 30 oversold.

Strategi ini menggunakan RSI 14 tempoh dan memperoleh nilai RSI dari jangka masa bulanan, harian, 4 jam dan 1 jam.

2. Stochastics %K

Stochastics %K adalah penunjuk yang menunjukkan tahap overbought / oversold di pasaran pada skala 0 hingga 100. Secara amnya, nilai di atas 80 menunjukkan pasaran overbought manakala nilai di bawah 20 menandakan pasaran oversold.

Strategi menggunakan konfigurasi 14,3 Stochastics dan juga memperoleh nilai %K dari bingkai masa yang disebutkan di atas.

3. Gabungan Nilai Purata

Inti strategi ini terletak pada mengambil purata kedua-dua penunjuk merentasi pelbagai kerangka masa. Ini membolehkan ia memanfaatkan kekuatan setiap kerangka masa ketika mengukur keadaan pasaran secara keseluruhan. Rumus yang tepat adalah:

RSI purata = (RSI bulanan + RSI harian + RSI 4H + RSI 1H) / 4

Purata Stochastics = (Stochastics bulanan + Stochastics harian + 4H Stochastics + 1H Stochastics) / 4

4. Isyarat Perdagangan

Strategi ini mencetuskan jangka panjang apabila purata RSI jatuh di bawah 30 dan purata Stochastics jatuh di bawah 20. Ia mencetuskan jangka pendek apabila purata RSI meningkat di atas 70 dan purata Stochastics melanggar 80.

Posisi panjang ditutup apabila purata Stochastic meningkat di atas 70 dan purata RSI naik di atas 50. Posisi pendek ditutup apabila purata Stochastic turun di bawah 30 dan purata RSI turun di bawah 50.

Analisis Kelebihan

Kelebihan utama strategi ini terletak pada gabungan dua penunjuk dalam pelbagai jangka masa. Ini sangat meningkatkan kebolehpercayaan isyarat perdagangan dan meminimumkan isyarat palsu. Kelebihan khusus termasuk:

  1. RSI dan Stochastics mengesahkan satu sama lain sebagai isyarat. Bergantung hanya pada satu penunjuk cenderung menghasilkan isyarat palsu lebih kerap. Pendekatan penunjuk dua menggalakkan ketepatan.

  2. Pelbagai jangka masa membawa kepada analisis yang lebih kukuh. Sebagai contoh, jangka masa bulanan dan harian menunjukkan pasaran yang terlalu banyak dibeli tetapi jangka masa yang lebih kecil masih belum mencapai tahap overextension. Ini menunjukkan bahawa trend menaik mungkin akan berterusan. Isyarat lebih boleh dipercayai apabila semua jangka masa bersetuju.

  3. Pengesanan yang lebih jelas mengenai titik perubahan struktural apabila pelbagai jangka masa secara serentak menunjukkan gangguan tahap S/R utama, menandakan pembalikan trend.

  4. Pengiraan automatik purata memudahkan aliran kerja. Tiada pengiraan manual diperlukan kerana kod mengendalikan pengambilan data, pengiraan penunjuk dan purata secara automatik.

Analisis Risiko

Seperti semua strategi analisis teknikal, risiko utama terletak pada whipsaws dan isyarat palsu.

  1. Peralihan trend yang membawa kepada penghentian. Sebagai contoh, harga membuat pelanggaran jangka pendek di bawah sokongan sebelum bangkit semula sementara lama. Kes sedemikian mungkin menimbulkan kerugian jangka pendek kerana logik keluar.

  2. Pengecualian S/R utama yang membawa kepada kegagalan penangguhan. Penembusan tahap S/R utama boleh langsung mencetuskan penangguhan yang direka di bawah mereka, mengakibatkan kerugian di atas purata.

  3. Penghakiman yang salah dari konfigurasi kerangka masa suboptimal. Kerangka masa yang terlalu rata atau kurang rata boleh memberikan nilai osilator yang mengelirukan.

  4. Perbezaan dalam jangka masa yang menyebabkan kesan Dunkirk. Di mana jangka masa yang lebih tinggi menunjukkan pasaran yang terlalu banyak dibeli tetapi jangka masa yang lebih rendah menandakan keadaan terlalu banyak dijual, menjadikan purata tidak berkesan.

Penyelesaian termasuk mengoptimumkan strategi stop loss, mengesan tahap S / R dinamik, menyesuaikan parameter jangka masa dan menambah penapis tambahan.

Peluang Peningkatan

Memandangkan risiko yang dibincangkan, peluang peningkatan termasuk:

  1. Mengoptimumkan mekanisme stop loss untuk menggabungkan berhenti yang tertinggal dan keluar separa. Ini mengunci keuntungan sambil mengawal risiko perdagangan tunggal.

  2. Menambah jangka masa yang lebih tinggi seperti carta suku tahunan. Ini membolehkan panduan trend yang lebih besar untuk menapis isyarat palsu. Memprioritikan bacaan dari jangka masa yang lebih tinggi apabila perbezaan berlaku.

  3. Menggabungkan jumlah untuk pengesahan trend tambahan melalui divergensi bull/bear untuk mengelakkan trend zombie.

  4. Sinyal kemasukan yang halus dengan menunggu penembusan di sekitar S / R sejarah utama atau membenarkan entri pulback yang optimum.

  5. Melaksanakan hentian penyesuaian berdasarkan volatiliti terkini dan nilai ATR untuk kedudukan hentian dinamik.

Kesimpulan

Strategi RSI dan Stochastics Jangka Masa Berbilang adalah pendekatan yang jelas dan boleh dipercayai yang menggunakan gabungan RSI dan Stochastics di pelbagai jangka masa untuk mengenal pasti tahap overbought / oversold. Kekuatannya yang terbesar terletak pada pengesahan antara satu sama lain indikator dan jangka masa untuk meminimumkan risiko whipsaw dan isyarat palsu. Walau bagaimanapun seperti semua strategi teknikal, ia menghadapi risiko yang melekat yang perlu ditangani melalui pengoptimuman stop loss, pemilihan jangka masa dll untuk menyempurnakan ke dalam strategi perdagangan automatik yang 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")


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





Lebih lanjut