Xu hướng sau chiến lược giao dịch hồi quy dựa trên hồi quy tuyến tính và trung bình động

Tác giả:ChaoZhang, Ngày: 2023-12-18 17:34:29
Tags:

img

Tổng quan

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.

Tên chiến lược

Xu hướng sau chiến lược giao dịch hồi quy

Nguyên tắc chiến lược

Các thành phần chính của chiến lược này bao gồm:

  1. Tính toán trung bình di chuyển đơn giản trong ngày N (SMA)
  2. Tính toán đường hồi quy tuyến tính của N ngày gần đây
  3. Đi dài khi giá đóng vượt trên SMA và cao hơn đường hồi quy
  4. Đi ngắn khi giá đóng vượt dưới đường SMA và thấp hơn đường hồi quy
  5. Đặt giá dừng lỗ và giá lấy lợi nhuận

Đườ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.

Ưu điểm của Chiến lược

Chiến lược có những lợi thế sau:

  1. Kết hợp chỉ số xu hướng và chỉ số đột phá để tránh đột phá sai và cải thiện chất lượng tín hiệu
  2. Sử dụng hồi quy tuyến tính để xác định hướng xu hướng để lọc xu hướng, chỉ đi dài trong xu hướng tăng và đi ngắn trong xu hướng giảm
  3. Thiết lập dừng lỗ và lấy lợi nhuận để kiểm soát rủi ro
  4. Quy tắc rõ ràng và dễ hiểu
  5. Chỉ một vài thông số để điều chỉnh mà không quá phức tạp

Phân tích rủi ro

Chiến lược này cũng có một số rủi ro:

  1. Nhiều tín hiệu giao dịch sai có thể được tạo ra trong thị trường giới hạn phạm vi
  2. Các thiết lập của trung bình động và thời gian hồi quy cần thử nghiệm và tối ưu hóa rộng rãi, cài đặt không đúng có thể ảnh hưởng đến hiệu suất chiến lược
  3. Stop loss có thể bị phá vỡ trong điều kiện thị trường cực đoan dẫn đến tổn thất lớn
  4. Chỉ dựa trên các chỉ số kỹ thuật mà không kết hợp các yếu tố cơ bản

Đố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:

  1. Xem xét tạm ngưng chiến lược hoặc sử dụng các chỉ số khác để lọc trong thị trường giới hạn phạm vi
  2. Backtest rộng rãi để tìm các thông số tối ưu
  3. Tối ưu hóa và điều chỉnh động vị trí dừng lỗ
  4. Kết hợp dữ liệu kinh tế và các yếu tố cơ bản khác

Hướng dẫn tối ưu hóa

Các khía cạnh chính để tối ưu hóa thêm chiến lược bao gồm:

  1. Thêm các chỉ số phụ khác để đánh giá điều kiện thị trường và tránh giao dịch trong các khoảng thời gian giới hạn phạm vi
  2. Tối ưu hóa loại trung bình động, chẳng hạn như trung bình động kép, trung bình động ba vv
  3. Tiếp tục phân tích độ nghiêng của đường hồi quy và thêm các quy tắc phán xét độ nghiêng
  4. Bao gồm các chỉ số biến động để thiết lập mức dừng lỗ và lấy lợi nhuận năng động
  5. Sử dụng các phương pháp học máy để tự động tối ưu hóa các thông số

Kết luận

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))



Thêm nữa