Chiến lược theo dõi xu hướng dựa trên sóng Karman

Tác giả:ChaoZhang
Tags:

基于卡尔曼滤波的趋势跟踪策略

Thông tin chi tiết

Trung tâm của chiến lược này là sử dụng kỹ thuật Carlmann filter để xử lý trơn tru đường trung bình giá bằng cách tính góc cắt của đường trung bình sau khi trơn tru, tạo ra tín hiệu giao dịch khi góc cắt vượt quá một ngưỡng nhất định trong chu kỳ được chỉ định. Chiến lược này nhằm theo dõi xu hướng đường dài trung bình, giảm ảnh hưởng của tiếng ồn thông qua kỹ thuật Carlmann filter để có được tín hiệu xu hướng rõ ràng và đáng tin cậy hơn.

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

Trong khi đó, các nhà lãnh đạo của các quốc gia khác cũng có thể tham gia vào chiến lược này.

  1. Tính toán đường trung bình di chuyển đơn giản (SMA) giá 1 phút như đường trung bình nguyên bản;

  2. Thực hiện sóng Kármán trên đường trung bình nguyên bản, xuất đường trung bình sau khi trơn;

  3. Xét góc cắt của đường ngang sau khi trơn;

  4. Định nghĩa chu kỳ tham số, tổng các góc cắt đường trong chu kỳ thống kê;

  5. Các tín hiệu mua được tạo ra khi tổng các góc cắt trong chu kỳ lớn hơn 360 độ; các tín hiệu bán được tạo ra khi nhỏ hơn -360 độ.

Với thiết kế như vậy, khi giá có xu hướng tăng hoặc giảm, góc cắt của đường thẳng sẽ dần tích tụ, tạo ra tín hiệu giao dịch khi tích tụ đến một mức độ nhất định, do đó có thể theo dõi hiệu quả xu hướng đường dài trung gian.

Trong số đó, sóng Carlman là chìa khóa của chiến lược này. Các sóng Carlman là một thuật toán hồi quy, dự đoán các giá trị của tiếng ồn quá trình và tiếng ồn đo trong khi dự đoán trạng thái hiện tại, và sử dụng các giá trị của tiếng ồn này để điều chỉnh dự đoán trạng thái trước đó để có được ước tính trạng thái chính xác và đáng tin cậy hơn.

Trong chiến lược này, SMA của giá có thể được xem như là một phép đo trạng thái, bị ảnh hưởng bởi tiếng ồn thị trường, và bộ lọc KALMAN sẽ định kỳ ước tính xu hướng thực sự của giá, giảm đáng kể ảnh hưởng của tiếng ồn, làm cho tính toán đường trung bình tiếp theo trở nên đáng tin cậy hơn, do đó tạo ra tín hiệu giao dịch ổn định và chính xác hơn.

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

So với các chiến lược chỉ số đơn giản như đường trung bình di chuyển, lợi thế lớn nhất của chiến lược này là sử dụng sóng lọc Carlmann để giảm ảnh hưởng của tiếng ồn, làm cho tín hiệu giao dịch rõ ràng hơn và đáng tin cậy hơn. Những lợi thế cụ thể được thể hiện chủ yếu trong các khía cạnh sau:

  1. Giảm tín hiệu giả. Các sóng Carlmann lọc hiệu quả lọc ra một lượng lớn các tín hiệu giả do biến động ngẫu nhiên gây ra bằng cách tự ước tính và loại bỏ tiếng ồn, làm cho các tín hiệu giao dịch được tạo ra đáng tin cậy hơn.

  2. Hiệu ứng theo dõi tốt hơn. Hình dạng đường trung tuyến sau khi trượt mượt mượt hơn, có thể phản ánh tốt hơn xu hướng đường dài trung bình của giá, do đó có hiệu quả theo dõi xu hướng tốt hơn.

  3. Các tham số có thể được điều chỉnh để thiết lập linh hoạt. Các tham số có thể được điều chỉnh bao gồm chiều dài đường trung tuyến, các tham số của các sóng lọc Karman và chu kỳ thống kê, có thể linh hoạt để phù hợp với các môi trường thị trường khác nhau.

  4. Kiểm soát rủi ro. Chiến lược này tập trung nhiều hơn vào xu hướng đường dài trung bình thay vì biến động ngắn hạn, đạt được sự cân bằng rủi ro - lợi nhuận tốt hơn.

  5. Thực hiện đơn giản, dễ mở rộng. Các thuật toán cốt lõi của chiến lược này đơn giản, dễ thực hiện và kiểm tra, nhưng cũng cung cấp không gian mở rộng, chẳng hạn như có thể giới thiệu các thuật toán học máy để tự động tối ưu hóa các tham số.

Rủi ro chiến lược

