
Chiến lược đảo ngược linear regression 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 đảo ngược tuyến tính và chỉ số AVERAGE TRUE RANGE, đặt các điều kiện cho đường K tăng lên liên tục hoặc đường K giảm liên tục, khi phân tích đảo ngược tuyến tính phán đoán giá đảo ngược.
Chiến lược này bắt đầu bằng cách tính toán độ lệch của sự hồi phục tuyến tính. Khi độ lệch của sự hồi phục tuyến tính lớn hơn bằng 0, giá đang trong xu hướng tăng; Khi nhỏ hơn 0, giá đang trong xu hướng giảm. Đồng thời kết hợp giá đóng cửa của dòng K cuối cùng với giá mở cửa, để xác định dòng K cuối cùng là tăng hoặc giảm.
Bạn có thể kiểm soát tần số giao dịch bằng cách đặt số K liên tục lên và số K liên tục xuống. Nếu K liên tục lên đạt được số lượng đặt, thì sẽ có tín hiệu bán ra và giao dịch đảo ngược gần điểm cao; Nếu K liên tục xuống đạt được số lượng đặt, thì sẽ có tín hiệu mua và giao dịch đảo ngược gần điểm thấp.
Chiến lược này kết hợp xu hướng và đảo ngược giao dịch, có thể thực hiện các hoạt động đảo ngược gần các điểm quan trọng, do đó có được lợi thế sau khi điều chỉnh giá. Phân tích hồi quy tuyến tính cung cấp phương tiện để đánh giá xu hướng tổng thể của giá, tránh làm hỏng hoặc làm quá nhiều khi giá vẫn tiếp tục tăng hoặc giảm.
So với 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 được rủi ro đột phá giả mạo và tăng khả năng kiếm lợi nhuận.
Chiến lược này chủ yếu có nguy cơ thất bại khi đảo ngược. Nếu giá tiếp tục hoạt động theo xu hướng ban đầu sau khi nhận thấy tín hiệu đảo ngược giá, nó sẽ gây ra tổn thất. Ngoài ra, phân tích hồi quy tuyến tính và thiết lập tham số cho chỉ số ATR cũng có thể ảnh hưởng đến lợi nhuận của chiến lược.
Bạn có thể kiểm soát tổn thất đơn lẻ bằng cách dừng lỗ. Đánh giá hợp lý tần suất biến động của thị trường, điều chỉnh đúng số K-line liên tục, giảm tần suất giao dịch. Tối ưu hóa tham số chu kỳ hồi phục tuyến tính và tham số ATR để 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 này có thể được tối ưu hóa theo các khía cạnh sau:
Thêm các chỉ số kỹ thuật khác, kết hợp với các chỉ số thời gian khác nhau, để tăng độ chính xác phán đoán. Ví dụ như thêm MACD, Bollinger Band, v.v.
Thêm thành phần học máy, tự động tối ưu hóa tham số thông qua thuật toán và điều chỉnh các quy tắc giao dịch động.
Tham gia các cơ chế quản lý rủi ro, chẳng hạn như quản lý tài chính, 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, kết hợp chiến lược với các danh mục chiến lược khác không liên quan, giảm rút lui tổng thể và tăng sự ổn định.
Mở rộng đến nhiều giống hơn, đánh giá các thiết lập tham số của các giống khác nhau, làm cho chiến lược có tính phổ biến hơn.
Chiến lược đảo ngược tuyến tính hồi quy tích hợp nhiều chỉ số kỹ thuật, thực hiện hành động ngược khi xác định thời điểm giá đảo ngược, là một chiến lược giao dịch đảo ngược hiệu quả. Chiến lược này có thể mở rộng hơn nữa không gian lợi nhuận thông qua tối ưu hóa tham số và tăng cường quản lý rủi ro, có tiềm năng cải thiện rất lớn. Là một cách suy nghĩ chiến lược đảo ngược điển hình, nó cung cấp cho chúng tôi một tài liệu tham khảo quý giá.
/*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")