Chiến lược hồi quy tuyến tính ngược là một chiến lược giao dịch đảo ngược dựa trên biến động giá. Nó kết hợp phân tích hồi quy tuyến tính và chỉ số AVERAGE TRUE RANGE, thiết lập các điều kiện cho các đường K tăng liên tiếp hoặc các đường K giảm liên tiếp, và thực hiện các hoạt động đảo ngược khi phân tích hồi quy tuyến tính đánh giá sự đảo ngược giá.
Chiến lược đầu tiên tính toán độ nghiêng của hồi quy tuyến tính. Khi độ nghiêng hồi quy tuyến tính lớn hơn hoặc bằng 0, nó cho thấy giá đang có xu hướng tăng; khi thấp hơn 0, nó cho thấy xu hướng giảm giá. Đồng thời, kết hợp với so sánh giữa giá đóng và giá mở của đường K cuối cùng, nó đánh giá liệu đường K cuối cùng đã tăng hay giảm. Khi độ nghiêng hồi quy tuyến tính lớn hơn hoặc bằng 0 và giá đóng của đường K cuối cùng thấp hơn giá mở, một tín hiệu mua được tạo ra; khi độ nghiêng hồi quy tuyến tính nhỏ hơn 0 và giá đóng của đường K cuối cùng cao hơn giá mở, một tín hiệu bán được tạo ra.
Thông qua việc thiết lập số lượng K-line tăng liên tiếp và số lượng K-line giảm liên tiếp, tần suất giao dịch có thể được kiểm soát. Khi xác định rằng số lượng K-line tăng liên tiếp đạt số đặt, một tín hiệu bán được tạo ra với điều kiện độ nghiêng hồi quy tuyến tính nhỏ hơn 0 để đạt được giao dịch đảo ngược gần điểm cao; khi xác định rằng các K-line giảm liên tiếp đạt đến số đặt, khi độ nghiêng hồi quy tuyến tính lớn hơn hoặc bằng 0, một tín hiệu mua được tạo ra để đạt được giao dịch đảo ngược gần điểm thấp.
Phân tích hồi quy tuyến tính cung cấp một phương tiện để xác định xu hướng tổng thể của giá và tránh đảo ngược các vị trí ngắn hoặc dài khi giá vẫn đang tăng hoặc giảm. Điều kiện K-line liên tiếp kiểm soát tần suất giao dịch và hoạt động tại các điểm đảo ngược quan trọng.
So với các chiến lược đảo ngược đơn giản, chiến lược này kết hợp nhiều chỉ số kỹ thuật để kiểm soát thời gian giao dịch chính xác hơn, có thể tránh hiệu quả rủi ro phá vỡ sai và tăng lợi nhuận.
Rủi ro chính mà chiến lược này phải đối mặt là sự thất bại của sự đảo ngược. Nếu được đánh giá là tín hiệu đảo ngược giá, giá tiếp tục duy trì xu hướng ban đầu, nó sẽ gây ra tổn thất. Ngoài ra, việc thiết lập các tham số phân tích hồi quy tuyến tính và các chỉ số ATR cũng sẽ ảnh hưởng đến thu nhập của chiến lược.
Stop loss có thể được sử dụng để kiểm soát lỗ đơn. Đánh giá hợp lý tần suất biến động thị trường, điều chỉnh phù hợp số lượng các đường K liên tiếp và giảm tần suất giao dịch. Tối ưu hóa các tham số chu kỳ hồi quy tuyến tính và các tham số ATR để làm cho chúng phù hợp hơn với các đặc điểm của các giống khác nhau.
Chiến lược có thể được tối ưu hóa trong các khía cạnh sau:
Thêm các chỉ số kỹ thuật khác để cải thiện độ chính xác phán đoán. ví dụ, MACD, Bollinger Band, v.v.
Tăng các thành phần học máy để tối ưu hóa tham số tự động và điều chỉnh năng động các quy tắc giao dịch.
Bao gồm các cơ chế quản lý rủi ro như quản lý vốn và chiến lược dừng lỗ để kiểm soát rủi ro giao dịch.
Tối ưu hóa danh mục đầu tư kết hợp các chiến lược với các chiến lược không liên quan khác để giảm giảm tổng thể và cải thiện sự ổn định.
Mở rộng đến nhiều giống hơn, đánh giá cài đặt tham số cho các giống khác nhau để làm cho chiến lược linh hoạt hơn.
Chiến lược hồi quy tuyến tính ngược tích hợp nhiều chỉ số kỹ thuật và thực hiện các hoạt động ngược khi đánh giá thời điểm đảo ngược giá. Đây là một chiến lược giao dịch đảo ngược hiệu quả. Thông qua tối ưu hóa tham số và quản lý rủi ro nâng cao, chiến lược có thể mở rộng lợi nhuận và có tiềm năng cải thiện lớn. Là một ý tưởng chiến lược đảo ngược điển hình, nó cung cấp cho chúng ta các tài liệu tham khảo có giá trị.
/*backtest start: 2023-12-21 00:00:00 end: 2023-12-28 00:00:00 period: 30m basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy("Reverse Up/Down Strategy", currency=currency.USD, initial_capital=1000, pyramiding=2, default_qty_type=strategy.percent_of_equity, default_qty_value=100,overlay=true) //User Options consecutiveBarsUp = input(title="Sell after how many bars up?", type=input.integer, minval=1, defval=1) consecutiveBarsDown = input(title="Buy after how many bars down?", type=input.integer, minval=1, defval=1) atrLength = input(title="ATR Length", type=input.integer, minval=1, defval=14) atrMult = input(title="ATR Multiplier", type=input.float, minval=0.1, defval=2.33) //ATR Channel adjustedATR = sma(atr(atrLength),atrLength) * atrMult longATR = low - adjustedATR shortATR = high + adjustedATR plot(shortATR, title="Short ATR", color=color.red) plot(longATR, title="Long ATR", color=color.lime) // This is the true linear regression slope rather than an approximation given by numerical differentiation src = hlc3 len = input(defval=14, minval=1, title="Slope Length") lrc = linreg(src, len, 0) lrc1 = linreg(src, len,1) lrs = (lrc-lrc1) //Check if last candle was up or down priceOpen = open priceClose = close longCondition = priceOpen > priceClose shortCondition = priceOpen < priceClose ups = 0.0 dns = 0.0 ups := shortCondition ? nz(ups[1]) + 1 : 0 dns := longCondition ? nz(dns[1]) + 1 : 0 if (shortCondition) strategy.close("buy", qty_percent=100, comment="Close") if (ups >= consecutiveBarsUp and lrs <= 0) strategy.entry("sell", strategy.short, comment="Sell") if (longCondition) strategy.close("sell", qty_percent=100, comment="Close") if (dns >= consecutiveBarsDown and lrs >= 0) strategy.entry("buy", strategy.long, comment = "Buy")