Các chiến lược này cũng có những rủi ro chính:

  1. Rủi ro đảo ngược xu hướng. Chiến lược này tập trung vào việc theo dõi xu hướng, khi một sự đảo ngược xu hướng mạnh mẽ xảy ra, sẽ gây ra tổn thất lớn hơn. Có thể giảm lỗ đơn lẻ bằng cách rút ngắn chu kỳ thống kê một cách thích hợp.

  2. Rủi ro tối ưu hóa tham số. Thiết lập tham số không phù hợp có thể dẫn đến giao dịch thường xuyên hoặc tín hiệu bị chậm và cần phải thử nghiệm tối ưu hóa đầy đủ. Có thể kết hợp với các thuật toán học máy tối ưu hóa tự động.

  3. Rủi ro tối ưu hóa quá mức. Việc tối ưu hóa quá mức trên dữ liệu lịch sử cũng có thể dẫn đến lỗi tham số, cần kiểm soát hiệu quả bên ngoài mẫu.

  4. Tăng rủi ro về sự phức tạp của việc thực hiện. Việc giới thiệu các thuật toán KLM và góc cắt sẽ làm tăng sự phức tạp của mã, cần đảm bảo thực hiện đúng.

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

Với các yếu tố rủi ro trên, các hướng tối ưu hóa của chiến lược bao gồm:

  1. Đưa ra việc dừng lỗ và quản lý vị trí; dừng lỗ thích hợp có thể kiểm soát hiệu quả rủi ro mất mát đơn lẻ; quản lý vị trí động cũng có thể điều chỉnh rủi ro bảo hiểm vị trí theo tình hình thị trường.

  2. Tối ưu hóa tham số tự động. Thông qua các thuật toán tối ưu hóa học máy, bạn có thể tối ưu hóa tham số tự động, tránh rủi ro tối ưu hóa quá mức.

  3. Tích hợp các chỉ số khác. Một số chỉ số khác có thể được tích hợp trong chiến lược để tạo ra một sự kết hợp các chỉ số để nâng cao tính ổn định của chiến lược.

  4. Tăng đánh giá hiệu quả; giới thiệu nhiều chỉ số điều chỉnh rủi ro hơn, đánh giá hiệu quả và tính ổn định của chiến lược để đưa ra kết luận chính xác hơn.

  5. Tăng thêm nhiều giống. Nếu hiệu quả tốt, bạn có thể xem xét mở rộng thêm nhiều giống để tích lũy mẫu phong phú hơn trong thời gian dài, cũng như tối ưu hóa các thông số giữa các giống.

Tóm lại

Chiến lược này nói chung là một chiến lược theo dõi xu hướng đơn giản và hiệu quả hơn. Sự đổi mới lớn nhất của chiến lược này là việc giới thiệu thuật toán sóng Carlmann so với chiến lược đường trung bình di động truyền thống, cũng cho phép chiến lược tạo ra các tín hiệu giao dịch rõ ràng và đáng tin cậy hơn.


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

//@version=5
//@library=math
strategy("策略360°(测试)", overlay=true)

// 定义1分钟均线
ma1 = request.security(syminfo.tickerid, "1", ta.sma(close, 1)) // 在这里使用了 math.sma() 函数
//plot(ma1, color=color.yellow, title="原始均线")

// 定义卡尔曼滤波函数,参考了[1](https://www.tradingview.com/pine-script-docs/en/v5/language/Methods.html)和[2](https://www.tradingview.com/pine-script-docs/en/v5/language/Operators.html)的代码
kalman(x, g) => 
    kf = 0.0 
    dk = x - nz(kf[1], x) // 在这里使用了 nz() 函数
    smooth = nz(kf[1], x) + dk * math.sqrt(g * 2) // 在这里使用了 math.sqrt() 函数
    velo = 0.0 
    velo := nz(velo[1], 0) + g * dk // 在这里使用了 nz() 函数
    kf := smooth + velo 
    kf 

// 定义卡尔曼滤波后的均线
ma2 = kalman(ma1, 0.01) 
plot(ma2, color=color.blue, title="卡尔曼滤波后的均线")

// 定义切线角
angle = math.todegrees(math.atan(ma2 - ma2[1])) // 在这里使用了 math.degrees() 和 math.atan() 函数

// 定义累加的切线角
cum_angle = 0.0
cum_angle := nz(cum_angle[1], 0) + angle // 在这里使用了 nz() 函数

// 定义30分钟周期
period = 30 // 您可以根据您的需要修改这个参数

// 定义周期内的切线角总和
sum_angle = 0.0
sum_angle := math.sum(angle, period) // 在这里使用了 math.sum() 函数,把周期内的切线角总和改成简单地把 5 个切线角相加

// 定义买入和卖出条件
buy = sum_angle > 360// 在这里使用了 math.radians() 函数
sell = sum_angle < -360

// 执行买入和卖出操作
strategy.entry("Long", strategy.long, when=buy)
strategy.close("Short", when=buy)
strategy.entry("Short", strategy.short, when=sell)
strategy.close("Long", when=sell)

// 绘制曲线图
plot(sum_angle, color=color.green, title="周期内的切线角总和")
plot(angle, color=color.red, title="切线角") // 这是我为您添加的代码,用于显示实时计算的切线角


Nhiều hơn nữa