Strategi RSI Stokastik Els-Smoothed


Tanggal Pembuatan: 2024-01-26 15:58:48 Akhirnya memodifikasi: 2024-01-26 15:58:48
menyalin: 0 Jumlah klik: 777
1
fokus pada
1617
Pengikut

Strategi RSI Stokastik Els-Smoothed

Ringkasan

Gagasan utama dari strategi ini adalah menggunakan filter Ehlers SuperSmoother untuk memproses indikator Stochastic RSI secara acak, sehingga menyaring banyak sinyal palsu dan mendapatkan sinyal perdagangan yang lebih andal. Prinsip dasarnya adalah menghitung indikator acak yang relatif kuat dan lemah, kemudian memprosesnya secara halus dengan filter Ehlers SuperSmoother, dan akhirnya melakukan polynomial silang dengan rata-rata bergeraknya sendiri.

Prinsip Strategi

Strategi ini pertama-tama menghitung indikator RSI dari harga close-out jurnal, kemudian berdasarkan indikator RSI untuk menghitung indikator Stochastic, yang merupakan indikator indeks yang relatif kuat dan lemah. Untuk menyaring sinyal palsu, menggunakan filter Ells Superflat untuk memproses Stochastic RSI, dan akhirnya garis Stochastic RSI melakukan perkalian emas dengan rata-rata bergerak sendiri, dan melakukan perkalian mati.

Analisis Keunggulan

Keuntungan terbesar dari strategi ini adalah penggunaan filter super-halus Els yang dapat secara efektif memfilter banyak sinyal palsu, membuat sinyal perdagangan lebih dapat diandalkan. Selain itu, indikator Stochastic RSI itu sendiri memiliki kemampuan penembusan dan pelacakan tren yang sangat baik. Jadi strategi ini dapat mengidentifikasi tren dengan benar, berposisi pada waktu yang tepat, dan berposisi pada waktu yang tepat.

Analisis risiko

Risiko utama dari strategi ini adalah bahwa ketika pasar bergoyang besar, mudah untuk menghasilkan sinyal yang salah. Ketika harga berfluktuasi besar dalam kisaran yang lebih sempit, indikator Stochastic RSI akan menghasilkan banyak sinyal palsu yang naik dan turun, di mana efek dari filter super halus Ells juga akan diskon. Selain itu, dalam beberapa situasi yang ekstrim, keterbelakangan indikator juga dapat membawa risiko tertentu.

Untuk mengurangi risiko ini, parameter dapat disesuaikan dengan tepat, seperti memperbesar siklus indikator Stochastic, mengurangi kelancaran, dan sebagainya, sehingga lebih lanjut memfilter sinyal palsu. Selain itu, juga dapat dipertimbangkan untuk dikombinasikan dengan indikator atau bentuk lain, membentuk kondisi pemfilteran ganda, menghindari risiko yang ditimbulkan oleh sinyal yang salah.

Arah optimasi

Strategi ini dapat dioptimalkan dalam beberapa hal:

  1. Optimalkan pengaturan parameter. Anda dapat melakukan pengujian yang menyeluruh terhadap parameter seperti panjang, konstan kelancaran, dan lain-lain untuk menemukan kombinasi parameter yang optimal.

  2. Meningkatkan mekanisme Stop Loss. Anda dapat mengatur Stop Loss Mobile atau Stop Loss Single untuk mengunci keuntungan dan mengurangi penarikan.

  3. Kombinasi dengan indikator atau bentuk lainnya. Kombinasi dengan indikator volatilitas, rata-rata bergerak, dan lain-lain dapat dipertimbangkan untuk menciptakan kondisi penyaringan ganda dan mengurangi risiko lebih lanjut.

  4. Sesuai dengan analisis siklus besar, posisi disesuaikan. Dengan analisis tren periode waktu yang lebih tinggi, ukuran posisi setiap perdagangan dapat disesuaikan secara dinamis.

Meringkaskan

Strategi ini pertama-tama menghitung indikator Stochastic RSI, kemudian memprosesnya dengan menggunakan filter super halus Ells, dan akhirnya membentuk sinyal perdagangan dengan rata-rata bergerak sendiri, untuk mencapai penilaian yang benar tentang tren. Keuntungan strategi terletak pada penggunaan kombinasi indikator dan filter, yang dapat secara efektif memfilter sinyal palsu, untuk mendapatkan peluang perdagangan dengan probabilitas tinggi. Risiko terutama berasal dari pengaturan parameter yang tidak tepat dan kurangnya mekanisme stop loss.

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

