Chiến lược giao dịch giao dịch chéo giữa hai mức trung bình động

Tác giả:ChaoZhang, Ngày: 2024-01-29 15:11:58
Tags:

img

Tổng quan

Chiến lược giao dịch chéo trung bình di chuyển kép là một chiến lược giao dịch định lượng sử dụng chéo trung bình di chuyển để xác định tín hiệu vào và ra. Chiến lược này kết hợp các trung bình di chuyển từ các khung thời gian khác nhau để tạo ra nhiều lớp lọc và giảm tín hiệu sai cho các tín hiệu giao dịch đáng tin cậy hơn.

Chiến lược logic

Lý thuyết cốt lõi của chiến lược này là theo dõi 2 đường trung bình động (10 ngày và 200 ngày) trên 3 khung thời gian (180 phút, 60 phút, 120 phút). Khi đường trung bình động nhanh hơn vượt qua đường trung bình động chậm hơn, một đường chéo vàng được tạo ra, cho thấy công cụ đang trong xu hướng tăng. Khi đường trung bình động nhanh hơn vượt qua đường trung bình chậm hơn, một đường chéo chết được tạo ra, cho thấy xu hướng giảm.

Đầu tiên, các đường trung bình động 10 ngày và 200 ngày được tính riêng cho các khung thời gian 180 phút và 60 phút. Khi MA 10 ngày trên khung thời gian 180 phút vượt trên MA 200 ngày, một tín hiệu chéo vàng được tạo ra. Khi nó vượt dưới, một tín hiệu chéo chết được tạo ra. Điều này cung cấp các tín hiệu giao dịch chu kỳ nhanh.

Tiếp theo, chiến lược giới thiệu MA 200 ngày trên khung thời gian 120 phút như là một trung bình động kiểm soát. Chỉ khi giao thoa xảy ra trên các chu kỳ 180/60 phút, bằng cách kiểm tra xem MA 200 ngày 60 phút trên hoặc dưới MA 200 ngày 120 phút, sẽ quyết định liệu giao dịch nên được đặt để lọc các tín hiệu sai.

Ví dụ, khi một giao thoa vàng xảy ra trên chu kỳ 180 phút, chỉ khi MA 200 ngày 60 phút vượt quá MA 200 ngày 120 phút, chiến lược sẽ đi dài. Vị trí dài sẽ chỉ được mở khi điều kiện này được đáp ứng. Ngược lại, nếu MA 200 ngày 60 phút thấp hơn 120 phút, không có vị trí dài sẽ được thực hiện.

Tóm lại, bằng cách so sánh các mối quan hệ trung bình động trên các khung thời gian khác nhau, chiến lược này tạo ra nhiều lớp lọc để cải thiện độ tin cậy tín hiệu, làm cho nó trở thành một loại chiến lược giao dịch dựa trên bộ lọc phổ biến.

Ưu điểm

  • Cải thiện độ chính xác thông qua xác nhận nhiều khung thời gian. So với các tín hiệu khung thời gian duy nhất, sử dụng MAs từ 180/60/120 phút làm giảm đáng kể các tín hiệu sai và cải thiện chất lượng tín hiệu giao dịch.

  • Tần số hoạt động hợp lý. Không giống như các chiến lược tần số cao, chiến lược này giao dịch ít thường xuyên hơn, tránh sự cần thiết phải theo dõi thị trường liên tục. Thích hợp hơn cho giao dịch thủ công.

  • Đơn giản và dễ hiểu. Bằng cách chỉ sử dụng các đường trung bình chuyển động cơ bản mà không có logic phức tạp, chiến lược này có rào cản nhập thấp và dễ hiểu cho người mới bắt đầu.

  • Có thể tối ưu hóa qua các giai đoạn và tham số. Các loại MA và thời gian được sử dụng có thể điều chỉnh. Các bộ tham số khác nhau có thể được thử nghiệm cho các sản phẩm và chế độ thị trường khác nhau.

Rủi ro

  • Chỉ báo chậm trễ và phản ứng chậm. các trung bình động cốt lõi bị chậm trễ bởi thiết kế và thường không thể nắm bắt sự đảo ngược xu hướng nhanh chóng.

  • Tần suất cao trong các thị trường dao động. Khi thị trường dao động, các mối quan hệ MA có thể vượt qua rất thường xuyên, gây ra các mục nhập quá mức và kích hoạt dừng lỗ, làm tăng chi phí và rủi ro mất mát.

  • Rủi ro quá phù hợp từ tối ưu hóa tham số. alpha chủ yếu đến từ điều chỉnh tham số dựa trên các bộ dữ liệu hạn chế. Điều này có thể dẫn đến quá tối ưu hóa và quá phù hợp các vấn đề.

Giải pháp:

  • Giảm thời gian MA để phản ứng nhanh hơn
  • Thêm các bộ lọc để tránh quá nhiều mục nhập trong thời gian thị trường rắc rối
  • Kiểm tra độ bền trên các sản phẩm và khoảng thời gian khác nhau

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

