Chiến lược giao dịch định lượng dựa trên đường trung bình động


Ngày tạo: 2024-01-16 17:37:13 sửa đổi lần cuối: 2024-01-16 17:37:13
sao chép: 0 Số nhấp chuột: 711
1
tập trung vào
1617
Người theo dõi

Chiến lược giao dịch định lượng dựa trên đường trung bình động

Tổng quan

Chiến lược này thuộc về chiến lược theo dõi xu hướng điển hình bằng cách tính toán các trung bình di chuyển của các chu kỳ khác nhau và đánh giá các tín hiệu giao dịch hình thành bởi các gai vàng và gai chết của chúng. Chủ yếu sử dụng trung bình di chuyển có trọng lượng WMA và trung bình di chuyển thích ứng ALMA.

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

Chiến lược này đầu tiên tính toán các đường trung bình di chuyển ngắn hạn của giá ma1 và ma2, trong đó ma1 có chu kỳ ngắn hơn và ma2 có chu kỳ dài hơn. Sau đó tính toán chênh lệch giữa ma1 và ma2 là ma3, và sau đó tính toán đường trung bình di chuyển phẳng ma4 cho ma3. Khi ma3 vượt qua ma4 tạo ra tín hiệu mua, khi vượt qua ma4 tạo ra tín hiệu bán.

Như vậy, ma3 phản ánh hướng xu hướng trung hạn của giá, ma4 lọc một số tiếng ồn trong ma3 và tạo ra một tín hiệu giao dịch đáng tin cậy hơn. Sự so sánh chu kỳ của ma1 và ma2 được thiết lập thông qua tham số maLen, người dùng có thể có được sự kết hợp tham số tốt nhất theo chu kỳ điều chỉnh thị trường khác nhau.

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

Chiến lược này có những ưu điểm sau:

  1. Sử dụng trung bình di chuyển thích ứng ALMA và trung bình di chuyển trọng lượng WMA để thích ứng tốt hơn với sự thay đổi của thị trường.

  2. Sử dụng phương pháp trung bình giá đa chu kỳ để làm cho tín hiệu giao dịch đáng tin cậy hơn.

  3. Các tham số có thể điều chỉnh được, người dùng có thể tối ưu hóa cho các thị trường khác nhau, có thể áp dụng rộng rãi.

  4. Chiến lược của tôi rất rõ ràng, dễ hiểu và dễ thực hiện.

  5. Có thể đạt được hiệu quả tốt trong cả thị trường xu hướng và biến động.

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

Chiến lược này cũng có một số rủi ro:

  1. Trong các tình huống biến động mạnh, chiến lược trung bình di chuyển dễ gây ra các vấn đề như tín hiệu giao dịch không rõ ràng, chậm trễ. Có thể được tối ưu hóa bằng cách điều chỉnh chu kỳ và tham số trung bình di chuyển.

  2. Chiến lược theo dõi xu hướng thuần túy, dễ bị thua lỗ trong giai đoạn hoàn thiện xung đột. Có thể kết hợp với các chỉ số khác như là điều kiện lọc.

  3. Thiết lập tham số không đúng cách có thể dẫn đến quá nhiều giao dịch trong một chu kỳ quá ngắn. Chọn cẩn thận các tham số phù hợp.

Tối ưu hóa chiến lược

Chiến lược này có thể được tối ưu hóa theo các khía cạnh sau:

  1. Kiểm tra nhiều loại trung bình di chuyển hơn, chẳng hạn như trung bình di chuyển tuyến tính, trung bình di chuyển trọng lượng, v.v.

  2. Tăng các cơ chế dừng lỗ dựa trên các chỉ số như biến động, kênh giá.

  3. Kết hợp nhiều phân tích chu kỳ thời gian, tham số tối ưu hóa cuộn.

  4. Thêm các thuật toán học máy để tối ưu hóa các tham số tự động.

Tóm tắt

Chiến lược này dựa trên đường trung bình di chuyển để tạo ra tín hiệu giao dịch. Sử dụng đường trung bình di chuyển thích ứng và giá trung bình nhiều thời gian, làm cho tín hiệu chính xác và đáng tin cậy hơn. Các tham số của chiến lược có thể điều chỉnh, có thể áp dụng rộng rãi, ý tưởng đơn giản và rõ ràng, hiệu quả tốt trong thị trường xu hướng, có giá trị thực tế cao.

Mã nguồn chiến lược
/*backtest
start: 2024-01-08 00:00:00
end: 2024-01-15 00:00:00
period: 10m
basePeriod: 1m
exchanges: [{"eid":"Futures_Binance","currency":"BTC_USDT"}]
*/

//@version=3
strategy("Oracle Move Strategy", overlay=true)

maLen = input(30, "ma period")
mode =  input(defval="wma", options=["alma", "ema", "wma"])
price = close

ma(src, len) =>
     mode=="alma"  ? alma(src, len, 0.85, 6) :
     mode=="ema"? ema(src, len) : 
     wma(src, len)
    

ma1 = ma(price, floor(maLen / 2))
ma2 = ma(price, maLen)
ma3 = 2.0 * ma1 - ma2
ma4 = ma(ma3, floor(sqrt(maLen)))

//plot(ma1, color = red)
//plot(ma2, color = green)
plot(ma3, color = blue)
plot(ma4, color = orange)


mafast = ma3
maslow = ma4

if (crossover(mafast, maslow))
    strategy.entry("MA2CrossLE", strategy.long, comment="MA2CrossLE")

if (crossunder(mafast, maslow))
    strategy.entry("MA2CrossSE", strategy.short, comment="MA2CrossSE")

//plot(strategy.equity, title="equity", color=red, linewidth=2, style=areabr)