Bỏ qua

Tối ưu hóa cBot trong cTrader

Bài viết này giải thích cách tối ưu hóa robot giao dịch trong cTrader Windows và Mac.

Có thể khó để chỉ định một bộ tham số ban đầu tối ưu cho một cBot. May mắn thay, cTrader cung cấp tính năng tối ưu hóa cBot tích hợp. Tối ưu hóa lấy mã của bạn và chạy nó nhiều lần với mỗi lần chạy dựa trên các giá trị tham số khác nhau. Sau đó, nó trình bày cho bạn một bộ kết quả có thể tùy chỉnh mà bạn có thể sử dụng để xác định cấu hình tham số tối ưu.

Để sử dụng tính năng này, chọn một thể hiện cBot và chuyển sang tab Tối ưu hóa.

Image title

Sau đó, xác định giai đoạn backtest cho việc tối ưu hóa bằng cách sử dụng lịch thả xuống hoặc kéo thanh trượt.

Image title

Cài đặt tối ưu hóa

Vì tối ưu hóa về cơ bản chỉ là một loạt các backtest, bạn có thể chỉ định cài đặt backtest tương tự như cách thực hiện trong tab Backtest.

Các tham số tối ưu hóa

Nhấp vào nút Tham số ở bên trái thanh trượt lịch. Bạn sẽ thấy cửa sổ sau.

Image title

Trong đó, đánh dấu vào các ô bên cạnh các tham số cBot mà bạn muốn tối ưu hóa. Tham số Khung thời gian có sẵn cho tất cả các cBot.

Tiêu chí tối ưu hóa

Nhấn nút Tiêu chí nằm bên phải nút Các tham số tối ưu hóa. cTrader sẽ mở tab sau.

Image title

Tiêu chí tối ưu hóa xác định cách thuật toán tối ưu hóa xếp hạng kết quả của bạn sau khi backtest. Bạn có thể chọn giữa các tùy chọn sau:

  • Tiêu chuẩn - một loạt các tiêu chí được xác định trước mà bạn có thể nhắm đến việc tối thiểu hóa hoặc tối đa hóa. Để làm điều này, chọn một tiêu chí từ menu thả xuống bên phải và chọn hướng tối ưu hóa trong menu liên quan bên trái. Để thêm một tiêu chí mới, nhấp vào Thêm tiêu chí.
  • Tùy chỉnh - một tiêu chí tùy chỉnh được xác định trong mã cBot của bạn sử dụng phương thức GetFitness() như được hiển thị trong các ví dụ dưới đây.
1
2
3
4
5
protected override double GetFitness(GetFitnessArgs args)
{
    // Maximise the winning trades/losing trades ratio.
    return args.WinningTrades / args.LosingTrades;
}
1
2
3
4
5
6
protected override double GetFitness(GetFitnessArgs args)
{
    /* Maximise the winning trades/losing trades ratio
    while giving winning trades more weight. */
    return Math.Pow(args.WinningTrades, 2) / args.LosingTrades;
}

Tính toán đa tiêu chí

Nếu nhiều tiêu chí được sử dụng để tính toán hiệu quả của tham số, cTrader sẽ sử dụng tất cả chúng một cách bình đẳng để tính toán giá trị phù hợp cho một lượt tối ưu hóa.

Cụ thể, nền tảng nhân các giá trị của tất cả các tiêu chí tối đa hóa và riêng biệt nhân các giá trị của tất cả các tiêu chí tối thiểu hóa. Sau đó, nó chia giá trị nhân tuyệt đối cho các tiêu chí tối đa hóa cho cùng giá trị đó cho các tiêu chí tối thiểu hóa.

Mã giả sau đây cho thấy chính xác cách tính toán giá trị phù hợp đa tiêu chí.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
numerator = 1.0
if (valuesToMaximize.Length > 0)
    numerator = Abs(Multiply(criteriaValuesToMaximize))

denominator = 1.0
if (valuesToMinimize.Length > 0)
    denominator += Abs(Multiply(criteriaValuesToMinimize))

/* The 'sign' variable can be either +` or -1 depending on whether
there are criteria for which their values are less than 0. */
sign = criteriaValuesToMinimize.Concat(criteriaValuesToMaximize).Any(v => v < 0) ? -1 : 1

fitness =  sign * numerator / denominator

Phương pháp