Vẫn còn chỗ cho việc tối ưu hóa thêm:

  • Hãy thử các kết hợp khác nhau của khung thời gian và điều chỉnh thời gian MA để tìm các thông số tốt hơn, thông qua tối ưu hóa lực thô và kỹ thuật học máy.

  • Kết hợp phân tích xu hướng khối lượng và khung thời gian cao hơn để xác nhận tín hiệu bổ sung, ví dụ: tránh các mục nhập trong khối lượng giao dịch thấp.

  • Dự đoán các mô hình đường cong trước thời gian bằng cách sử dụng các mô hình học sâu như RNN để hỗ trợ ra quyết định.

  • Đưa ra các đường trung bình động thích nghi để cải thiện logic lọc. Điều chỉnh động các khoảng thời gian MA để giảm các mục trong thời gian không chắc chắn của thị trường.

Kết luận

Chiến lược giao dịch chéo trung bình di chuyển kép so sánh các mối quan hệ trung bình di chuyển trên nhiều khung thời gian để lọc ra các tín hiệu sai, cải thiện độ tin cậy tín hiệu.


/*backtest
start: 2024-01-01 00:00:00
end: 2024-01-28 00:00:00
period: 1h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy(shorttitle = "ALGO 3-1-2", title="ALGO 3h, 1h, 2h", overlay=true)

bool startLONGBOTandDEAL = false
bool stopLONGBOTandDEAL = false
bool openLONG = false
bool closeLONG = false
bool startSHORTBOTandDEAL = false
bool stopSHORTBOTandDEAL = false
bool openSHORT = false
bool closeSHORT = false

MA1Period = ema(close, 10)
MA2Period = ema(close, 200)
MA3Period = ema(close, 200)

MA1 = security(syminfo.tickerid, "180", MA1Period)
MA2 = security(syminfo.tickerid, "60", MA2Period)
MA3 = security(syminfo.tickerid, "120", MA3Period)

MA12Crossover = crossover(MA1, MA2)
MA12Crossunder = crossunder(MA1, MA2)
MA23Crossover = crossover(MA2, MA3)
MA23Crossunder = crossunder(MA2, MA3)

if MA23Crossover
    startLONGBOTandDEAL := true //stop shortBOT and DEAL code in the TV alert as well, probably stop first w/ a delay on startlong
    lblBull = label.new(bar_index, na, ' BULL Time Open LONG', color=color.blue, textcolor=color.black, style=label.style_label_up, size=size.small)
    label.set_y(lblBull, MA2)  
    strategy.close("go Short")
    strategy.entry("go Long", strategy.long, comment="go Long")
if MA23Crossunder
    //not sure if i should set alert for stop and start each bot, or just put start appropriate bot and stop its opposite in the same alert.
    startSHORTBOTandDEAL := true
    lblBull = label.new(bar_index, na, ' BEAR Time - Open SHORT', color=color.orange, textcolor=color.black, style=label.style_label_down, size=size.small)
    label.set_y(lblBull, MA2)
    strategy.close("go Long")
    strategy.entry("go Short", strategy.short, comment="go Short")
if MA12Crossover
    if MA2 >= MA3
        openLONG := true
        lup1 = label.new(bar_index, na, ' OPEN LONG ', color=color.green, textcolor=color.white, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
        strategy.entry("go Long", strategy.long, comment="go Long")
    if MA2 <= MA3
        closeSHORT := true
        lup1 = label.new(bar_index, na, ' CLOSE SHORT ', color=color.gray, textcolor=color.black, style=label.style_label_up, size=size.small, yloc=yloc.belowbar)
        strategy.close("go Short")
    
if MA12Crossunder
    if MA2 >= MA3
        closeLONG := true
        lun1 = label.new(bar_index, na, ' CLOSE LONG ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
        strategy.close("go Long")
    if MA2 <= MA3
        openSHORT := true
        lun1 = label.new(bar_index, na, ' OPEN SHORT ', color=color.red, textcolor=color.white, style=label.style_label_down, size=size.small, yloc=yloc.abovebar)
        strategy.entry("go Short", strategy.short, comment="go Short")


plot(MA1, color=color.green, linewidth=2, title="MA1")
plot(MA2, color=color.yellow, linewidth=3, title="MA2")
plot(MA3, color=color.red, linewidth=4, title="MA3")


alertcondition(startLONGBOTandDEAL, title="Start LONG BOT and DEAL", message="Start Long Bot and Deal")
alertcondition(stopLONGBOTandDEAL, title="Stop LONG BOT and DEAL", message="Stop Long Bot and Deal")
alertcondition(openLONG, title="Open LONG DEAL", message="Open Long Deal")
alertcondition(closeLONG, title="Close LONG DEAL", message="Close Long Deal")
alertcondition(stopSHORTBOTandDEAL, title="Stop SHORT BOT and DEAL", message="Stop Short Bot and Deal")
alertcondition(openSHORT, title="Open SHORT DEAL", message="Open Short Deal")
alertcondition(closeSHORT, title="Close SHORT DEAL", message="Close Short Deal")

Thêm nữa