AFL: Tối ưu chỉ báo kỹ thuật trong Amibroker (Optimize)

Thực chất, chỉ báo kỹ thuật là gì?

Khi sử dụng các chỉ báo kỹ thuật Indicator có bao giờ bạn tự hỏi tại sao MACD lại cần tham số chu kỳ (12,26), sao phải dùng MA20, MA50; hay cũng có khi vô tình “lượm” được vài source code “thần thánh” trên mạng nhưng khi về sử dụng lại không như kết quả mong đợi.

Chỉ báo kỹ thuật cũng là kết quả của quá trình quan sát thị trường, đo lường trạng thái chuyển động của giá hay khối lượng và sau đó dự báo tương lai. Mỗi thị trường có “tính cách” riêng của nó, khi sử dụng bất kỳ chỉ báo kỹ thuật vào một thị trường cụ thể đó chúng ta phải điều chỉnh để nó có thể phát huy hết sức mạnh.
Amibroker cung cấp tính năng tối ưu hoá (optimize) có thể sử dụng để tinh chỉnh các tham số của các Indicator sao cho phù hợp nhất.

Ví dụ về chỉ báo kỹ thuật Magical Trend

Tôi ví dụ từ code Magical Trend, bạn có thể tải mã nguồn phía dưới
(lưu ý: chỉ sử dụng để phân tích nghiên cứu, tôi không sử dụng và cũng không khuyến khích sử dụng code này và càng không khuyến nghị giao dịch phái sinh)

Ý nghĩa chiến lược mua bán của code này là xây dựng đường biên trên và biên dưới (tính toán dưa trên chỉ báo ATR – average true range). Khi giá vượt đường biên trên thì mua vào (hoặc cover khi short) và bán ra (hoặc vào lệnh short) khi giá phá vỡ đường biên dưới.

Đồ thị mua bán của code này như sau:

Code tuy nhiều nhưng chỉ cần để ý 3 tham số chính này:

P = Param("Period",20,2,25,1);
m = Param("Multiplier",3,0.1,5,0.1);
A = ATR(P);

P: chu kỳ, mặc định 20 phiên
m: số nhân, mặc định là 3
A: chỉ số ATR với chu kỳ P

Backtest chỉ báo kỹ thuật

Trước khi backtest code này phải cấu hình lại setting vì phái sinh khác với cổ phiếu

Optimize setting

Kết quả sau backtest có lợi nhuận gần 80 triệu/100 triêu vốn khởi tạo cho 3 năm giao dịch
Lưu ý:
Đây là kết quả backtest giao dịch theo giá đóng cửa ngày
Margin giả định của code là 4 lần

Amibroker Backtest

Opimize chỉ báo kỹ thuật

Giờ chúng ta sẽ tối ưu hoá chiến lược giao dịch của code này cho thị trường Việt Nam

Đầu tiên ta khai báo lại 2 tham số P và m như sau

P = Optimize("Period",20,5,25,1);
m = Optimize("Multiplier",3,1,5,0.5);

Ý nghĩa:
– Cho P chạy từ 5 đến 25 (bước chạy 1)
– Cho m chạy từ 1 đến 5 (bước chạy 0.5)

Sau khi chạy Optimize ta được bảng kết quả lợi nhuận như sau:

Amibroker Optimize

Và sẽ tìm được cặp biến số P và m cho kết quả giao dịch tốt nhất

Optimize chỉ báo kỹ thuật

Trở lại giao diện Coding ta gán giá trị lấy từ bảng Optimze vào

P = 5;   //Optimize("Period",20,5,25,1);
m = 1;   //Optimize("Multiplier",3,1,5,0.5);

Và sau đó chạy lại backtest

Backtest chỉ báo kỹ thuật

Kết quả lợi nhuận sau khi Optimize là 1.5 tỷ / 100 triệu khởi tạo

Tất nhiên đây chỉ là kết quả mang tính lý thuyết, nhưng qua cách tinh chỉnh các tham số đã đem lại kết quả vượt trội khi áp dụng với từng thị trường cụ thể

Tham khảo thêm:

Leave a Reply