
Chiến lược này là một hệ thống giao dịch định lượng kết hợp Gaussian Channel và Stochastic RSI, một chỉ số tương đối mạnh ngẫu nhiên. Chiến lược này nắm bắt cơ hội đảo ngược xu hướng của thị trường bằng cách theo dõi giá và sự giao thoa của Gaussian Channel và RSI ngẫu nhiên. Gaussian Channel được xây dựng bằng đường trung bình di chuyển và chênh lệch chuẩn, có thể phản ánh động lực phạm vi biến động của thị trường, trong khi RSI ngẫu nhiên cung cấp tín hiệu xác nhận về động lực.
Logic cốt lõi của chiến lược bao gồm những phần chính sau:
Chiến lược này kết hợp theo dõi xu hướng và các chỉ số động lực trong phân tích kỹ thuật để xây dựng một hệ thống giao dịch định lượng có thể kiểm soát được rủi ro và có tính logic. Mặc dù có một số rủi ro vốn có, chiến lược này có khả năng duy trì hiệu suất ổn định trong các môi trường thị trường khác nhau thông qua việc tối ưu hóa và hoàn thiện liên tục. Thiết kế mô đun của chiến lược cũng cung cấp nền tảng tốt cho việc tối ưu hóa và mở rộng sau này.
/*backtest
start: 2024-02-21 00:00:00
end: 2025-02-18 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Binance","currency":"BNB_USDT"}]
*/
//@version=5
strategy("SAJJAD JAMSHIDI Channel with Stochastic RSI Strategy", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=0, default_qty_type=strategy.percent_of_equity, default_qty_value=100, process_orders_on_close=true)
// Gaussian Channel Inputs
lengthGC = input.int(20, "Gaussian Channel Length", minval=1)
multiplier = input.float(2.0, "Standard Deviation Multiplier", minval=0.1)
// Calculate Gaussian Channel
basis = ta.ema(close, lengthGC)
deviation = multiplier * ta.stdev(close, lengthGC)
upperChannel = basis + deviation
lowerChannel = basis - deviation
// Plot Gaussian Channel
plot(basis, "Basis", color=color.blue)
plot(upperChannel, "Upper Channel", color=color.green)
plot(lowerChannel, "Lower Channel", color=color.red)
// Stochastic RSI Inputs
rsiLength = input.int(14, "RSI Length", minval=1)
stochLength = input.int(14, "Stochastic Length", minval=1)
smoothK = input.int(3, "Smooth K", minval=1)
smoothD = input.int(3, "Smooth D", minval=1)
// Calculate RSI
rsi = ta.rsi(close, rsiLength)
// Calculate Stochastic RSI
lowestRSI = ta.lowest(rsi, stochLength)
highestRSI = ta.highest(rsi, stochLength)
stochRSI = (rsi - lowestRSI) / (highestRSI - lowestRSI) * 100
k = ta.sma(stochRSI, smoothK)
d = ta.sma(k, smoothD)
// Trading Conditions
stochUp = k > d
priceAboveUpper = ta.crossover(close, upperChannel)
priceBelowUpper = ta.crossunder(close, upperChannel)
strategy.entry("Long", strategy.long, when=priceAboveUpper and stochUp)
strategy.close("Long", when=priceBelowUpper)