Chuyên lập trình AmiBroker cho Giao dịch chứng khoán

Thứ 3, 01/07/2025

::

PM
Đầu tư chứng khoán khoa học trên nền tảng phân tích dữ liệu và thống kê
TimeFrameSet - chuyển đổi mảng giá trị sang khung thời gian khác
2023-05-22 21:34:00 2045 Lượt xem

    TimeFrameSet - chuyển đổi mảng giá trị sang khung thời gian khác

    CÚ PHÁP

    TimeFrameSet( interval)

    TRẢ VỀ

    KHÔNG CÓ GÌ

    CHỨC NĂNG

    Hàm TimeFrameSet thay thế các mảng giá trị hiện tại: open, high, low, close, volume, openint, avg bằng các thanh thời gian được nén theo khung thời gian được chỉ định. Khi chuyển sang khung thời gian khác, tất cả các tính toán và các chỉ số tích hợp hoạt động trên khung thời gian được chọn. Để trở lại khoảng thời gian ban đầu, gọi hàm TimeFrameRestore(). Trước khi gọi TimeFrameSet() lần nữa trong cùng một công thức với khung thời gian khác, bạn phải khôi phục lại khung thời gian ban đầu bằng cách sử dụng TimeFrameRestore.
    interval xác định khoảng thời gian khung thời gian theo giây. Ví dụ, 60 đại diện cho khung thời gian 1 phút. Để thuận tiện, các hằng số khoảng thời gian sau đây đã được định nghĩa trước:

    • in1Minute = 60
    • in5Minute = 5 * 60
    • in15Minute = 15 * 60
    • inHourly = 3600
    • inDaily = 24 * 3600
    • inWeekly = 5 * 24 * 3600 + 1 = 432001
    • inMonthly = 25 * 24 * 3600 + 1 = 2160001
    • inQuarterly (mới trong phiên bản 5.20)
    • inYearly (mới trong phiên bản 5.20)

    Để có các khoảng thời gian khác, bạn có thể sử dụng bội số của các khoảng thời gian được định nghĩa trước, ví dụ: (3*in1Minute) tạo ra thanh thời gian 3 phút. Hoặc bạn có thể sử dụng 3 * inDaily để tạo ra thanh 3 ngày.

    Mới trong phiên bản 4.70 và cao hơn: Bạn cũng có thể sử dụng giá trị ÂM cho biểu đồ N-tick: -5 đại diện cho biểu đồ 5 tick. Lưu ý rằng nén N-tick hoạt động chính xác chỉ khi bạn đã chọn khoảng thời gian cơ sở là 1 tick trong cài đặt cơ sở dữ liệu.

    Bạn cũng có thể sử dụng TimeFrameSet để tạo ra các thanh N-volume và thanh Range. Xem hàm TimeFrameMode() để biết thêm chi tiết.

    RẤT QUAN TRỌNG:

    • hằng số inWeekly hiện là 432001 (5*inDaily + 1) - trong phiên bản trước đó là 432000
    • hằng số inMonthly hiện là 2160001 (25*inDaily + 1) - trong phiên bản trước đó là 2160000

    Điều này đã được thay đổi vì hiện tại hỗ trợ các khoảng thời gian tùy chỉnh N-ngày và chúng sẽ gây xung đột với tuần/tháng.
    Lưu ý rằng 5*inDaily khác với inWeekly. 5*inDaily tạo ra thanh 5 ngày KHÔNG NHẤT THIẾT bao gồm thứ Hai-Thứ Sáu, trong khi inWeekly LUÔN TẠO ra các thanh bắt đầu từ Thứ Hai và kết thúc vào Thứ Sáu. Tương tự, 25*inDaily tạo ra thanh 25 ngày KHÔNG NHẤT THIẾT đại diện cho cả tháng, trong khi inMonthly luôn bắt đầu từ ngày đầu tiên của tháng và kết thúc vào ngày cuối cùng của tháng.

    Khi bạn chuyển đổi khung thời gian bằng cách sử dụng TimeFrameSet, tất cả các chức năng AFL hoạt động trên khung thời gian này cho đến khi bạn chuyển lại khung thời gian ban đầu bằng cách sử dụng TimeFrameRestore hoặc chuyển sang khung thời gian khác bằng cách sử dụng lại TimeFrameSet. Điều quan trọng là luôn gọi TimeFrameRestore khi bạn hoàn thành xử lý trong các khung thời gian khác.

    Khi khung thời gian được chuyển sang khác với khoảng thời gian ban đầu, kết quả của tất cả các chức năng được gọi kể từ khi TimeFrameSet được gọi cũng được nén theo thời gian. Nếu bạn muốn hiển thị chúng trong khung thời gian ban đầu, bạn cần 'mở rộng' chúng như đã mô tả sau đây. Các biến được tạo ra và gán trước khi gọi TimeFrameSet() vẫn tồn tại trong khung thời gian mà chúng được tạo ra. Hành vi này cho phép pha trộn không giới hạn các khung thời gian khác nhau trong một công thức duy nhất.

    Vui lòng lưu ý rằng bạn chỉ có thể nén dữ liệu từ khoảng thời gian ngắn hơn sang khoảng thời gian dài hơn. Vì vậy, khi làm việc với dữ liệu 1 phút, bạn có thể nén thành thanh 2, 3, 4, 5, 6, .... N phút. Nhưng khi làm việc với dữ liệu 15 phút, bạn không thể có được thanh 1 phút. Tương tự, nếu bạn chỉ có dữ liệu cuối ngày, bạn không thể truy cập các khung thời gian trong ngày.

    Để biết thêm thông tin, hãy xem: Hướng dẫn: Hỗ trợ nhiều khung thời gian trong AFL

    Ví dụ

    TimeFrameSetin5Minute ); // cài đặt khung tg 5min

    /* MA hiện tại hoạt động trên dữ liệu 5 phút, ma5_13 chứa MA 13 thanh đã được nén khung 5 phút */

    ma5_13 = MAC13 );

     

    TimeFrameRestore(); // khôi phục cài đặt ban đầu

    TimeFrameSetinHourly ); // chuyển sang khung giờ

    mah_9 = EMAC9 ); // MA 9 thanh trên khung giờ

    TimeFrameRestore(); // khôi phục cài đặt ban đầu

    PlotClose"Price"colorWhitestyleCandle );

    // Vẽ các đường MA mở rộng

    PlotTimeFrameExpand( ma5_13, in5Minute), "13 bar moving average from 5 min bars"colorRed );
    PlotTimeFrameExpand( mah_9, inHourly), "9 bar moving average from hourly bars"colorRed );

    Đọc thêm

    Thu gọn

    Bài viết khác:
    Zalo
    Hotline