Nhấp vào nút Phương pháp (được biểu thị là GA hoặc # tùy thuộc vào tùy chọn nào được chọn). Trong menu bên dưới, chọn phương pháp tối ưu hóa được sử dụng bởi nền tảng.

Image title

Các tùy chọn sau có sẵn:

  • Thuật toán di truyền - thuật toán mô phỏng quá trình tiến hóa sinh học. Vui lòng xem phần riêng biệt để biết mô tả chi tiết về nó.
  • Lưới (#) - thuật toán lần lượt backtest từng bộ tham số có thể có.

Ghi chú

Theo ước tính của chúng tôi, thuật toán di truyền nhanh hơn đáng kể trong việc tìm giá trị tham số tối ưu.

Tài nguyên

Nhấp vào nút Tài nguyên để chọn phần trăm tải CPU của bạn được phân bổ cho việc backtest. Di chuyển thanh trượt để đặt phần trăm sử dụng CPU.

Càng phân bổ nhiều tài nguyên thì quá trình tối ưu hóa càng hoàn thành nhanh hơn. Tuy nhiên, bạn có thể thấy hiệu suất giảm khi sử dụng các ứng dụng khác.

Image title

Lưu ý rằng tài nguyên CPU cũng có thể được điều chỉnh trong quá trình tối ưu hóa.

Bắt đầu và quản lý quy trình tối ưu hóa

Để tiến hành tối ưu hóa, nhấp vào nút Phát ở bên phải thanh trượt lịch. Tùy thuộc vào tài nguyên máy của bạn, cài đặt tối ưu hóa và độ phức tạp của cBot, việc tối ưu hóa có thể mất một thời gian.

Thanh giao diện người dùng ngay bên dưới thanh trượt lịch sẽ cung cấp thông tin về số lượng lượt backtest đã hoàn thành, thời gian đã trôi qua và ước tính thời gian còn lại.

Image title

Trong khi đó, màn hình trung tâm trong tab Tối ưu hóa sẽ cung cấp một lưới thời gian thực chứa thông tin về tất cả các lượt backtest mà thuật toán đã hoàn thành.

Image title

Để áp dụng một bộ tham số được kiểm tra trong một lượt nhất định, nhấp vào nút Áp dụng. Nó chỉ trở nên hoạt động nếu không có quy trình tối ưu hóa nào đang chạy.

Ngoài ra, đánh dấu vào ô Tự động chọn lượt tốt nhất ở góc trên bên trái để cTrader tự động chọn lượt (và các tham số) đã đạt được kết quả tốt nhất có thể theo các tiêu chí tối ưu hóa bạn đã chỉ định.

Kết quả tối ưu hóa

Sau khi tối ưu hóa hoàn tất, bảng trung tâm sẽ hiển thị danh sách cuối cùng của tất cả các lượt backtest và kết quả của chúng.

Bảng này có các cột sau. Vì lưới có thể được cấu hình hoàn toàn, các cột này có thể được kéo và thả hoặc tắt hoàn toàn sau khi nhấp chuột phải vào bảng và bỏ chọn chúng từ menu ngữ cảnh.

Trường Định nghĩa
Lượt Số lượt.
Độ phù hợp Giá trị thể hiện mức độ phù hợp của lượt với các tiêu chí tối ưu hóa.
Vốn tức thời Tổng vốn tức thời tại cuối lượt.
Số dư Tổng số dư tại cuối lượt.
Lãi ròng Sự chênh lệch giữa số dư cuối cùng và số dư ban đầu.
Giao dịch Tổng số vị thế đóng.
Giao dịch thắng Tổng số giao dịch có lãi đạt được trong lượt.
Giao dịch thua Tổng số giao dịch thua lỗ đạt được trong lượt.
Hệ số lợi nhuận Tỷ lệ tổng lãi/tổng lỗ.
*Mức sụt giảm vốn tức thời tối đa (%) Phần trăm tối đa của mức sụt giảm vốn tức thời.
Mức sụt giảm số dư tối đa (%) Phần trăm tối đa của mức sụt giảm số dư.
Mức sụt giảm vốn tức thời tối đa Mức sụt giảm vốn tức thời tối đa được chỉ định bằng đơn vị tiền gửi tài khoản.
Mức sụt giảm số dư tối đa Mức sụt giảm số dư tối đa được chỉ định bằng đơn vị tiền gửi tài khoản.
Giao dịch trung bình Lợi nhuận trung bình cho tất cả các giao dịch được thực hiện trong lượt.
Tham số lượt chạy Nhấp vào nút Áp dụng trong cột này để áp dụng các tham số từ lượt này cho cBot của bạn.

Chọn một lượt để xem thống kê chi tiết về nó trong phần hiển thị bên dưới lưới trung tâm.

Bảy tab đầu tiên trong phần hiển thị này cung cấp thông tin giống như các tab tương tự trong cửa sổ Backtest. Tab Tham số lượt chạy là duy nhất cho việc tối ưu hóa.

Tham số lượt chạy

Tab Tham số lượt chạy cung cấp thông tin sau.

Image title

cTrader sẽ làm nổi bật tất cả các tham số được tối ưu hóa bằng màu xanh lá cây trong khi bất kỳ tham số cố định nào (không được kích hoạt trong menu Tham số) sẽ không được làm nổi bật.

Lưu và tải kết quả tối ưu hóa

cTrader cũng cho phép lưu và tải kết quả tối ưu hóa vào và từ một tệp .optres được lưu trữ cục bộ.

Ghi chú

Một tệp .optres đơn giản chỉ là một tập hợp các cặp khóa-giá trị với các khóa đại diện cho các cài đặt và số liệu tối ưu hóa khác nhau.

Mẹo

Bạn có thể sử dụng các tệp .optres để tiếp tục tinh chỉnh cBot của mình trên nhiều máy cục bộ mà không mất bất kỳ tiến trình nào. Bạn cũng có thể cung cấp dữ liệu từ tệp này cho các công cụ AI tạo sinh để thử phát hiện bất kỳ mẫu nào trong các lượt mà cBot của bạn đã hoàn thành.

Để lưu kết quả tối ưu hóa, đợi cho đến khi quá trình kết thúc và nhấp vào biểu tượng Lưu. Trong hộp thoại trình khám phá tệp, nhập tên tệp và lưu tệp.

Để tải kết quả tối ưu hóa, nhấp vào biểu tượng Tải và chọn tệp cần thiết trong cửa sổ trình khám phá tệp.

Image title