Bài viết này phân tích sâu về một chiến lược theo xu hướng kết hợp chỉ số SuperTrend với bộ lọc Stochastic RSI để cải thiện độ chính xác. Nó nhằm mục đích tạo ra tín hiệu mua và bán trong khi xem xét xu hướng hiện hành và giảm các tín hiệu sai. Stochastic RSI lọc ra các tín hiệu sai trong các điều kiện mua quá mức và bán quá mức.
Đầu tiên, True Range (TR) và Average True Range (ATR) được tính toán.
Phạm vi trên = SMA ((Close, ATR Period) + ATR Multiplier * ATR Phạm vi thấp hơn = SMA ((Close, ATR Period) - ATR Multiplier * ATR
Một xu hướng tăng được xác định khi đóng > dải dưới. Một xu hướng giảm được xác định khi đóng < dải trên.
Trong xu hướng tăng, SuperTrend được đặt ở dải dưới. Trong xu hướng giảm, SuperTrend được đặt ở dải trên.
Để giảm tín hiệu sai, SuperTrend được làm mịn bằng cách sử dụng đường trung bình động để có được SuperTrend được lọc.
Giá trị RSI được tính toán, sau đó chỉ số Stochastic được áp dụng trên nó để tạo ra Stochastic RSI. Nó cho thấy liệu RSI đã mua quá mức hay đã bán quá mức.
Đăng nhập dài: Khóa chéo trên SuperTrend được lọc trong xu hướng tăng và Stochastic RSI < 80 Nhập ngắn: Khóa chéo dưới SuperTrend lọc trong xu hướng giảm và Stochastic RSI > 20
Ra khỏi dài: Khóa các đường chéo dưới SuperTrend được lọc trong xu hướng tăng
Khóa ngắn: Khóa đường chéo trên SuperTrend được lọc trong xu hướng giảm
Chiến lược theo xu hướng được cải thiện này có những lợi thế sau đây so với các đường trung bình di chuyển đơn giản:
Chiến lược này kết hợp các điểm mạnh của SuperTrend và Stochastic RSI để xác định xu hướng hiệu quả và tín hiệu giao dịch chất lượng, đồng thời làm cho chiến lược mạnh mẽ với tiếng ồn thị trường thông qua các cơ chế lọc.
/*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)