Chiến lược này dựa trên ý tưởng cổ điển của Larry Connors, sử dụng hệ thống trung bình động kép để nắm bắt sự dao động trung hạn của thị trường và kiếm lợi nhuận khi nó bị mua quá mức hoặc bán quá mức.
Sử dụng chỉ số RSI 2 giai đoạn để xác định xem giá có ở khu vực quá bán không.
Sử dụng đường trung bình động dài (200 thời gian) để xác định hướng xu hướng chính. Chỉ xem xét vị trí mở khi giá vượt quá đường MA dài.
Khi giá trên MA dài và RSI dưới đường bán quá mức, mở vị trí dài theo giá thị trường.
Khi giá vượt qua thời gian MA ngắn (5 thời gian) lên, đóng vị trí dài theo giá thị trường để kiếm lợi nhuận.
Ngoài ra, chiến lược cung cấp các tùy chọn cấu hình sau:
Các thông số RSI: thời gian, mức mua quá mức / bán quá mức.
Các thông số MA: thời gian dài và ngắn.
Bộ lọc RSI MA: thêm RSI MA để tránh biến động RSI.
Stop loss: có thể cấu hình để thêm stop loss hoặc không.
Hệ thống MA đôi có thể theo dõi hiệu quả xu hướng trung bình dài hạn.
RSI tránh bỏ lỡ thời điểm xuất hiện tốt nhất trong biến động dữ dội.
Cấu hình linh hoạt phù hợp với tối ưu hóa tham số.
Chiến lược đột phá, không thể bỏ lỡ tín hiệu.
Chiến lược MA đôi nhạy cảm với các thông số, đòi hỏi tối ưu hóa để đạt được hiệu suất tốt nhất.
Không có lỗ dừng mang lại rủi ro mở rộng lỗ.
Phá vỡ sai rủi ro tổn thất trong thị trường dao động.
Rủi ro quá phù hợp với thử nghiệm. Yêu cầu xác nhận trên thị trường và thời gian.
Kiểm tra và tối ưu hóa sự kết hợp của các thông số RSI và MA để tìm ra tối ưu.
Kiểm tra các bộ lọc nhập thêm như âm lượng tăng để giảm tín hiệu sai.
Thêm stop loss để kiểm soát lỗ giao dịch duy nhất. Đánh giá tác động đến lợi nhuận tổng thể.
Đánh giá tác động của các thời gian giữ khác nhau để tìm ra tối ưu.
Kiểm tra độ bền trong thời gian dài như hàng ngày.
Chiến lược này kết hợp theo dõi xu hướng MA đôi và RSI mua quá / bán quá để tạo thành một hệ thống đột phá điển hình. Với tối ưu hóa tham số, quản lý rủi ro nghiêm ngặt và xác nhận độ bền, nó có thể trở thành một công cụ giao dịch định lượng mạnh mẽ. Nhưng các nhà giao dịch nên cảnh giác với quá mức kiểm tra lại và tiếp tục cải thiện chiến lược để thích nghi với điều kiện thị trường thay đổi.
/*backtest start: 2023-09-26 00:00:00 end: 2023-10-26 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=3 strategy("RSI Strategy", overlay=true, default_qty_type = strategy.percent_of_equity, default_qty_value = 100) //Starter Parameters length = input(title="RSI Lenght", defval=2) overBoughtRSI = input(title="OverBought Level for RSI", defval=10) shortLength = input(title="Short MA Length", defval=5) longLength = input(title="Long MA Length", defval=200) RuleMRSI=input(title="RSI Moving Average Filter", defval= true) lengthmrsi=input(title="RSI Moving Average Length", defval=4) overBoughtMRSI=input(title="OverBought Level for the Moving Average of the RSI", defval=30) Rulestop=input(title="Apply Stop Loss", defval=false) stop_percentual=input(title="% Stop Loss", defval=10) //RSI vrsi = rsi(close, length) //Moving Averages longma = sma(close,longLength) shortma = sma(close,shortLength) mrsi=sma(vrsi,lengthmrsi) //Stop Loss stop_level = strategy.position_avg_price*((100-stop_percentual)/100) //Backtest Period testStartYear = input(2009, "Backtest Start Year") testStartMonth = input(1, "Backtest Start Month") testStartDay = input(2, "Backtest Start Day") testPeriodStart = timestamp(testStartYear,testStartMonth,testStartDay,0,0) testStopYear = input(2020, "Backtest Stop Year") testStopMonth = input(12, "Backtest Stop Month") testStopDay = input(30, "Backtest Stop Day") testPeriodStop = timestamp(testStopYear,testStopMonth,testStopDay,0,0) testPeriod() => true //Strategy if testPeriod() and (not na(vrsi)) if (RuleMRSI==false) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==false) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") if (close>shortma) strategy.close_all() if (RuleMRSI==false) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all() if (RuleMRSI==true) and (Rulestop==true) if (vrsi<overBoughtRSI) and (close>longma) and (mrsi<overBoughtMRSI) strategy.entry("RsiLE", strategy.long , comment="Open") strategy.exit("RsiLE", stop = stop_level) if (close>shortma) strategy.close_all()