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.
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:
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:
Chiến lược này cũng có một số rủi ro cần lưu ý:
Đố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.
Chiến lược này cũng có thể được tối ưu hóa theo các khía cạnh sau:
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.
/*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))