[Thủ thuật Amibroker] Sự khác nhau giữa SCAN và EXPLORATION khi chạy bộ lọc - nhà đầu tư lưu ý gì ?

Thảo luận trong 'Bàn luận về Amibroker, Metastock, Metatrader 4' bắt đầu bởi tinychau, 29/7/19.

Lượt xem : 7,375

  1. tinychau

    tinychau Cọp săn bò

    Tham gia ngày:
    22/10/18
    Bài viết:
    110
    Đã được thích:
    70
    Giới tính:
    Nam
    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata.png

    Sau khi hiểu được nguyên lý hoạt động của Amibroker dựa trên nguyên lý vectorization (tính toán dựa trên các mảng có sẵn như OHLC hay volume), ở bài viết này tôi sẽ phân tích về chức năng Scan và Exploration trong Amibroker.


    Một trong những tính năng mạnh nhất của Amibroker là khả năng quét (screen) hàng trăm cổ phiếu trong thời gian thực (real-time) và theo dõi tín hiệu giao dịch tương ứng. Việc quét này được thực hiện bởi chức năng “Scan” và “Exploration”.

    Điểm khác biệt quan trọng nhất giữa Scan và Exploration là việc Exploration cho phép người dùng tùy chỉnh các output được hiện ra trong cửa sổ Analysis, trong khi Scan chỉ thực việc công việc tìm kiếm các tín hiệu buy/sell/short/cover và hiển thị chúng bằng các cột được định dạng từ trước.

    Giả sử tôi mô phỏng 1 trading strategy dựa vào tin hiệu của MACD và Signal Line như đoạn code bên dưới:

    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-1.png
    sau khi paste code vào formula rồi send to automatic analysis, tôi click scan và được kết quả như hình bên dưới:

    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-2.png

    Về cơ bản, chức năng của Scan chỉ có vậy. Amibroker sẽ quét tìm trong database lần lượt từng ngày các mã cổ phiếu thỏa mãn trading rule (buy/sell) mà người dùng input vào, mỗi khi các tín hiệu thỏa mãn, Amibroker sẽ trả về 1 row các giá trị bao gồm Symbol, Trade, Date và Close như hình phía bên trên.

    Tiếp theo là chức năng exploration. Chức năng này mạnh hơn scan rất nhiều bởi người dùng có thể tự định nghĩa các giá trị trả về cho column, không còn giới hạn bởi 4 cột như scan.

    Giả sử tôi muốn quét toàn bộ database của HOSE và HNX, sau đó trả về tên mã cổ phiếu (Symbol), Ngày (Date), Giá đóng cửa (Close) và khối lượng (Volume), tôi sẽ viết đoạn code như sau:

    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-3.png

    Đầu tiên là dòng Filter = 1. Exploration trong Amibroker yêu cầu người dùng sử dụng hàm Filter khi sử dụng chức năng exploration, nếu trong code không có hàm Filter, exploration sẽ không chạy. Filter = 1 được dùng để quét toàn bộ các mã có trong cửa sổ apply to trong automatic analysis. Giả sử tôi để apply to: All quotes, amibroker sẽ quét toàn bộ các mã có trong database. Nếu chuyển thành apply to: watchlist0, amibroker sẽ quét toàn bộ các mã có trong watchlist0. Ngoài ra trong exploration, người dùng có thể chọn range tùy ý trên thanh công cụ, có thể là 1 recent-bar hoặc 1 khoảng nào đó (from … to …). Hàm AddColumn được dùng để tạo các cột trong output của Automatic Analysis, có thể check help index để xem chi tiết các parameters cần thiết để pass vào function. Lưu ý là khi dùng hàm exploration, mặc định sẽ có 2 cột là Ticker và Date/Time, người dùng không nhất thiết phải thêm vào.

    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-4.png

    Xong phần cơ bản, giờ tôi sẽ đào sâu thêm 1 chút về hàm Filter. Ở mặt code, giá trị để truyền vào hàm Filter sẽ có dạng boolean. Ở ví dụ trên, Filter = 1 tương đương Filter = True. Giờ giả sử tôi muốn lọc ra các cổ phiếu có khối lượng giao dịch lớn hơn 10000 trong phiên gần nhất, tôi sẽ đặt Filter = Volume > 10000, Hàm Filter sẽ trả về các ticker trong danh sách apply to thỏa mãn điều kiện trên, sau đó các hàm phía dưới Filter sẽ thực hiện dựa trên list trả về bởi hàm filter. Giả sử tôi có mã KDC, VGC và AAM trong watchlist. Hàm Filter phía trên sẽ lọc từ watchlist ra 2 mã thỏa mãn là KDC và VGC, sau đó các hàm Addcolumn phía bên dưới sẽ thực hiện nhiệm vụ dựa trên 2 mã này, mã AAM bị loại bỏ. Thử đoạn code bên dưới với apply to: All symbols và range : 1 recent-bar

    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-5.png su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-6.png

    Amibroker cũng hỗ trợ thêm màu sắc vào trong các cột cũng như thêm các cột có giá trị String (không phải số hay ngày tháng). Đoạn code bên dưới sẽ minh họa ý tương này,

    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-7.png

    Đoạn code này sẽ in ra các cột màu đỏ nếu Giá đóng cửa và khối lượng thấp hơn ngày hôm trước, màu xanh nếu ngược lại. Ngoài ra còn in thêm 2 cột có giá trị String tương ứng với Close và Volume.

    su-khac-nhau-giua-scan-va-exploration-khi-chay-bo-loc-nha-dau-tu-luu-y-gi-kakata-8.png

    Về mặt cơ bản, thế là hết cho scan và exploration. Giờ trader có thể tự thiết kế bộ lọc của riêng mình với các indicator cũng như các hàm khác nhau trong amibroker. Giả sử muốn lọc RSI > 70 và RSI < 30 chỉ cần type Filter = RSI > 70 or RSI < 30; hay muốn in ra các column thể hiện giá trị MA30 thì chỉ cần AddColumn(MA(30), “MA30”, 1.2); là xong. Ý tưởng thiết kế nội dung là của các bạn.

    Phần sau tôi sẽ nói về Backtesting interface trong amibroker, một trong những công cụ hay ho nhất của phần mềm này.


    Xem thêm:

    >> Thư viện Amibroker của Kakata
     
  2. Đang tải...

    Bài viết tương tự Diễn đàn Date
    [Thủ thuật Amibroker] Cách hiển thị hai khung thời gian cùng lúc cho một mã cổ phiếu Bàn luận về Amibroker, Metastock, Metatrader 4 15/8/21
    [Thủ thuật Amibroker] Cơ bản về AFL Amibroker cho người mới Bàn luận về Amibroker, Metastock, Metatrader 4 14/9/19
    [Thủ thuật Amibroker] Hướng dẫn tạo watchlist và điều chỉnh màu sắc cho biểu đồ giá Bàn luận về Amibroker, Metastock, Metatrader 4 28/8/19
    [Thủ thuật Amibroker] Hướng dẫn cài đặt indicator và chạy bộ lọc Bàn luận về Amibroker, Metastock, Metatrader 4 16/7/19
    Bình chọn các tiêu chí kỹ thuật và thang điểm để xây dựng bộ lọc và điểm mua điểm bán Bàn luận về Amibroker, Metastock, Metatrader 4 27/2/23

  3. dungpc80

    dungpc80 Guest

    Các bác cho hỏi đoạn code vẽ RS này bị lỗi gì vậy?
    base = ParamStr("RS base ticker", GetBaseIndex());
    Plot( RelStrength (base), _SECTION_NAME() + "(" + base + ")", ParamColor( "color", colorCycle ), ParamStyle("Style") );
    nó báo thế này: "2nd agument of the 'plot()' call has incorrect type. The function expected 'a string' here but found 'a number'
     
  4. tinychau

    tinychau Cọp săn bò

    Tham gia ngày:
    22/10/18
    Bài viết:
    110
    Đã được thích:
    70
    Giới tính:
    Nam
    Mình chịu bác ạ, mình chỉ biết dùng chứ không biết code.
     

Lượt bình luận : 2

Chia sẻ trang này