Chiến lược RSI và Stochastics đa khung thời gian là một chiến lược kết hợp các chỉ số RSI và Stochastics trên nhiều khung thời gian để xác định điều kiện mua quá nhiều và bán quá nhiều trên thị trường. Nó sử dụng các giá trị trung bình của RSI và Stochastics từ 4 khung thời gian khác nhau để đo đạc đà và quá mức thị trường tổng thể. Điều này cho phép nó khai thác điểm mạnh của các chỉ số trên các khung thời gian khác nhau.
Chỉ số RSI là một dao động mạnh mẽ đo mức mua quá mức và bán quá mức dựa trên quy mô của các biến động giá gần đây.
Chiến lược này sử dụng chỉ số RSI 14 giai đoạn và lấy các giá trị RSI từ các khung thời gian hàng tháng, hàng ngày, 4 giờ và 1 giờ.
Stochastics %K là một chỉ số cho thấy mức mua quá mức / bán quá mức trên thị trường theo thang điểm từ 0 đến 100. Nói chung, các giá trị trên 80 cho thấy thị trường mua quá mức trong khi các giá trị dưới 20 báo hiệu thị trường bán quá mức.
Chiến lược sử dụng cấu hình 14,3 Stochastics và cũng lấy các giá trị %K từ các khung thời gian đã đề cập ở trên.
Điểm mấu chốt của chiến lược là tính trung bình của hai chỉ số trên nhiều khung thời gian. Điều này cho phép nó khai thác điểm mạnh của mỗi khung thời gian khi đánh giá các điều kiện thị trường tổng thể.
RSI trung bình = (RSI hàng tháng + RSI hàng ngày + RSI 4H + RSI 1H) / 4
Trung bình Stochastics = (Stochastics hàng tháng + Stochastics hàng ngày + 4H Stochastics + 1H Stochastics) / 4
Chiến lược này kích hoạt dài khi RSI trung bình giảm xuống dưới 30 và Stochastics trung bình xuống dưới 20. Nó kích hoạt ngắn khi RSI trung bình tăng trên 70 và Stochastics trung bình vi phạm 80.
Vị trí dài được đóng khi trung bình Stochastic tăng trên 70 và trung bình RSI tăng trên 50.
Ưu điểm chính của chiến lược này nằm trong sự kết hợp của hai chỉ số trên nhiều khung thời gian. Điều này làm tăng đáng kể độ tin cậy của tín hiệu giao dịch và giảm thiểu các tín hiệu sai.
RSI và Stochastics xác minh lẫn nhau như là các tín hiệu. Chỉ dựa vào một chỉ số có xu hướng tạo ra các tín hiệu sai thường xuyên hơn. Cách tiếp cận hai chỉ số thúc đẩy độ chính xác.
Nhiều khung thời gian dẫn đến phân tích mạnh mẽ hơn. Ví dụ, các khung thời gian hàng tháng và hàng ngày cho thấy thị trường quá mua nhưng các khung thời gian nhỏ hơn vẫn chưa đạt đến mức quá mở rộng. Điều này cho thấy xu hướng tăng có thể sẽ tiếp tục. Các tín hiệu đáng tin cậy hơn khi tất cả các khung thời gian đồng ý.
Xác định rõ ràng hơn các điểm chuyển đổi cấu trúc khi nhiều khung thời gian đồng thời cho thấy sự phá vỡ các mức S / R chính, báo hiệu một sự đảo ngược xu hướng.
Tự động tính toán trung bình đơn giản hóa quy trình làm việc. Không cần tính toán thủ công vì mã xử lý lấy dữ liệu, tính toán chỉ số và tính trung bình tự động.
Như với tất cả các chiến lược phân tích kỹ thuật, rủi ro cốt lõi nằm ở những tín hiệu sai.
Sự đảo ngược xu hướng dẫn đến việc dừng lại. Ví dụ, giá có thể phá vỡ ngắn hạn dưới mức hỗ trợ trước khi phục hồi trong khi dài. Những trường hợp như vậy có thể gây ra tổn thất ngắn hạn do logic thoát.
Không hợp lệ hóa các S / R chính dẫn đến việc dừng lại không thành công. Một sự phá vỡ các mức S / R chính có thể trực tiếp kích hoạt các điểm dừng được thiết kế bên dưới chúng, dẫn đến tổn thất trên mức trung bình.
Các đánh giá sai từ các cấu hình khung thời gian không tối ưu.
Sự khác biệt giữa các khung thời gian gây ra hiệu ứng Dunkirk. Khi các khung thời gian cao hơn cho thấy thị trường mua quá mức nhưng các khung thời gian thấp hơn báo hiệu các điều kiện bán quá mức, làm cho các mức trung bình không hiệu quả.
Các giải pháp bao gồm tối ưu hóa các chiến lược dừng lỗ, theo dõi mức S / R năng động, điều chỉnh các tham số khung thời gian và thêm các bộ lọc bổ sung.
Với những rủi ro đã thảo luận, các cơ hội cải thiện bao gồm:
Tối ưu hóa cơ chế dừng lỗ để kết hợp dừng lại và thoát một phần. Điều này khóa lợi nhuận trong khi kiểm soát rủi ro giao dịch duy nhất.
Thêm khung thời gian cao hơn như biểu đồ hàng quý. Điều này cho phép hướng dẫn xu hướng lớn hơn để lọc các tín hiệu sai. Ưu tiên đọc từ khung thời gian cao hơn khi xảy ra sự khác biệt.
Bao gồm khối lượng để xác nhận xu hướng bổ sung thông qua sự khác biệt bò / gấu để tránh xu hướng zombie.
Điều chỉnh kỹ các tín hiệu đầu vào bằng cách chờ đợi sự đột phá xung quanh các S / R lịch sử chính hoặc cho phép các mục rút lại tối ưu.
Thực hiện dừng thích nghi dựa trên độ biến động gần đây và giá trị ATR để định vị dừng động.
Chiến lược RSI và Stochastics đa khung thời gian là một phương pháp tiếp cận rõ ràng, đáng tin cậy sử dụng sự kết hợp của RSI và Stochastics trên nhiều khung thời gian để xác định mức mua quá mức / bán quá mức. Sức mạnh lớn nhất của nó nằm trong việc xác minh lẫn nhau các chỉ số và khung thời gian để giảm thiểu rủi ro báo động và tín hiệu sai. Tuy nhiên, giống như tất cả các chiến lược kỹ thuật, nó phải đối mặt với những rủi ro vốn có cần phải được giải quyết thông qua tối ưu hóa dừng lỗ, lựa chọn khung thời gian vv để tinh chỉnh nó thành một chiến lược giao dịch tự động ổn định.
/*backtest start: 2024-01-01 00:00:00 end: 2024-01-31 23:59:59 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ ////////////////////////////////////////// MTF Stochastic & RSI Strategy 🚥 ©️ bykzis ///////////////////////////////////////// // // *** Inspired by "Binance CHOP Dashboard" from @Cazimiro and "RSI MTF Table" from @mobester16 *** and LOT OF COPY of Indicator-Jones MTF Scanner // //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //@version=5 strategy('MTF RSI & STOCH Strategy🚥 by kzi', overlay=false,initial_capital=100, currency=currency.USD, commission_value=0.01, commission_type=strategy.commission.percent) // Pair list var string GRP1 = '══════════ General ══════════' overbought = input.int(80, 'Overbought Level', minval=1, group=GRP1) oversold = input.int(20, 'Oversold Level', minval=1, group=GRP1) /// Timeframes var string GRP2 = '══════════ Timeframes ══════════' timeframe1 = input.timeframe(title="Timeframe 1", defval="W", group=GRP2) timeframe2 = input.timeframe(title="Timeframe 2", defval="D", group=GRP2) timeframe3 = input.timeframe(title="Timeframe 3", defval="240", group=GRP2) timeframe4 = input.timeframe(title="Timeframe 4", defval="60", group=GRP2) // RSI settings var string GRP3 = '══════════ RSI settings ══════════' rsiLength = input.int(14, minval=1, title='RSI length', group=GRP3) rsiSource = input(close, 'RSI Source', group=GRP3) rsioverbought = input.int(70, 'RSI Overbought Level', minval=1, group=GRP3) rsioversold = input.int(30, 'RSI Oversold Level', minval=1, group=GRP3) /// Get RSI values of each timeframe ///////////////////////////////////////////////////// rsi = ta.rsi(rsiSource, rsiLength) callRSI(id,timeframe) => rsiValue = request.security(id, str.tostring(timeframe), rsi, gaps=barmerge.gaps_off) rsiValue RSI_TF1 = callRSI(syminfo.tickerid, timeframe1) RSI_TF2 = callRSI(syminfo.tickerid, timeframe2) RSI_TF3 = callRSI(syminfo.tickerid, timeframe3) RSI_TF4 = callRSI(syminfo.tickerid, timeframe4) /////// Calculate Averages ///////////////////////////////////////////////////////////////// calcAVG(valueTF1, valueTF2, valueTF3, valueTF4) => math.round((valueTF1 + valueTF2 + valueTF3 + valueTF4) / 4, 2) AVG=calcAVG(RSI_TF1, RSI_TF2, RSI_TF3, RSI_TF4) // Stochastic settings var string GRP4 = '══════════ Stochastic settings ══════════' periodK = input.int(14, '%K length', minval=1, group=GRP4) smoothK = input.int(3, 'Smooth K', minval=1, group=GRP4) stochSource = input(close, 'Stochastic Source', group=GRP4) stochoverbought = input.int(70, 'Stochastic Overbought Level', minval=1, group=GRP4) stochoversold = input.int(30, 'Stochastic Oversold Level', minval=1, group=GRP4) /// Get Stochastic values of each timeframe //////////////////////////////////////////////// stoch = ta.sma(ta.stoch(stochSource, high, low, periodK), smoothK) getStochastic(id,timeframe) => stochValue = request.security(id, str.tostring(timeframe), stoch, gaps=barmerge.gaps_off) stochValue Stoch_TF1 = getStochastic(syminfo.tickerid, timeframe1) Stoch_TF2 = getStochastic(syminfo.tickerid, timeframe2) Stoch_TF3 = getStochastic(syminfo.tickerid, timeframe3) Stoch_TF4 = getStochastic(syminfo.tickerid, timeframe4) AVG_STOCH=calcAVG(Stoch_TF1, Stoch_TF2, Stoch_TF3, Stoch_TF4) plot(AVG, color = color.blue, title='RSI') plot(AVG_STOCH, color = color.yellow,title='STOCH') hline(rsioverbought,color=color.red) hline(rsioversold, color=color.lime) hline(50, color=color.white) //============ signal Generator ==================================// if AVG <= rsioversold and AVG_STOCH <=stochoversold strategy.entry('Buy_Long', strategy.long) strategy.close("Buy_Long",when=(AVG_STOCH >=70 and AVG >=50 and close >=strategy.position_avg_price),comment="Long_OK") if AVG >=rsioverbought and AVG_STOCH >=stochoverbought strategy.entry('Buy_Short', strategy.short) strategy.close("Buy_Short",when=(AVG_STOCH <=30 and AVG <=50 and close <=strategy.position_avg_price),comment="Short_OK") ///////////////////////////////////////////////////////////////////////////////////////////