Strategi SuperTrend yang Diperbaiki

Penulis:ChaoZhang, Tarikh: 2024-01-17 15:55:15
Tag:

img

Ringkasan

Artikel ini menganalisis secara mendalam strategi trend berikut yang menggabungkan penunjuk SuperTrend dengan penapis RSI Stochastic untuk ketepatan yang lebih baik. Ia bertujuan untuk menjana isyarat beli dan jual sambil mempertimbangkan trend yang berlaku dan mengurangkan isyarat palsu.

Logika Strategi

Pengiraan SuperTrend

Pertama, Julat Benar (TR) dan Julat Benar Purata (ATR) dikira. Kemudian jalur atas dan bawah dikira menggunakan ATR:

Band atas = SMA ((Tutup, Tempoh ATR) + Pengganda ATR * ATR Band bawah = SMA ((Tutup, Tempoh ATR) - Pengganda ATR * ATR

Trend menaik dikenal pasti apabila dekat > band bawah. Trend menurun dikenal pasti apabila dekat < band atas.

Semasa trend menaik, SuperTrend ditetapkan ke band bawah. Semasa downtrend, SuperTrend ditetapkan ke band atas.

Mekanisme Penapisan

Untuk mengurangkan isyarat palsu, SuperTrend disederhanakan menggunakan purata bergerak untuk mendapatkan SuperTrend yang ditapis.

RSI Stokastis

Nilai RSI dikira, maka penunjuk Stochastic digunakan untuk menjana RSI Stochastic.

Syarat kemasukan dan keluar

Masuk panjang: Penutupan persilangan di atas SuperTrend yang ditapis dalam trend menaik dan RSI Stochastic < 80 Entry pendek: Tutup persilangan di bawah SuperTrend disaring dalam trend menurun dan RSI Stochastic > 20

Keluar panjang: Tutup salib di bawah SuperTrend yang disaring dalam trend menaik
Keluar pendek: Tutup salib di atas SuperTrend yang ditapis dalam trend menurun

Kelebihan Strategi

Strategi trend berikut yang lebih baik ini mempunyai kelebihan berikut berbanding purata bergerak mudah:

  1. SuperTrend sendiri mempunyai pengenalan trend yang baik dan keupayaan penapisan isyarat palsu.
  2. Mekanisme penapisan semakin mengurangkan isyarat palsu yang menghasilkan isyarat yang lebih boleh dipercayai.
  3. Stochastic RSI mengelakkan isyarat palsu di sekitar tahap sokongan / rintangan penting semasa keadaan overbought / oversold.
  4. Strategi ini mempertimbangkan kedua-dua arah trend dan keadaan overbought / oversold yang membawa kepada keseimbangan yang lebih baik antara mengikuti trend dan mengelakkan isyarat palsu.
  5. Penyesuaian parameter yang fleksibel membolehkan penyesuaian dengan persekitaran pasaran yang berbeza.

Risiko dan Pengoptimuman

Potensi Risiko

  1. Stop loss boleh dipukul semasa pergerakan turun naik yang tinggi.
  2. Masalah dengan SuperTrend dan penapisan menyebabkan perubahan harga baru-baru ini hilang.
  3. Tetapan parameter RSI Stochastic yang salah yang mempengaruhi prestasi strategi.

Pengurusan Risiko

  1. Sesuaikan stop loss dengan sewajarnya atau gunakan trailing stop loss.
  2. Tuning parameter seperti tempoh ATR dan tempoh penapis untuk mengimbangi kesan kelewatan.
  3. Uji dan optimumkan parameter RSI Stochastic.

Peluang Pengoptimuman

  1. Uji kombinasi parameter yang berbeza untuk mencari parameter optimum.
  2. Cuba mekanisme penapisan yang berbeza seperti EMA smoothing dan sebagainya.
  3. Gunakan pembelajaran mesin untuk mengoptimumkan parameter secara automatik.
  4. Masukkan penunjuk lain untuk menambah syarat kemasukan.

Kesimpulan

Strategi ini menggabungkan kekuatan SuperTrend dan Stochastic RSI untuk pengenalan trend yang berkesan dan isyarat perdagangan yang berkualiti, sementara juga menjadikan strategi yang kukuh untuk bising pasaran melalui mekanisme penapisan. Penambahbaikan prestasi yang lebih lanjut boleh dicapai melalui pengoptimuman parameter atau menggabungkan dengan penunjuk / model lain. Secara keseluruhan, strategi ini menunjukkan kemampuan mengikuti trend yang baik dan beberapa kawalan risiko bagi mereka yang mencari pulangan yang stabil.


/*backtest
start: 2024-01-09 00:00:00
end: 2024-01-16 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Improved SuperTrend Strategy with Stochastic RSI", shorttitle="IST+StochRSI", overlay=true)

// Input parameters
atr_length = input(14, title="ATR Length")
atr_multiplier = input(1.5, title="ATR Multiplier")
filter_length = input(5, title="Filter Length")
stoch_length = input(14, title="Stochastic RSI Length")
smooth_k = input(3, title="Stochastic RSI %K Smoothing")

// Calculate True Range (TR) and Average True Range (ATR)
tr = ta.rma(ta.tr, atr_length)
atr = ta.rma(tr, atr_length)

// Calculate SuperTrend
upper_band = ta.sma(close, atr_length) + atr_multiplier * atr
lower_band = ta.sma(close, atr_length) - atr_multiplier * atr

is_uptrend = close > lower_band
is_downtrend = close < upper_band

super_trend = is_uptrend ? lower_band : na
super_trend := is_downtrend ? upper_band : super_trend

// Filter for reducing false signals
filtered_super_trend = ta.sma(super_trend, filter_length)

// Calculate Stochastic RSI
rsi_value = ta.rsi(close, stoch_length)
stoch_rsi = ta.sma(ta.stoch(rsi_value, rsi_value, rsi_value, stoch_length), smooth_k)

// Entry conditions
long_condition = ta.crossover(close, filtered_super_trend) and is_uptrend and stoch_rsi < 80
short_condition = ta.crossunder(close, filtered_super_trend) and is_downtrend and stoch_rsi > 20

// Exit conditions
exit_long_condition = ta.crossunder(close, filtered_super_trend) and is_uptrend
exit_short_condition = ta.crossover(close, filtered_super_trend) and is_downtrend

// Plot SuperTrend and filtered SuperTrend
plot(super_trend, color=color.orange, title="SuperTrend", linewidth=2)
plot(filtered_super_trend, color=color.blue, title="Filtered SuperTrend", linewidth=2)

// Plot Buy and Sell signals
plotshape(series=long_condition, title="Buy Signal", color=color.green, style=shape.triangleup, location=location.belowbar)
plotshape(series=short_condition, title="Sell Signal", color=color.red, style=shape.triangledown, location=location.abovebar)

// Output signals to the console for analysis
plotchar(long_condition, "Long Signal", "▲", location.belowbar, color=color.green, size=size.small)
plotchar(short_condition, "Short Signal", "▼", location.abovebar, color=color.red, size=size.small)

// Strategy entry and exit
strategy.entry("Long", strategy.long, when=long_condition)
strategy.entry("Short", strategy.short, when=short_condition)
strategy.close("Long", when=exit_long_condition)
strategy.close("Short", when=exit_short_condition)


Lebih lanjut