Chiến lược này là một hệ thống giao dịch dao động kết hợp chỉ số RSI với Bollinger Bands. Nó xác định các điều kiện mua quá mức và bán quá mức trên thị trường trong khi xem xét các vị trí giá trong Bollinger Bands cho các quyết định giao dịch. Chiến lược sử dụng ngưỡng RSI tương đối thoải mái (mua quá mức 60, bán quá mức 40) và tích hợp ranh giới Bollinger Band cho thời gian vào và ra, cùng với cơ chế lấy lợi nhuận 2%.
Logic cốt lõi dựa trên một số thành phần chính:
Điều kiện mua:
Điều kiện bán:
Rủi ro thị trường hỗn loạn: Có thể tạo ra các giao dịch thường xuyên trên các thị trường bên cạnh. Giải pháp: Thêm bộ lọc trung bình động hoặc cơ chế xác nhận xu hướng.
Rủi ro phá vỡ sai: Sự phá vỡ giá ngắn của Bollinger Bands có thể kích hoạt các tín hiệu sai. Giải pháp: Thêm thời gian xác nhận hoặc tăng yêu cầu thoát.
Sự phụ thuộc vào môi trường thị trường: Hiệu suất có thể khác nhau trong các chu kỳ thị trường khác nhau. Giải pháp: Điều chỉnh động các thông số dựa trên đặc điểm thị trường.
Chiến lược này xây dựng một hệ thống giao dịch dao động tương đối mạnh mẽ thông qua sự phối hợp của RSI và Bollinger Bands. Đặc điểm chính của nó là duy trì các cơ hội giao dịch trong khi kiểm soát rủi ro thông qua nhiều cơ chế xác nhận. Mặc dù có những rủi ro tiềm ẩn, sự ổn định và độ tin cậy của chiến lược có thể được cải thiện hơn nữa thông qua tối ưu hóa tham số và các điều kiện lọc bổ sung. Nó phù hợp với thị trường biến động nhưng đòi hỏi điều chỉnh tham số dựa trên các đặc điểm thị trường cụ thể.
/*backtest start: 2024-12-06 00:00:00 end: 2025-01-04 08:00:00 period: 1h basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Demo GPT - Adjusted Swing Trading for SBI", overlay=true, commission_type=strategy.commission.percent, commission_value=0.1, slippage=3) // Input Parameters rsiLength = input.int(14, minval=1, title="RSI Length") rsiOverbought = input.int(60, minval=50, maxval=100, title="RSI Overbought Level") // Relaxed level rsiOversold = input.int(40, minval=0, maxval=50, title="RSI Oversold Level") // Relaxed level bbLength = input.int(20, minval=1, title="Bollinger Bands Length") bbMult = input.float(2.0, minval=0.1, maxval=5, title="Bollinger Bands StdDev Multiplier") maLength = input.int(50, minval=1, title="Moving Average Length") // RSI Calculation rsi = ta.rsi(close, rsiLength) // Bollinger Bands Calculation bbBasis = ta.sma(close, bbLength) bbDev = bbMult * ta.stdev(close, bbLength) bbUpper = bbBasis + bbDev bbLower = bbBasis - bbDev // Moving Average ma = ta.sma(close, maLength) // Buy Signal: Price near or below lower Bollinger Band AND RSI below oversold level buySignal = (close <= bbLower * 1.01) and (rsi < rsiOversold) // Sell Signal: Price near or above upper Bollinger Band OR RSI above overbought level sellSignal = (close >= bbUpper * 0.99) or (rsi > rsiOverbought) // Date Range Inputs startDate = input(timestamp("2018-01-01 00:00"), title="Start Date") endDate = input(timestamp("2069-12-31 23:59"), title="End Date") inDateRange = true // Strategy Logic if buySignal and inDateRange strategy.entry("Swing Long SBI", strategy.long) if strategy.position_size > 0 and (sellSignal or close >= strategy.position_avg_price * 1.02) strategy.close("Swing Long SBI") // Plotting plot(bbBasis, title="Bollinger Bands Basis", color=color.blue) plot(bbUpper, title="Bollinger Bands Upper", color=color.red) plot(bbLower, title="Bollinger Bands Lower", color=color.green) plot(ma, title="Moving Average", color=color.orange) hline(rsiOverbought, "RSI Overbought", color=color.red, linestyle=hline.style_dotted) hline(rsiOversold, "RSI Oversold", color=color.green, linestyle=hline.style_dotted) plot(rsi, title="RSI", color=color.purple) // Fill Bollinger Bands for Visualization fill(plot(bbUpper), plot(bbLower), title="Bollinger Bands Background", color=color.rgb(33, 150, 243, 95))