
Chiến lược này là một hệ thống giao dịch đảo ngược xu hướng đa chỉ số phối hợp, chủ yếu kết hợp ba chỉ số kỹ thuật của chỉ số tương đối yếu ((RSI), chỉ số đường thẳng ((SAR) và chỉ số di chuyển đơn giản ((SMA)). Ý tưởng cốt lõi của chiến lược là cảnh báo cơ hội đảo ngược tiềm năng bằng tín hiệu mua bán vượt quá RSI, sau đó sử dụng thay đổi hướng của chỉ số SAR để xác nhận tín hiệu đảo ngược, và cuối cùng sử dụng đường trung bình di chuyển làm tham chiếu dừng lỗ động.
Cơ chế hoạt động của chiến lược bao gồm ba bước:
Chiến lược này, thông qua sự hợp tác phối hợp của RSI và SAR, xây dựng một hệ thống giao dịch đảo ngược xu hướng tương đối đáng tin cậy. Sử dụng trung bình di chuyển như một công cụ kiểm soát rủi ro động, đảm bảo nắm bắt hiệu quả xu hướng và thực hiện kiểm soát động của rủi ro. Ưu điểm chính của chiến lược là xác nhận nhiều tín hiệu và quy tắc giao dịch rõ ràng, nhưng trong ứng dụng thực tế, cần chú ý đến nhận dạng môi trường thị trường và tối ưu hóa động của các tham số.
/*backtest
start: 2024-07-15 00:00:00
end: 2025-02-15 00:00:00
period: 1h
basePeriod: 1h
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("SAR + RSI Strategy", overlay=true, margin_long=100, margin_short=100)
// ———————— SAR Parameters ————————
start = input(0.02, "SAR Start")
increment = input(0.02, "SAR Increment")
maximum = input(0.2, "SAR Maximum")
// ———————— RSI Parameters ————————
rsiLength = input(14, "RSI Length")
upperLevel = input(70, "RSI Upper Level")
lowerLevel = input(30, "RSI Lower Level")
// ———————— SMA Parameter ————————
smaLength = input(21, "SMA Exit Length")
// ———————— Indicators Calculation ————————
// SAR Calculation
sarValue = ta.sar(start, increment, maximum)
sarUp = sarValue < close
sarDown = sarValue > close
// RSI Calculation
rsi = ta.rsi(close, rsiLength)
rsiOverbought = ta.cross(rsi, upperLevel)
rsiOversold = ta.cross(rsi, lowerLevel)
// SMA Calculation
sma21 = ta.sma(close, smaLength)
// ———————— Entry Conditions ————————
longCondition =
// RSI oversold signal occurred in last 3 bars
(ta.barssince(rsiOversold) <= 3) and
// SAR reversal to bullish occurs now
sarUp and not sarUp[1]
shortCondition =
// RSI overbought signal occurred in last 3 bars
(ta.barssince(rsiOverbought) <= 3) and
// SAR reversal to bearish occurs now
sarDown and not sarDown[1]
// ———————— Exit Conditions ————————
exitLong = ta.crossunder(close, sma21)
exitShort = ta.crossover(close, sma21)
// ———————— Strategy Execution ————————
strategy.entry("Long", strategy.long, when=longCondition)
strategy.close("Long", when=exitLong)
strategy.entry("Short", strategy.short, when=shortCondition)
strategy.close("Short", when=exitShort)
// ———————— Visualizations ————————
// plot(sarValue, "SAR", style=plot.style_circles, color=sarUp ? color.green : color.red)
// plot(sma21, "21 SMA", color=color.orange)