Chiến lược chéo trung bình di chuyển có trọng lượng khối lượng đàn hồi

Tác giả:ChaoZhang, Ngày: 2023-09-18 22:07:14
Tags:

Tổng quan

Chiến lược này sử dụng hai đường EVWMA với các giai đoạn khác nhau để tạo ra các dấu chéo và tạo ra tín hiệu mua và bán. Khi đường ngắn vượt qua đường dài, nó tạo ra tín hiệu mua. Khi đường ngắn vượt qua đường dài, nó tạo ra tín hiệu bán.

Chiến lược logic

Chiến lược xác định sự thay đổi xu hướng bằng cách tính toán và vượt qua hai đường EVWMA với các giai đoạn khác nhau.

Cụ thể, nó đầu tiên tính toán hai đường EVWMA:

  1. Đường dài hạn ngắn m1, với thời gian dài1, mặc định là 5

  2. Đường dài thời gian m2, với thời gian dài2, mặc định là 40

Sau đó nó sử dụng các chức năng chéo và chéo để xác định các tình huống chéo giữa m1 và m2:

  • Nếu m1 vượt qua m2, nó tạo ra một tín hiệu mua và thực hiện hoạt động dài

  • Nếu m1 vượt dưới m2, nó tạo ra một tín hiệu bán và thực hiện hoạt động ngắn

Lưu ý rằng EVWMA cho trọng lượng nhiều hơn cho dữ liệu gần đây so với trung bình di chuyển đơn giản.

data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume_price/nb_floating_shares)

Trong đó nz ((data[1]) là giá trị EVWMA của giai đoạn trước, nb_floating_shares là tổng khối lượng của giai đoạn, khối lượng là khối lượng của giai đoạn hiện tại và khối lượng_giá là doanh thu của giai đoạn hiện tại.

Phân tích lợi thế

Những lợi thế của chiến lược này bao gồm:

  1. EVWMA phản ứng nhanh hơn với sự thay đổi giá và cải thiện cơ hội lợi nhuận

  2. Crossover của hai đường EVWMA xác định điểm chuyển đổi kịp thời

  3. Logic đơn giản và dễ thực hiện

  4. Thời gian tùy chỉnh để thích nghi với môi trường thị trường khác nhau

  5. Không cần tối ưu hóa tham số phức tạp và dễ dàng giao dịch trực tiếp

Rủi ro và giải pháp

Ngoài ra còn có một số rủi ro với chiến lược này:

  1. Crossover có thể tạo ra các tín hiệu không hợp lệ quá mức mà không lọc tiếng ồn thị trường

    • Giải pháp: Kết hợp với âm lượng hoặc các chỉ số khác để lọc tín hiệu
  2. Khó xác định các điểm đảo ngược xu hướng và rủi ro thiếu đảo ngược

    • Giải pháp: Điều chỉnh các tham số giai đoạn hoặc thêm các chỉ số đảo ngược khác
  3. Không dừng lỗ hoặc kiếm lợi nhuận, không thể kiểm soát rủi ro hiệu quả

    • Giải pháp: Đặt tỷ lệ dừng lỗ và lấy lợi nhuận phù hợp dựa trên dữ liệu lịch sử và biến động
  4. Tối ưu hóa tham số không đủ dẫn đến cài đặt thời gian không đúng

    • Giải pháp: Tối ưu hóa các tham số thông qua backtesting và chọn chiều dài thích hợp

Hướng dẫn cải thiện

Một số hướng để cải thiện chiến lược:

  1. Thêm dừng lỗ và lấy lợi nhuận để kiểm soát nghiêm ngặt rủi ro

  2. Tối ưu hóa thời gian dài để tìm các thông số tốt nhất

  3. Thêm bộ lọc khối lượng để giảm các giao dịch không hợp lệ

  4. Kết hợp với các chỉ số đảo ngược để tránh bỏ lỡ đảo ngược

  5. Tối ưu hóa các thông số năng động dựa trên những thay đổi trên thị trường

  6. Phân biệt thị trường bò và thị trường gấu và sử dụng các thông số khác nhau

  7. Đưa ra các mô hình học máy để xác định thời gian giao dịch dựa trên dữ liệu lớn

Kết luận

Tóm lại, chiến lược chéo EVWMA này có thể xác định hiệu quả những thay đổi xu hướng và tạo ra các tín hiệu giao dịch bằng cách tính toán và vượt qua hai đường EVWMA. Logic rất đơn giản nhưng có những rủi ro và hướng cải thiện. Bằng cách tối ưu hóa dừng lỗ, lựa chọn tham số, tích hợp các chỉ số khác vv, chiến lược có thể được tăng cường cho giao dịch trực tiếp. Nhìn chung, đây là một khám phá có lợi về các chiến lược chéo trung bình động và đáng nghiên cứu và áp dụng thêm.


/*backtest
start: 2023-08-18 00:00:00
end: 2023-08-26 00:00:00
period: 2h
basePeriod: 15m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=2

strategy("Elastic Volume Weighted Moving Average Cross Strategy", shorttitle="EVWMA Cross", overlay=true)
length1=input(5, title="EVWMA Short")
length2=input(40, title="EVWMA Long")

nbfs1=sum(volume, length1)
nbfs2=sum(volume, length2)

medianSrc=close

calc_evwma(price, length, nb_floating_shares) => 
    data = (nz(data[1]) * (nb_floating_shares - volume)/nb_floating_shares) + (volume*price/nb_floating_shares)
    data
    

m1=calc_evwma(medianSrc, length1, nbfs1)
m2=calc_evwma(medianSrc, length2, nbfs2)

if (crossover(m1, m2))
    strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")

if (crossunder(m1, m2))
    strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")

p1=plot(m1,color=orange,linewidth=2, title="evwma")
p2=plot(m2,color=orange,linewidth=2, title="evwma")

Thêm nữa