Chiến lược này kết hợp hai chỉ số kỹ thuật, MACD và RSI, sử dụng tín hiệu chéo MACD và tín hiệu mua quá mức / bán quá mức RSI để xác định thời gian giao dịch. Trong khi đó, chiến lược cũng giới thiệu Trung bình Di chuyển Tường trọng (WMA) như một phán quyết phụ để cải thiện độ tin cậy của chiến lược. Chiến lược chạy trên khung thời gian 1 giờ, mở các vị trí dài khi MACD hình thành một thập tự vàng và RSI trên 50, và mở các vị trí ngắn khi MACD hình thành một thập tự tử và RSI dưới 50. Đồng thời, nó đóng các vị trí dài khi RSI trên 70 và đóng các vị trí ngắn khi RSI dưới 30. Ngoài ra, chiến lược đặt nhiều biến cho các khung thời gian để đánh giá sự thay đổi xu hướng ở các thang điểm thời gian khác nhau.
Cốt lõi của chiến lược này là kết hợp hai chỉ số kỹ thuật, MACD và RSI. MACD bao gồm sự khác biệt giữa đường nhanh (trung bình di chuyển ngắn hạn) và đường chậm (trung bình di chuyển dài hạn), có thể phản ánh sự thay đổi xu hướng thị trường. Khi đường nhanh vượt qua đường chậm, nó tạo thành một thập giá vàng, cho thấy xu hướng tăng; ngược lại, nó tạo thành một thập giá chết, cho thấy xu hướng giảm. RSI là một chỉ số đo trạng thái mua quá mức và bán quá mức của thị trường. Khi RSI trên 70, nó cho thấy thị trường đã mua quá mức và có thể phải đối mặt với rủi ro pullback; khi RSI dưới 30, nó cho thấy thị trường đã bán quá mức và có thể mở ra cơ hội phục hồi.
Chiến lược này kết hợp MACD và RSI, sử dụng phán đoán xu hướng của MACD và phán đoán mua quá mức / bán quá mức của RSI để nắm bắt chính xác hơn thời gian giao dịch. Đồng thời, chiến lược cũng giới thiệu Trung bình di chuyển cân nhắc (WMA) như một phán đoán phụ. WMA nhấn mạnh nhiều hơn vào giá gần đây so với trung bình di chuyển thông thường và có thể phản ánh sự thay đổi giá một cách nhạy cảm hơn.
Ngoài ra, chiến lược đặt các biến cho nhiều khung thời gian (chẳng hạn như 15 phút, 30 phút, 1 giờ, 2 giờ, vv) để đánh giá những thay đổi xu hướng ở các quy mô thời gian khác nhau.
Chiến lược này kết hợp hai chỉ số kỹ thuật hiệu quả, MACD và RSI, trong khi giới thiệu WMA như một phán quyết phụ để đưa ra quyết định giao dịch trên khung thời gian 1 giờ. Logic chiến lược rõ ràng, dễ hiểu và thực hiện, và có thể nắm bắt tốt hơn xu hướng thị trường và điều kiện mua quá mức / bán quá mức, với khả năng thực hiện nhất định. Tuy nhiên, chiến lược cũng có một số hạn chế và rủi ro, chẳng hạn như chậm trễ, khung thời gian duy nhất, thiếu kiểm soát rủi ro, vv. Trong tương lai, chiến lược có thể được cải thiện về việc giới thiệu nhiều chỉ số hơn, tiếp tục khung thời gian, tăng cường kiểm soát rủi ro, tối ưu hóa tham số, vv, để tăng cường độ bền và lợi nhuận. Nhìn chung, chiến lược này cung cấp một cách suy nghĩ cho giao dịch định lượng, nhưng vẫn cần được tối ưu hóa và tinh chỉnh trong thực tế.
/*backtest start: 2024-05-01 00:00:00 end: 2024-05-31 23:59:59 period: 2h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=5 strategy("Improved MACD and RSI Trading Strategy", overlay=true, initial_capital=10000, commission_type=strategy.commission.percent, commission_value=0.01, default_qty_type=strategy.percent_of_equity, default_qty_value=100) // MACD 設置 fast_length = input(12, title="MACD Fast Length") slow_length = input(26, title="MACD Slow Length") signal_smoothing = input(9, title="MACD Signal Smoothing") // RSI 設置 input_rsi_length = input.int(14, title="RSI Length") input_rsi_source = input(close, "RSI Source") RSI = ta.rsi(input_rsi_source, input_rsi_length) // 計算MACD和信號線 [macdLine, signalLine, _] = ta.macd(close, fast_length, slow_length, signal_smoothing) // 自然交易理論:利用MACD和RSI的結合 ma(source, length, type) => switch type "SMA" => ta.sma(source, length) "EMA" => ta.ema(source, length) "SMMA (RMA)" => ta.rma(source, length) "WMA" => ta.wma(source, length) "VWMA" => ta.vwma(source, length) maTypeInput = input.string("SMA", title="Moving Average Type", options=["SMA", "EMA", "SMMA (RMA)", "WMA", "VWMA"], group="MA Settings") maLengthInput = input.int(14, title="Moving Average Length", group="MA Settings") macdMA = ma(macdLine, maLengthInput, maTypeInput) // 設置交易信號 longCondition = ta.crossover(macdLine, signalLine) and macdLine > macdMA and RSI < 70 shortCondition = ta.crossunder(macdLine, signalLine) and macdLine < macdMA and RSI > 30 // 定義時間框架 tf_15m = ta.change(RSI, 15) > 0 ? 1 : 0 tf_30m = ta.change(RSI, 30) > 0 ? 1 : 0 tf_1h = ta.change(RSI, 60) > 0 ? 1 : 0 tf_2h = ta.change(RSI, 120) > 0 ? 1 : 0 tf_4h = ta.change(RSI, 240) > 0 ? 1 : 0 tf_6h = ta.change(RSI, 360) > 0 ? 1 : 0 tf_8h = ta.change(RSI, 480) > 0 ? 1 : 0 tf_12h = ta.change(RSI, 720) > 0 ? 1 : 0 tf_1d = ta.change(RSI, 1440) > 0 ? 1 : 0 // 設置開倉、平倉和空倉條件 if (longCondition and tf_1h and RSI > 50) strategy.entry("Long", strategy.long) if (shortCondition and tf_1h and RSI < 50) strategy.entry("Short", strategy.short) if (tf_1h and RSI > 70) strategy.close("Long") if (tf_1h and RSI < 30) strategy.close("Short") // 加入其他策略 // 定義加權平均價格 wma(source, length) => wma = 0.0 sum = 0.0 sum_wts = 0.0 for i = 0 to length - 1 wts = (length - i) * (length - i) sum := sum + source[i] * wts sum_wts := sum_wts + wts wma := sum / sum_wts wmaLength = input.int(20, title="WMA Length", group="Other Strategies") wmaValue = wma(close, wmaLength) // 設置交易信號 longWMACondition = close > wmaValue shortWMACondition = close < wmaValue if (longWMACondition and tf_1h and RSI > 50) strategy.entry("Long WMA", strategy.long) if (shortWMACondition and tf_1h and RSI < 50) strategy.entry("Short WMA", strategy.short) if (tf_1h and RSI > 70) strategy.close("Long WMA") if (tf_1h and RSI < 30) strategy.close("Short WMA") // 繪製MACD和RSI plot(macdLine, color=color.blue, title="MACD Line") plot(signalLine, color=color.red, title="Signal Line")