
Artikel ini mengkaji secara terperinci strategi trend-tracking yang lebih baik yang menggabungkan penunjuk SuperTrend dan penapis Stochastic RSI. Strategi ini bertujuan untuk menghasilkan isyarat beli dan jual, sambil mengambil kira trend pasaran dan mengurangkan isyarat palsu.
Pertama, mengira julat turun naik sebenar (TR) dan julat turun naik sebenar purata (ATR). Kemudian menggunakan ATR untuk mengira atas dan bawah landasan:
Rel atas = SMA ((harga penutupan, kitaran ATR) + ATR kali × ATR Laluan bawah = SMA ((harga penutupan, kitaran ATR) - ATR kali × ATR
Jika harga penutupan lebih tinggi daripada downtrend, maka ia adalah uptrend; jika harga penutupan lebih rendah daripada uptrend, maka ia adalah downtrend. Dalam uptrend, SuperTrend adalah downtrend; dalam downtrend, SuperTrend adalah uptrend.
Untuk mengurangkan isyarat palsu, SuperTrend dibuat sebagai purata bergerak untuk mendapatkan SuperTrend yang disaring.
Hitung nilai RSI, kemudian gunakan penunjuk Stochastic untuk menghasilkan RSI Stochastic. Ia mencerminkan sama ada RSI berada di kawasan yang terlalu beli atau terlalu dijual.
Syarat Beli: Harga penutupan berada dalam SuperTrend selepas runcit dan dalam trend menaik, dan Stochastic RSI < 80 Syarat jual: harga penutupan di bawah SuperTrend yang telah melintasi rantaian dan dalam trend menurun, dan Stochastic RSI > 20
Keluar dari pembelian: harga penutupan di bawah SuperTrend yang telah melalui kejatuhan dan dalam trend naik Keluar dan Jual: Harga penutupan berada dalam aliran menurun selepas melalui SuperTrend
Ini adalah strategi trend-tracking yang lebih baik dan mempunyai kelebihan berikut berbanding dengan purata bergerak sederhana:
Strategi ini menggabungkan kelebihan kedua-dua indikator SuperTrend dan Stochastic RSI, yang dapat mengenal pasti trend dengan berkesan dan menghantar isyarat perdagangan berkualiti tinggi. Selain itu, mekanisme penapisan juga menjadikannya lebih kasar terhadap bunyi pasaran. Strategi ini dapat memperoleh kesan strategi yang lebih baik melalui pengoptimuman parameter, dan juga boleh dipertimbangkan untuk digabungkan dengan indikator atau model lain.
/*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)