Chiến lược này thiết kế một xu hướng đơn giản theo hệ thống giao dịch dựa trên đường hồi quy tuyến tính và đường trung bình động. Nó đi dài khi đường hồi quy tuyến tính vượt qua trên đường trung bình động và đi ngắn khi đường hồi quy tuyến tính vượt qua dưới. Trong khi đó, nó sử dụng độ dốc của đường hồi quy để lọc một số tín hiệu giao dịch và chỉ vào khi hướng xu hướng phù hợp.
Xu hướng sau chiến lược giao dịch hồi quy
Các thành phần chính của chiến lược này bao gồm:
Đường hồi quy tuyến tính có thể phù hợp với hướng xu hướng trong những giai đoạn gần đây. Nó có thể giúp đánh giá hướng xu hướng tổng thể. Khi giá vượt qua đường SMA, chúng ta cần xác định thêm xem hướng của đường hồi quy tuyến tính có phù hợp với sự đột phá này không. Chỉ khi hai hướng phù hợp, một tín hiệu giao dịch được tạo ra. Điều này có thể lọc ra một số sự đột phá sai.
Ngoài ra, chiến lược cũng thiết lập một cơ chế dừng lỗ. Khi giá đạt đến đường dừng lỗ, đóng các vị trí để dừng lỗ. Nó cũng thiết lập một đường lấy lợi nhuận để khóa một số lợi nhuận.
Chiến lược có những lợi thế sau:
Chiến lược này cũng có một số rủi ro:
Đối với những rủi ro này, chúng ta có thể tối ưu hóa từ các khía cạnh sau:
Các khía cạnh chính để tối ưu hóa thêm chiến lược bao gồm:
Chiến lược này tích hợp chức năng theo xu hướng của các đường trung bình động và khả năng đánh giá xu hướng của hồi quy tuyến tính, tạo thành một hệ thống giao dịch theo xu hướng tương đối đơn giản. Nó có thể đạt được kết quả tốt trong các thị trường xu hướng mạnh. Chúng ta vẫn cần kiểm tra và tối ưu hóa rộng rãi về các thông số và quy tắc, và kiểm soát rủi ro thích hợp. Sau đó chiến lược này nên có thể thu được lợi nhuận đầu tư ổn định.
/*backtest start: 2023-11-17 00:00:00 end: 2023-12-05 00:00:00 period: 1h basePeriod: 15m exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}] */ //@version=4 strategy(title="Regression Trading Strategy", shorttitle="RTS", overlay=true) // Input parameters n = input(14, title="SMA Period") stop_loss_percentage = input(2, title="Stop Loss Percentage") take_profit_percentage = input(2, title="Take Profit Percentage") // Calculate the SMA sma = sma(close, n) // Linear regression function linear_regression(src, length) => sumX = 0.0 sumY = 0.0 sumXY = 0.0 sumX2 = 0.0 for i = 0 to length - 1 sumX := sumX + i sumY := sumY + src[i] sumXY := sumXY + i * src[i] sumX2 := sumX2 + i * i slope = (length * sumXY - sumX * sumY) / (length * sumX2 - sumX * sumX) intercept = (sumY - slope * sumX) / length line = slope * length + intercept line // Calculate the linear regression regression_line = linear_regression(close, n) // Plot the SMA and regression line plot(sma, title="SMA", color=color.blue) plot(regression_line, title="Regression Line", color=color.red) // Trading strategy conditions long_condition = crossover(close, sma) and close > regression_line short_condition = crossunder(close, sma) and close < regression_line // Exit conditions stop_loss_price = close * (1 - stop_loss_percentage / 100) take_profit_price = close * (1 + take_profit_percentage / 100) // Plot entry and exit points on the chart plotshape(series=long_condition, title="Long Entry", location=location.belowbar, color=color.green, style=shape.triangleup, size=size.small) plotshape(series=short_condition, title="Short Entry", location=location.abovebar, color=color.red, style=shape.triangledown, size=size.small) plotshape(series=crossunder(close, stop_loss_price), title="Stop Loss", location=location.abovebar, color=color.red, style=shape.labeldown, text="SL") plotshape(series=crossover(close, take_profit_price), title="Take Profit", location=location.belowbar, color=color.green, style=shape.labelup, text="TP") // Strategy orders strategy.entry("Long", strategy.long, when = long_condition) strategy.entry("Short", strategy.short, when = short_condition) strategy.exit("Exit", from_entry = "Long", when = crossover(close, stop_loss_price) or crossover(close, take_profit_price)) strategy.exit("Exit", from_entry = "Short", when = crossunder(close, stop_loss_price) or crossunder(close, take_profit_price))