[TOC]

Đúng như tên gọi, đường trung bình động thích ứng (KAMA) thuộc loại đường trung bình động, nhưng không giống như đường trung bình động truyền thống, nó rất “thông minh”. Chúng ta biết rằng các đường trung bình động thông thường có nhiều nhược điểm. Ví dụ, đường trung bình động ngắn hạn gần với xu hướng giá và rất nhạy cảm, nhưng dễ tạo ra tín hiệu sai; đường trung bình động dài hạn rất chính xác trong việc đánh giá xu hướng, nhưng thường phải mất một thời gian để thị trường phản ứng.
“Trí thông minh” của KAMA nằm ở khả năng tự động điều chỉnh độ nhạy dựa trên các điều kiện thị trường hiện tại, tức là tính biến động. Biểu hiện của nó là: trong một thị trường biến động, những thay đổi trong KAMA chậm lại đáng kể; khi một xu hướng xuất hiện, nó phản ứng nhanh chóng. Trong giao dịch thực tế, lợi thế của nó là có thể giảm chi phí giao dịch do “sự lộn xộn hàng ngày” gây ra và cho phép bạn tham gia kịp thời khi thị trường khởi sắc.

Trong đó, n, n1 và n2 đều là tham số chu kỳ. Theo mặc định, n là 10 chu kỳ, n1 là 2 chu kỳ ngắn hạn và n2 là 30 chu kỳ dài hạn. Đây cũng là một tập hợp các tham số được Perry Kaufman, tác giả của KAMA, công nhận. n được sử dụng để tính hiệu quả tính toán hướng và độ biến động, n1 và n2 là các chu kỳ của đường trung bình động nhanh và đường trung bình động chậm. Về mặt lý thuyết, càng lớn Tham số n1, KAMA càng mượt mà.
Phương pháp tính toán KAMA là: đầu tiên tính hướng (DIR) và độ biến động (VIR), sau đó tính hiệu quả dựa trên tỷ lệ của hai yếu tố này. Hiệu quả (ER) là thước đo mức độ thay đổi giá và được tính toán đơn giản: hướng/biến động. Kết quả tính toán nằm trong khoảng từ 0 đến 1. Khi giá trị ER gần 0 hơn, điều đó chỉ ra rằng thị trường đang ở trạng thái biến động. Khi giá trị ER gần 1 hơn, điều đó chỉ ra rằng thị trường đang ở trạng thái có xu hướng.
Sau khi tính được hiệu quả (ER), hằng số làm mịn (CS) có thể được suy ra bằng cách kết hợp trung bình động nhanh và trung bình động chậm: hiệu quả * (nhanh - chậm) + chậm. CS biểu thị tốc độ chuyển động của xu hướng. Theo công thức tính toán của CS, chúng ta có thể thấy rằng sự thay đổi của CS luôn tỷ lệ thuận với sự thay đổi của ER.
Hệ số (CQ) sau đó được tính toán dựa trên sức mạnh làm mịn, với mục tiêu là làm cho các tham số chu kỳ chậm đóng vai trò quan trọng hơn trong phép tính, đây cũng là một cách tiếp cận bảo thủ hơn. Độ mịn cuối cùng của KAMA được xác định bởi hệ số (CQ). Trong phép tính KAMA, hệ số (CQ) xác định các tham số chu kỳ của hai phép làm mịn trung bình động cuối cùng, cụ thể là: trung bình trọng số mũ (trung bình động động (giá đóng cửa, hệ số), 2).
Mặc dù phương pháp tính toán KAMA rất phức tạp, nhưng cách sử dụng của nó tương tự như các đường trung bình động thông thường. Trong các ứng dụng thực tế, nó không chỉ có thể xác định xu hướng thị trường mà còn có thể được sử dụng để xác định điểm mua và bán chính xác. Vì nó rất “thông minh” nên có thể được sử dụng trong nhiều chiến lược giao dịch và thậm chí đáng thử trong các loại tiền kỹ thuật số.
Bước 1: Tính KAMA
Để ý! Ở góc trên bên trái, chọn ngôn ngữ lập trình:My语言. Đã có một KAMA có sẵn trong thư viện talib, nhưng nó chỉ có một tham số bên ngoài là (n) chu kỳ, và n1 và n2 mặc định là 2 và 30. Các chiến lược trong bài viết này chỉ mang tính tham khảo. Những người bạn có kỹ năng thực hành tốt cũng có thể tự viết. Sau đó, ngôn ngữ My cũng có thể được trộn trực tiếp với ngôn ngữ JavaScript. Hãy chú ý đến đoạn mã sau:
%% // My语言内JavaScript的标准格式
scope.KAMA = function() {
var r = _C(exchange.GetRecords); // 获取K线数组
if (r.length > 140) { // 过滤K线长度
var kama = talib.KAMA(r, 140); // 调用talib库计算KAMA
return kama[kama.length - 2]; // 返回KAMA的具体数值
}
return;
}
%% // My语言内JavaScript的标准格式
Bước 2: Tính toán điều kiện giao dịch và đặt lệnh
%%
scope.KAMA = function() {
var r = _C(exchange.GetRecords);
if (r.length > 140) {
var kama = talib.KAMA(r, 140);
return kama[kama.length - 2];
}
return;
}
%%
K^^KAMA; // 把KAMA打印到图表上
A:CLOSE; // 把收盘价打印到图表上
K > REF(K, 1) && CLOSE > K,BK; // 开多
K < REF(K, 1) && CLOSE < K,SK; // 开空
K < REF(K, 1) || CLOSE < K,SP; // 平多
K > REF(K, 1) || CLOSE > K,BP; // 平空
Bước 3: Thiết lập phương pháp lọc tín hiệu chiến lược
%%
scope.KAMA = function() {
var r = _C(exchange.GetRecords);
if (r.length > 140) {
var kama = talib.KAMA(r, 140);
return kama[kama.length - 2];
}
return;
}
%%
K^^KAMA;
A:CLOSE;
K > REF(K, 1) && CLOSE > K,BK;
K < REF(K, 1) && CLOSE < K,SK;
K < REF(K, 1) || CLOSE < K,SP;
K > REF(K, 1) || CLOSE > K,BP;
AUTOFILTER; // 启用一开一平信号过滤机制
Để gần hơn với môi trường giao dịch thực tế, chúng tôi sử dụng trượt giá 2 lần để mở và đóng các vị thế để thực hiện kiểm tra căng thẳng trong quá trình kiểm tra ngược. Môi trường kiểm tra như sau:
Môi trường thử nghiệm
Chi tiết doanh thu
Đường cong tài trợ

