Một chiến lược giao dịch định lượng theo xu hướng kết hợp đột phá cao trong lịch sử với bộ lọc trung bình động hàng tháng

ATH SMA MA
Ngày tạo: 2024-12-13 10:25:18 sửa đổi lần cuối: 2024-12-13 10:25:18
sao chép: 0 Số nhấp chuột: 336
1
tập trung vào
1617
Người theo dõi

Một chiến lược giao dịch định lượng theo xu hướng kết hợp đột phá cao trong lịch sử với bộ lọc trung bình động hàng tháng

Tổng quan

Chiến lược này là một chiến lược theo dõi xu hướng dựa trên các đợt phá vỡ lịch sử mới và lọc đường trung bình của đường trăng. Nó tìm kiếm tín hiệu mua bằng cách theo dõi liệu giá có phá vỡ các điểm cao lịch sử trước đó hay không, đồng thời sử dụng đường trăng 8 chu kỳ trung bình di chuyển đơn giản ((8 SMA) làm điều kiện lọc bán để giảm nguy cơ phá vỡ giả.

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

Chiến lược này bao gồm hai phần quan trọng:

  1. Tín hiệu mua: Khi giá đóng cửa mới nhất phá vỡ mức cao nhất lịch sử của giai đoạn trước (không bao gồm giá cao nhất của dòng K hiện tại), hệ thống tạo tín hiệu mua. Điều kiện này đảm bảo chỉ tham gia vào xu hướng tăng rõ ràng.
  2. Tín hiệu bán: Hệ thống kích hoạt một tín hiệu bán khi giá trượt xuống dưới đường trung bình di chuyển đơn giản 8 chu kỳ. Điều kiện này giúp dừng lỗ kịp thời và ngăn chặn sự đảo ngược xu hướng gây ra tổn thất lớn hơn. Chiến lược cũng được thiết kế để theo dõi trạng thái tín hiệu, tránh phát sinh tín hiệu lặp lại trong cùng một trạng thái, tăng sự ổn định của chiến lược.

Lợi thế chiến lược

  1. Khả năng nắm bắt xu hướng mạnh mẽ: có khả năng nắm bắt một xu hướng tăng mạnh mẽ thông qua việc đánh giá phá vỡ mức cao mới.
  2. Kiểm soát rủi ro hoàn hảo: kết hợp với đường trăng trung bình làm điều kiện lọc, có thể lọc hiệu quả các đột phá giả.
  3. Tín hiệu ổn định cao: theo dõi trạng thái tín hiệu thông qua biến lastSignal, tránh phát sinh tín hiệu lặp lại.
  4. Hiển thị tốt: Chiến lược cung cấp giao diện đồ họa rõ ràng, bao gồm đường cao, đường trung bình và dấu hiệu tín hiệu mua và bán.
  5. Khả năng thích ứng: Chiến lược có thể được áp dụng cho các khoảng thời gian và giống khác nhau.

Rủi ro chiến lược

  1. Rủi ro về sự chậm trễ: Các tín hiệu đột phá cao nhất trong lịch sử có tính chất chậm trễ, có thể bỏ lỡ thời điểm xuất hiện tốt nhất.
  2. Rủi ro phá vỡ giả: Mặc dù có bộ lọc đường trăng, nhưng có thể có phá vỡ giả trong thị trường biến động.
  3. Rủi ro rút lui: Chiến lược có thể chịu được sự rút lui lớn hơn tại các điểm biến động.
  4. Rủi ro quản lý tiền: Chiến lược không bao gồm cơ chế quản lý vị trí, cần thêm quy tắc quản lý tiền.

Hướng tối ưu hóa chiến lược

  1. Nhập lượng xác nhận: có thể thêm chỉ số giao dịch như là điều kiện xác nhận đột phá, tăng độ tin cậy tín hiệu.
  2. Cải thiện cơ chế dừng lỗ: Có thể thiết kế các quy tắc dừng lỗ linh hoạt hơn, chẳng hạn như dừng theo dõi hoặc dừng tỷ lệ dao động.
  3. Quản lý vị trí thêm: Điều chỉnh kích thước vị trí theo biến động của thị trường và cường độ của xu hướng.
  4. Chèn tín hiệu tối ưu hóa: Bạn có thể thêm các chỉ số cường độ xu hướng, chẳng hạn như ADX, để tiếp tục lọc các tín hiệu yếu.
  5. Thêm bộ lọc thời gian: Bạn có thể thêm bộ lọc chu kỳ thời gian để tránh giao dịch trong khoảng thời gian không phù hợp.

Tóm tắt

Đây là một chiến lược theo dõi xu hướng được thiết kế hợp lý, logic rõ ràng. Bằng cách sử dụng kết hợp của các đột phá cao mới và đường trung bình của đường trăng, nó đảm bảo nắm bắt hiệu quả xu hướng và kiểm soát rủi ro một cách hợp lý. Mặc dù có một số rủi ro về sự chậm trễ và đột phá giả, nhưng với hướng tối ưu hóa được đề xuất, hiệu suất tổng thể của chiến lược có thể được nâng cao hơn nữa.

Mã nguồn chiến lược
/*backtest
start: 2019-12-23 08:00:00
end: 2024-12-11 08:00:00
period: 1d
basePeriod: 1d
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=5
strategy("Buy Signal on Close Greater Than Previous All-Time High Strategy", overlay=true)

// Initialize the previous all-time high
var float prevAllTimeHigh = na

// Update the all-time high, excluding the current bar's high (use previous bar's high)
if (na(prevAllTimeHigh) or high[1] > prevAllTimeHigh)
    prevAllTimeHigh := high[1]

// Monthly closing price and 8 SMA on monthly time frame
monthlyClose = request.security(syminfo.tickerid, "M", close)
monthlySMA = ta.sma(monthlyClose, 8)

// Variables to track the last signal type
var int lastSignal = 0 // 0 = None, 1 = Buy, 2 = Sell

// Debugging output to check the all-time high and conditions
plot(prevAllTimeHigh, color=color.blue, linewidth=1, title="Previous All-Time High")
plot(monthlySMA, color=color.green, linewidth=1, title="8 SMA (Monthly)")

// Buy signal: when the latest close is greater than the previous all-time high
buySignal = close > prevAllTimeHigh and lastSignal != 1

// Sell signal: when the monthly close is below the 8 SMA
sellSignal = monthlyClose < monthlySMA and lastSignal != 2

// Update the last signal type after triggering a signal
if (buySignal)
    lastSignal := 1
if (sellSignal)
    lastSignal := 2

// Execute the strategy orders
if (buySignal)
    strategy.entry("Buy", strategy.long)

if (sellSignal)
    strategy.close("Buy")

// Optional: Plot buy and sell signals on the chart for visual reference
plotshape(series=buySignal, style=shape.labelup, location=location.belowbar, color=color.green, text="BUY", size=size.small)
plotshape(series=sellSignal, style=shape.labeldown, location=location.abovebar, color=color.red, text="SELL", size=size.small)