Chiến lược dự báo sóng Gauss

Tác giả:ChaoZhang, Ngày: 2024-01-22 12:37:07
Tags:

img

Tổng quan

Chiến lược dự báo sóng Gauss là một chiến lược giao dịch định lượng dựa trên lọc Gaussian. Nó sử dụng tính năng làm mịn của bộ lọc Gaussian để lọc chuỗi giá nhiều lần và tạo ra nhiều chuỗi giá làm mịn. Sau đó kết hợp với sự phù hợp đa thức của các chuỗi giá này, nó thực hiện dự đoán giá trong tương lai. Theo kết quả dự đoán, nó đưa ra đề xuất về các vị trí dài hoặc ngắn.

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

Trọng tâm của chiến lược này là thuật toán lọc Gaussian. Bộ lọc Gaussian là một bộ lọc làm mịn tuyến tính sử dụng hàm Gaussian làm trọng lượng. Các thông số p trong chiến lược được đặt là kích thước của cửa sổ lọc. Sau đó hệ số lọc alpha được tính bằng các hàm tam giác. Mỗi chuỗi giá ret \ [i\] đại diện cho kết quả sau khi lọc Gaussian lần thứ i của chuỗi giá ban đầu.

Chiến lược sử dụng ý tưởng tái diễn. Đầu tiên, với alpha và giá chuỗi giá ban đầu, lần lọc đầu tiên được tính toán. Sau đó dựa trên ret, lần lọc thứ hai được thực hiện để có được ret2. Lặp lại nhiều lần. Cuối cùng, bằng cách kết hợp nhiều chuỗi giá, một đường cong được trang bị để dự đoán giá trong tương lai ret4. Nếu giá dự đoán cao hơn giá thực tế hiện tại, đi dài. Nếu thấp hơn giá hiện tại, đi ngắn.

Bằng cách lọc nhiều lần, nó có thể trơn tru hơn và phù hợp hơn với xu hướng.

Phân tích lợi thế

Chiến lược có những lợi thế sau:

  1. Sử dụng bộ lọc Gaussian để làm mịn giá cả. Nó có thể lọc hiệu quả tiếng ồn tần số cao và làm cho chiến lược ổn định hơn.

  2. Việc lọc nhiều lần lặp lại. Nó có thể phù hợp hơn với xu hướng giá và cải thiện hiệu ứng dự đoán.

  3. Dự đoán giá dựa trên sự phù hợp đa thức. Nó có thể mô hình hóa xu hướng giá ngắn hạn và do đó tạo ra các tín hiệu giao dịch.

  4. Các tín hiệu giao dịch được kết hợp trực tiếp với dự đoán xu hướng để tránh bỏ lỡ cơ hội giao dịch.

  5. Dễ dàng thực hiện, dễ hiểu và tối ưu hóa. Nó có thể phục vụ như một mô-đun cơ bản cho các chiến lược tần số cao để mở rộng các chỉ số phân tích khác.

Phân tích rủi ro

Chiến lược này cũng có những rủi ro sau:

  1. Hiệu ứng làm mịn của bộ lọc Gauss đối với những thay đổi giá đột ngột có thể bỏ lỡ các cơ hội giao dịch ngắn hạn.

  2. Phù hợp đa thức có nguy cơ quá phù hợp. Nếu mô hình thay đổi giá đột ngột đột biến, hiệu ứng dự đoán sẽ giảm.

  3. Kích thước của cửa sổ bộ lọc và thứ tự của đa thức phù hợp cần phải được thiết lập chính xác.

  4. Nó chỉ dựa vào giá mở cửa cho tín hiệu giao dịch và không thể giao dịch trong ngày.

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

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

  1. Thêm cơ chế đào tạo mô hình và cơ chế đào tạo lại cửa sổ trượt để điều chỉnh động các thông số để giảm rủi ro quá mức.

  2. Kết hợp nhiều chỉ số và tính năng giá hơn để làm phong phú thêm đầu vào và làm cho dự đoán ổn định hơn.

  3. Thêm cơ chế dừng lỗ, đặt tỷ lệ lỗ tối đa để tránh tổn thất lớn trong điều kiện thị trường cực đoan.

  4. Tối ưu hóa quản lý vị trí, điều chỉnh vị trí năng động dựa trên độ chính xác dự đoán và biến động.

  5. Hãy thử dự đoán dựa trên các mô hình học máy chính thống như LSTM và cải thiện thêm khả năng dự đoán.

Kết luận

Tóm lại, đây là một chiến lược định lượng tần số cao thực hiện dự đoán giá bằng cách sử dụng bộ lọc Gaussian và phù hợp đa thức. Nó có một số ưu điểm nhất định nhưng cũng có chỗ để cải thiện. Bằng cách kết hợp nhiều tính năng hơn, giới thiệu điều chỉnh tham số động, cơ chế dừng lỗ, vv, hiệu ứng chiến lược có thể tốt hơn nhiều. Chiến lược này đặt nền tảng như một mô-đun cơ bản để nghiên cứu và tối ưu hóa các chiến lược tần số cao hơn.


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

//@version=2
strategy("Gaussbot v1.0", overlay=true)

p = input(20, minval=1, title="Length")
price = input(open, title="Source")

pi=3.1415926535


w=2*pi/p
beta = (1 - cos(w))/(pow(1.414,2.0/3) - 1)
alfa = -beta + sqrt(beta*beta + 2*beta)
ret=  pow(alfa,4)*price+4*(1-alfa)*nz(ret[1])-6*pow(1-alfa,2)*nz(ret[2])+4*pow(1-alfa,3)*nz(ret[3])-pow(1-alfa,4)*nz(ret[4])
ret2 = pow(alfa,4)*ret+4*(1-alfa)*nz(ret2[1])-6*pow(1-alfa,2)*nz(ret2[2])+4*pow(1-alfa,3)*nz(ret2[3])-pow(1-alfa,4)*nz(ret2[4])
ret3 = pow(alfa,4)*ret2+4*(1-alfa)*nz(ret3[1])-6*pow(1-alfa,2)*nz(ret3[2])+4*pow(1-alfa,3)*nz(ret3[3])-pow(1-alfa,4)*nz(ret3[4])
ret4 = 3*ret-3*ret2+ret3


diff2 = nz(ret[1]) - nz(ret[2]) - (nz(ret[2]) - nz(ret[3]) )  
diff22 = nz(ret2[1]) - nz(ret2[2]) - (nz(ret2[2]) - nz(ret2[3]) ) 
diff23 = nz(ret3[1]) - nz(ret3[2]) - (nz(ret3[2]) - nz(ret3[3]) )  
diff24 = nz(ret4[1]) - nz(ret4[2]) - (nz(ret4[2]) - nz(ret4[3]) )  


longCondition =    price[0] - ret4[1]  > 0
shortCondition =  price[0] - ret4[1] < 0

if(longCondition and shortCondition)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]
if(longCondition==false and shortCondition==false)
    longCondition = longCondition[1]
    shortCondition = shortCondition[1]



if (longCondition==true and shortCondition == false) 
    strategy.entry("Gaussbot Long", strategy.long )
if (longCondition==false and shortCondition == true)
    strategy.entry("Gaussbot Short", strategy.short)



Thêm nữa