
Chiến lược này kết hợp trung bình di chuyển đơn giản (SMA) và đường xu hướng quay trở lại theo đường thẳng lăn, đặt điều kiện mua là giá tròn cao hơn SMA và đường xu hướng khi mua nhiều, điều kiện thoát là giá tròn thấp hơn SMA và đường xu hướng khi bán ngang. Chiến lược này chủ yếu sử dụng tín hiệu giao dịch theo đường thẳng của SMA và hỗ trợ của đường xu hướng lăn, vào khi phá vỡ kênh lên và thoát ra khi phá vỡ kênh xuống.
Chiến lược này dựa trên các thành phần sau:
SMA: Đường trung bình di chuyển đơn giản, tính trung bình của giá đóng cửa trong một khoảng thời gian nhất định (smaPeriod) làm đường tín hiệu.
Đường xu hướng cuộn: dựa trên tính toán hồi quy tuyến tính, đường thẳng phù hợp tốt nhất trong một chu kỳ ((window)) được sử dụng làm tín hiệu xu hướng. Phương pháp tính toán là phép nhân đôi nhỏ nhất.
Điều kiện nhập cảnh: Thêm vào khi giá đóng cửa cao hơn đường SMA trung bình và đường xu hướng lăn.
Điều kiện xuất phát: Khi giá đóng cửa thấp hơn đường SMA trung bình và đường xu hướng lăn, xuất phát bằng phẳng.
Như vậy, chiến lược này chủ yếu dựa vào tín hiệu giao dịch theo đường thẳng để phá vỡ vào, và phá vỡ lối thoát. Sử dụng tính năng quay trở trung bình của đường trung bình di chuyển và hỗ trợ trung bình của đường quay trở theo đường thẳng để thực hiện các hoạt động theo dõi xu hướng.
Chiến lược này tích hợp các bộ lọc kép giữa đường trung bình và đường xu hướng, có thể giảm hiệu quả các hoạt động phá vỡ giả. Đồng thời, đường xu hướng cuộn cung cấp hỗ trợ kênh chính xác hơn, giúp quyết định giao dịch đáng tin cậy hơn. Các lợi thế chính như sau:
Chiến lược này cũng có một số rủi ro, chủ yếu tập trung vào những điểm sau:
Những rủi ro này có thể được tối ưu hóa bằng cách:
Chiến lược này có thể được tối ưu hóa từ các khía cạnh sau:
Thêm chức năng điều chỉnh động chu kỳ SMA và tham số điểm trượt. Tự động tối ưu hóa tham số trong các môi trường thị trường khác nhau.
Tăng cơ chế dừng lỗ linh hoạt. Hết lỗ khi giá phá vỡ đường xu hướng theo một tỷ lệ nhất định.
Kết hợp với các chỉ số khác để lọc tín hiệu. Ví dụ như chỉ số năng lượng, chỉ số mạnh và yếu. Tăng độ chính xác của quyết định.
Phát triển phiên bản đảo ngược. Làm nhiều hơn khi giá gần đáy và phá vỡ kênh đi xuống.
Chiến lược này tích hợp tín hiệu giao dịch trung bình di động và hỗ trợ kênh đường xu hướng lăn để thực hiện các hoạt động theo dõi xu hướng. Cơ chế lọc kép làm giảm xác suất phá vỡ giả và cải thiện chất lượng quyết định. Thiết lập tham số đơn giản, logic rõ ràng, dễ thực hiện và tối ưu hóa điều chỉnh.
/*backtest
start: 2024-01-04 00:00:00
end: 2024-02-03 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/
//@version=4
strategy("SMA Strategy with Rolling Trendline", overlay=true)
// Input parameters
smaPeriod = input(14, title="SMA Period")
window = input(20, title="Trendline Window")
startDate = input(timestamp("2023-01-01"), title="Start Date")
endDate = input(timestamp("2023-12-31"), title="End Date")
// Calculating SMA
sma = sma(close, smaPeriod)
// Function to calculate linear regression trendline for a window
linreg_trendline(window) =>
sumX = 0.0
sumY = 0.0
sumXY = 0.0
sumX2 = 0.0
for i = 0 to window - 1
sumX := sumX + i
sumY := sumY + close[i]
sumXY := sumXY + i * close[i]
sumX2 := sumX2 + i * i
slope = (window * sumXY - sumX * sumY) / (window * sumX2 - sumX * sumX)
intercept = (sumY - slope * sumX) / window
slope * (window - 1) + intercept
// Calculating the trendline
trendline = linreg_trendline(window)
// Entry and Exit Conditions
longCondition = close > sma and close < trendline
exitLongCondition = close < sma and close > trendline
// Strategy logic
if (true)
if (longCondition)
strategy.entry("Long", strategy.long)
if (exitLongCondition)
strategy.close("Long")
// Plotting
plot(sma, title="Simple Moving Average", color=color.blue)
plot(trendline, title="Rolling Trendline", color=color.red)
plotshape(series=longCondition, title="Enter Trade", location=location.belowbar, color=color.green, style=shape.triangleup)
plotshape(series=exitLongCondition, title="Exit Trade", location=location.abovebar, color=color.red, style=shape.triangledown)