
Chiến lược này là chiến lược giao dịch theo xu hướng kết hợp chỉ báo RSI và kênh Bollinger Bands. Nó đưa ra quyết định giao dịch bằng cách xác định trạng thái quá mua và quá bán của thị trường và kết hợp vị thế giá trong Dải Bollinger. Chiến lược này áp dụng ngưỡng RSI tương đối lỏng lẻo (60 cho tình trạng quá mua và 40 cho tình trạng quá bán) và kết hợp các đường trên và dưới của Dải Bollinger để xác định thời điểm vào và thoát lệnh, đồng thời thiết lập cơ chế thoát lệnh với lợi nhuận 2%.
Logic cốt lõi của chiến lược này dựa trên các thành phần chính sau:
Điều kiện mua hàng:
Điều kiện bán hàng:
Rủi ro thị trường biến động: Giao dịch thường xuyên có thể diễn ra trong thị trường đi ngang và biến động. Giải pháp: Bạn có thể thêm bộ lọc trung bình động hoặc thêm cơ chế xác nhận xu hướng.
Rủi ro đột phá sai: Giá đột phá trong thời gian ngắn khỏi Dải Bollinger có thể gây ra tín hiệu sai. Giải pháp: Bạn có thể thêm thời gian xác nhận hoặc tăng yêu cầu về biên độ đột phá.
Sự phụ thuộc vào môi trường thị trường: Hiệu quả của chiến lược có thể thay đổi theo các chu kỳ thị trường khác nhau. Giải pháp: Điều chỉnh các thông số một cách linh hoạt dựa trên các đặc điểm khác nhau của thị trường.
Chiến lược này xây dựng một hệ thống giao dịch theo xu hướng tương đối mạnh mẽ thông qua sự kết hợp giữa RSI và Bollinger Bands. Đặc điểm chính của chiến lược này là kiểm soát rủi ro thông qua cơ chế xác nhận nhiều lần trong khi vẫn duy trì các cơ hội giao dịch. Mặc dù có một số rủi ro tiềm ẩn, tính ổn định và độ tin cậy của chiến lược có thể được cải thiện hơn nữa bằng cách tối ưu hóa các tham số và thêm điều kiện lọc. Chiến lược này phù hợp để sử dụng trong các thị trường có tính biến động lớn hơn, nhưng cần phải điều chỉnh các thông số tương ứng dựa trên các đặc điểm cụ thể của thị trường.
/*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))