Đánh giá từ kết quả kiểm tra ngược ở trên, chiến lược KAMA đơn giản này thực sự đáp ứng được kỳ vọng. Ngay cả trong thị trường siêu gấu của tiền kỹ thuật số năm 2018, đường cong vốn không cho thấy sự thoái lui lớn và thị trường đang trong giai đoạn biến động dài hạn . Việc mở và đóng các vị thế liên tục sẽ gây ra những tổn thất không đáng có. Đồng thời, cổ phiếu này cũng hoạt động tốt trong thị trường tăng giá năm 2019.
Một chiến lược tuyệt vời có thể đưa vào thực tế phải được tinh chỉnh thông qua nhiều lần thử nghiệm và đau khổ. Các chiến lược trong bài viết này vẫn còn nhiều chỗ để tối ưu hóa và nâng cấp, chẳng hạn như thêm một số điều kiện lọc, chốt lời chủ động và dừng lỗ điều kiện, v.v. Là một loại đường trung bình động, KAMA kế thừa những ưu điểm và nhược điểm của đường trung bình động thông thường và đồng thời cải thiện chúng. Trong một thị trường không thể đoán trước, ngay cả khi “tham số tốt nhất” được cố định, cũng khó có thể thích ứng với các điều kiện thị trường trong tương lai. Do đó, phương pháp theo dõi xu hướng và thay đổi theo các điều kiện thị trường này có thể là lựa chọn tốt hơn.