//@version=3
strategy("ES Stoch RSI Strategy [krypt]", overlay=true, calc_on_order_fills=true, calc_on_every_tick=true, initial_capital=10000, currency='USD')

//Backtest Range
FromMonth = input(defval = 06, title = "From Month", minval = 1)
FromDay   = input(defval = 1, title = "From Day", minval = 1)
FromYear  = input(defval = 2018, title = "From Year", minval = 2014)
ToMonth   = input(defval = 7, title = "To Month", minval = 1)
ToDay     = input(defval = 30, title = "To Day", minval = 1)
ToYear    = input(defval = 2018, title = "To Year", minval = 2014)

PI = 3.14159265359

drop1st(src) =>
    x = na
    x := na(src[1]) ? na : src

xlowest(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := min(x, v)
    x

xhighest(src, len) =>
    x = src
    for i = 1 to len - 1
        v = src[i]
        if (na(v))
            break
        x := max(x, v)
    x

xstoch(c, h, l, len) =>
    xlow = xlowest(l, len)
    xhigh = xhighest(h, len) 
    100 * (c - xlow) / (xhigh - xlow)

Stochastic(c, h, l, length) =>
    rawsig = xstoch(c, h, l, length)
    min(max(rawsig, 0.0), 100.0)

xrma(src, len) =>
    sum = na
    sum := (src + (len - 1) * nz(sum[1], src)) / len

xrsi(src, len) =>
    msig = nz(change(src, 1), 0.0)
    up = xrma(max(msig, 0.0), len)
    dn = xrma(max(-msig, 0.0), len)
    rs = up / dn
    100.0 - 100.0 / (1.0 + rs)

EhlersSuperSmoother(src, lower) =>
	a1 = exp(-PI * sqrt(2) / lower)
	coeff2 = 2 * a1 * cos(sqrt(2) * PI / lower)
	coeff3 = -pow(a1, 2)
	coeff1 = (1 - coeff2 - coeff3) / 2
	filt = na
	filt := nz(coeff1 * (src + nz(src[1], src)) + coeff2 * filt[1] + coeff3 * filt[2], src)

smoothK = input(7, minval=1, title="K")
smoothD = input(2, minval=1, title="D")
lengthRSI = input(10, minval=1, title="RSI Length")
lengthStoch = input(3, minval=1, title="Stochastic Length")
showsignals = input(true, title="Buy/Sell Signals")
src = input(close,  title="Source")

ob = 80
os = 20
midpoint = 50

price = log(drop1st(src))
rsi1 = xrsi(price, lengthRSI)
rawsig = Stochastic(rsi1, rsi1, rsi1, lengthStoch)
sig = EhlersSuperSmoother(rawsig, smoothK)
ma = sma(sig, smoothD)

plot(sig, color=#0094ff, title="K", transp=0)
plot(ma, color=#ff6a00, title="D", transp=0)
lineOB = hline(ob, title="Upper Band", color=#c0c0c0)
lineOS = hline(os, title="Lower Band", color=#c0c0c0)
fill(lineOB, lineOS, color=purple, title="Background")

// Buy/Sell Signals

// use curvature information to filter out some false positives
mm1 = change(change(ma, 1), 1)
mm2 = change(change(ma, 2), 2)
ms1 = change(change(sig, 1), 1)
ms2 = change(change(sig, 2), 2)

sellsignals = showsignals and (mm1 + ms1 < 0 and mm2 + ms2 < 0) and crossunder(sig, ma) and sig[1] > ob
buysignals = showsignals and (mm1 + ms1 > 0 and mm2 + ms2 > 0) and crossover(sig, ma) and sig[1] < os

ploff = 4
plot(buysignals ? sig[1] - ploff : na, style=circles, color=#008fff, linewidth=3, title="Buy Signal", transp=0)
plot(sellsignals ? sig[1] + ploff : na, style=circles, color=#ff0000, linewidth=3, title="Sell Signal", transp=0)

longCondition = buysignals
if (longCondition)
    strategy.entry("L", strategy.long, comment="Long", when=(buysignals))

shortCondition = sellsignals
if (shortCondition)
    strategy.entry("S", strategy.short, comment="Short", when=(sellsignals))