Bài viết này giải thích chi tiết về một chiến lược giao dịch định lượng kết hợp cả phương pháp đảo ngược trung bình và theo xu hướng. Nó nhằm mục đích giao dịch ngược xu hướng trong các thị trường xu hướng và lái động lực trong các thị trường xu hướng.
I. Chiến lược logic
Chiến lược chủ yếu sử dụng chỉ số Đường trung bình di chuyển đơn giản và chỉ số RSI để tạo ra các tín hiệu giao dịch:
Khi giá thấp hơn SMA 200 thời gian, nó đánh giá thị trường hiện tại là xu hướng giảm.
Khi chỉ số RSI dưới 20, nó sẽ có các giao dịch đảo ngược trung bình ngược xu hướng.
Khi giá trên SMA 200 thời gian, nó đánh giá thị trường hiện tại là xu hướng tăng.
Khi giá vượt trên SMA, nó cần các giao dịch theo xu hướng.
Các bước ra được kích hoạt khi chỉ số RSI vượt quá 80 hoặc giá giảm dưới SMA một tỷ lệ phần trăm nhất định.
Định kích thước vị trí cho sự đảo ngược trung bình và theo xu hướng có thể được điều chỉnh riêng biệt.
Chiến lược kết hợp các kỹ thuật đảo ngược trung bình và theo xu hướng và áp dụng chúng trong các giai đoạn thị trường khác nhau.
II. Lợi thế của Chiến lược
Những lợi thế chính là:
Kết hợp hai kỹ thuật cải thiện khả năng thích nghi chiến lược.
Nó có thể tìm thấy cơ hội giao dịch trong xu hướng và thị trường khác nhau.
Rủi ro có thể được kiểm soát bằng cách điều chỉnh kích thước vị trí.
Cài đặt tham số đơn giản làm cho nó dễ dàng thực hiện.
III. Các rủi ro tiềm ẩn
Tuy nhiên, những rủi ro là:
Các chỉ số như SMA và RSI dễ bị phá vỡ sai.
Chuyển đổi giữa hai chế độ có thể bị trì hoãn.
Một số khoản rút phải được chịu đựng để có lợi ích lâu dài.
IV. Tóm tắt
Tóm lại, bài viết này đã giải thích một chiến lược định lượng sử dụng phương pháp đảo ngược trung bình và theo xu hướng. Nó có thể giao dịch trong các giai đoạn thị trường khác nhau để cải thiện khả năng thích nghi. Nhưng rủi ro như thất bại chỉ số và chuyển đổi chế độ chậm cần phải được quản lý. Nhìn chung, nó cung cấp một cách tiếp cận linh hoạt để kết hợp các kỹ thuật khác nhau.
/*backtest start: 2022-09-07 00:00:00 end: 2023-04-05 00:00:00 period: 1d basePeriod: 1h exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ // This source code is subject to the terms of the Mozilla Public License 2.0 at https://mozilla.org/MPL/2.0/ // © I11L //@version=5 strategy("Mean Reversion and Trendfollowing", overlay=true, pyramiding=1, default_qty_value=100000, initial_capital=100000, default_qty_type=strategy.cash, process_orders_on_close=false, calc_on_every_tick=false) // Input for the starting date start_date = input(timestamp("1 Feb 2000 12:00"), title="Starting Date") enableMeanReversion = input.bool(true) enableTrendfollowing = input.bool(true) trendPositionFactor = input.float(1) meanReversionPositionFactor = input.float(0.5) // Convert the input string to a timestamp start_ts = timestamp(year(start_date), month(start_date), dayofmonth(start_date), 0, 0) // Check if the current bar's time is greater than or equal to the start timestamp start_condition = time >= start_ts var tradeOrigin = "" sma200 = ta.sma(close,200) rsi2 = ta.rsi(close,2) isMeanReversionMode = close < sma200 or not(enableTrendfollowing) isTrendfollowingMode = close > sma200 or not(enableMeanReversion) isRsiBuy = rsi2 < 20 and enableMeanReversion isRsiClose = rsi2 > 80 and enableMeanReversion isSmaBuy = close > sma200 and enableTrendfollowing isSmaClose = close < sma200 * 0.95 and enableTrendfollowing isBuy = (isMeanReversionMode and isRsiBuy) or (isTrendfollowingMode and isSmaBuy) positionSizeFactor = isSmaBuy ? trendPositionFactor : meanReversionPositionFactor // Only execute the strategy after the starting date if (start_condition) if (isBuy and strategy.opentrades == 0) tradeOrigin := isSmaBuy ? "SMA" : "RSI" strategy.entry("My Long Entry Id", strategy.long, qty=(strategy.equity / close) * positionSizeFactor, comment=str.tostring(positionSizeFactor)) isClose = tradeOrigin == "SMA" ? isSmaClose : isRsiClose if (isClose) strategy.exit("Exit", limit = close) plot(sma200) plot(sma200 * 0.95, color=color.orange)