Chiến lược hồi quy tuyến tính và trung bình động kép trong ngắn hạn


Ngày tạo: 2024-01-26 12:33:14 sửa đổi lần cuối: 2024-01-26 12:33:14
sao chép: 0 Số nhấp chuột: 410
1
tập trung vào
1220
Người theo dõi

Chiến lược hồi quy tuyến tính và trung bình động kép trong ngắn hạn

Tổng quan

Chiến lược này thực hiện các hoạt động theo dõi đường ngắn bằng cách kết hợp các chỉ số quay ngược tuyến tính với đường trung bình di chuyển của hai chỉ số. Chiến lược này dựa trên việc đặt vị trí trống khi giá phá vỡ đường đi lên xuống và đóng cửa khi giá phá vỡ lại.

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

Chiến lược này chủ yếu đánh giá sự phá vỡ của giá bằng chỉ số hồi quy tuyến tính. Chỉ số hồi quy tuyến tính là đường đi lên xuống được tính dựa trên giá cao nhất và giá thấp nhất trong một chu kỳ nhất định, sử dụng phương pháp hồi quy tuyến tính. Khi giá vượt qua đường đi trên hoặc từ đường đi xuống, chúng tôi coi đó là một tín hiệu giao dịch.

Ngoài ra, chiến lược này cũng đưa ra các chỉ số di chuyển trung bình để xác định xu hướng trung gian. Đường di chuyển trung bình có thể phản ứng nhanh hơn với sự thay đổi giá. Khi giá đi từ trên xuống đường, nếu tại thời điểm này đường di chuyển trung bình đã nằm trên giá, cho thấy hiện đang trong xu hướng giảm, thì chúng tôi thiết lập vị trí trống. Khi giá phá vỡ đường đi lên hoặc phá vỡ đường di chuyển trung bình, chúng tôi xóa vị trí.

Các chiến lược này bao gồm:

  1. Tính toán hồi quy tuyến tính trên và dưới đường ray
  2. Tính toán đường trung bình di chuyển của hai chỉ số
  3. Xây dựng vị trí short position khi giá đi từ trên xuống và đường trung bình di chuyển của hai chỉ số cao hơn giá
  4. Khi giá phá vỡ đường đua trở lại hoặc cao hơn đường trung bình di chuyển của chỉ số kép, xóa vị trí bán phá giá

Phân tích lợi thế

So với các chỉ số truyền thống như trung bình di chuyển, chiến lược này có một số ưu điểm:

  1. Chỉ số suy thoái tuyến tính có thể nắm bắt thay đổi giá nhanh hơn và hiệu quả hơn như một tín hiệu xây dựng kho
  2. Đường trung bình di chuyển hai chỉ số nhạy cảm hơn với xu hướng, tránh phá vỡ giả
  3. Kết hợp với chỉ số và điều kiện kép có thể lọc ra một số tiếng ồn và làm cho giao dịch ổn định hơn

Phân tích rủi ro

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

  1. Chỉ số hồi quy tuyến tính nhạy cảm với các tham số, và các chu kỳ khác nhau có thể tạo ra kết quả khác nhau
  2. Đường trung bình di chuyển hai chỉ số có thể bị lệch và sai lệch
  3. Chiến lược đột phá có thể làm tăng rủi ro trượt
  4. Có thể sẽ có nhiều đợt tháo lỗ trong thời gian khủng hoảng.

Đối với các rủi ro trên, chúng ta có thể giải quyết bằng các phương pháp như tối ưu hóa tham số, dừng lỗ nghiêm ngặt và nới lỏng độ đột phá thích hợp.

Hướng tối ưu hóa

Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:

  1. Tối ưu hóa các chu kỳ hồi quy tuyến tính và chu kỳ trung bình di chuyển hai chỉ số để tìm ra sự kết hợp tham số tốt nhất
  2. Đánh giá mức độ biến động của giá để tránh các tín hiệu sai lệch khi giá tăng nhẹ
  3. Các điều kiện phụ trợ như tăng số lượng giao dịch để đảm bảo hiệu quả đột phá
  4. Cài đặt mức dừng lỗ để giảm tổn thất đơn lẻ
  5. Các tham số điều chỉnh cho một giống cụ thể

Tóm tắt

Chiến lược này sử dụng tổng hợp các chỉ số hồi quy tuyến tính và moving average hai chỉ số, có một số lợi thế về lý thuyết và thực tiễn. Bằng cách liên tục tối ưu hóa điều chỉnh, có thể cải thiện hơn nữa sự ổn định và hiệu quả của chiến lược. Chiến lược này phù hợp với hoạt động ngắn dòng, có thể mang lại alpha tốt cho các nhà giao dịch định lượng.

Mã nguồn chiến lược
/*backtest
start: 2023-12-26 00:00:00
end: 2024-01-25 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=4
strategy('LR&SSL_Short', overlay=true)
startP = timestamp(input(2017, "Start Year"), input(12, "Month"), input(17, "Day"), 0, 0)
end   = timestamp(9999,1,1,0,0)
_testPeriod() => true

len = input(title="Period", defval=89)
smaHigh = linreg(high, len, 0)
smaLow = linreg(low, len, -1)
Hlv = 0.0
Hlv := close > smaHigh ? 1 : close < smaLow ? -1 : Hlv[1]
sslDown = Hlv < 0 ? smaHigh : smaLow
sslUp = Hlv < 0 ? smaLow : smaHigh

plot(sslDown, linewidth=2, color=color.red)
plot(sslUp, linewidth=2, color=color.lime)



length = input(200, title="DEMA") 
d1 = ema(close, length)                                               
d2 = 2 * d1 - ema(d1, length)                                         
trendColour = d2 > d1 ? #AAFFAA : #FFAAAA 
dema=sma(d2,length) 

turnGreen = d2 > d1 and d2[1] <= d1[1]  
turnRed   = d2 <= d1 and d2[1] > d1[1]  

up =turnGreen 
down=turnRed 
  
plotshape(down, title="down", style=shape.triangledown,location=location.abovebar, color=color.red, transp=0, size=size.small) 
plotshape(up,  title="up", style=shape.triangleup,location=location.belowbar, color=color.green, transp=0, size=size.small) 
plot(dema, color = trendColour,linewidth=3 ,transp = 0)
bgcolor(close > dema ? color.green : color.red)

strategy.entry("short", strategy.short, when= crossunder(sslUp, sslDown) and dema > close and _testPeriod())
strategy.close("short", when = crossover(sslUp, sslDown) or crossover(close, dema))