Code đưa toàn bộ list vừa lọc filter sang watchlist

Thảo luận trong 'Bàn luận về Amibroker, Metastock, Metatrader 4' bắt đầu bởi nguyenjoe, 13/9/21.

Lượt xem : 7,234

  1. nguyenjoe

    nguyenjoe Well-Known Member

    Tham gia ngày:
    18/7/21
    Bài viết:
    93
    Đã được thích:
    166
    Giới tính:
    Nam
    [​IMG]

    Sau khi lọc xong, việc mở từng chart để xem có phần hơi rắc rối vì phải bật qua bật lại giữa analysis và chart. Thêm đoạn code sau vào dưới cùng đoạn mã filter sẽ giúp bạn add các mã vào đúng watchlist bạn mong muốn.

    Dòng đầu tiên listnum chính là gán watchlist nên các bạn tự sửa lại cho từng bộ lọc để tránh trùng nhau. Ví dụ mình muốn nó vào list đầu tiên đặt tên là RS thì để listnum =0, nếu muốn vào list thứ 2 tên là KQKD thì để listnum=1. Chú ý mỗi lần chạy nó tự xóa mã cũ và thay thế bằng kết quả lọc mới nhất nhé.

    upload_2021-9-13_18-7-5.png

    listnum = 0; // we use watchlist 10 for storing results
    // erase the watchlist when we process very first symbol
    if ( Status( "stocknum" ) == 0 )
    {
    // retrieve watchlist members
    oldlist = CategoryGetSymbols( categoryWatchlist, listnum );
    // iterate through the list and remove tickers
    for ( i = 0; ( sym = StrExtract( oldlist, i ) ) != ""; i++ )
    {
    CategoryRemoveSymbol( sym, categoryWatchlist, listnum );
    }
    }
    // check how many times Filter variable was true in the tested range
    // if non-zero value detected, add current symbol to a watchlist
    if ( LastValue( Cum( Filter AND Status( "barinrange" ) ) ) )
    CategoryAddSymbol( "", categoryWatchlist, listnum );


    UPDATE: Vì code này liên quan đến đẩy mã cổ phiếu vào watchlist nên mình post đây luôn. Đây là code tự động đẩy các mã cổ phiếu vào các watchlist 0 1 2 3 4 ... theo ngành dành cho ai sử dụng data fireant. Các bạn tự sửa lại tên watchlist cho phù hợp
    - Watchlist 0 là tất cả CP thỏa điều kiện volume > 100000 và GTGD trung bình 50 phiên trên 20 tỷ.
    - Watchlist 1: Ngân hàng
    - Watchlist 2: Chứng khoán
    - Watchlist 3: BDS
    - Watchlist 4: XD - VLXD
    - Watchlist 5: Hàng hóa
    - Watchlist 6: Bán Lẻ - công nghệ
    - Watchlist 7: Năng Lượng - dầu khí
    - Watchlist 8: Tiêu dùng
    - Watchlist 9: Vận tải
    - Watchlist 10: Khác

    Mã:
    dkvol = V>100000 AND C*MA(V,50)>20000000 ;
    Filter= dkvol  ;
    _SECTION_END();
    listnum0 = 0;
    listnum1 = 1;
    listnum2 = 2;
    listnum3 = 3;
    listnum4 = 4;
    listnum5 = 5;
    listnum6 = 6;
    listnum7 = 7;
    listnum8 = 8;
    listnum9 = 9;
    listnum10 = 10;
    
    // erase the watchlist when we process very first symbol
    
    if( Status("action") == actionExplore )
    {
    if ( Status( "stocknum" ) == 0 )
    {
        // retrieve watchlist members
        list0 = CategoryGetSymbols( categoryWatchlist, listnum0 );
        list1 = CategoryGetSymbols( categoryWatchlist, listnum1 );
        list2 = CategoryGetSymbols( categoryWatchlist, listnum2 );
        list3 = CategoryGetSymbols( categoryWatchlist, listnum3 );
        list4 = CategoryGetSymbols( categoryWatchlist, listnum4 );
        list5 = CategoryGetSymbols( categoryWatchlist, listnum5 );
        list6 = CategoryGetSymbols( categoryWatchlist, listnum6 );
        list7 = CategoryGetSymbols( categoryWatchlist, listnum7 );
        list8 = CategoryGetSymbols( categoryWatchlist, listnum8 );
        list9 = CategoryGetSymbols( categoryWatchlist, listnum9 );
        list10 = CategoryGetSymbols( categoryWatchlist, listnum10 );
     
        // iterate through the list and remove tickers
        for ( i = 0; ( sym = StrExtract( list0, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum0 );
        }
        for ( i = 0; ( sym = StrExtract( list1, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum1 );
        }
        for ( i = 0; ( sym = StrExtract( list2, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum2 );
        }
        for ( i = 0; ( sym = StrExtract( list3, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum3 );
        }
        for ( i = 0; ( sym = StrExtract( list4, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum4 );
        }
        for ( i = 0; ( sym = StrExtract( list5, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum5 );
        }
        for ( i = 0; ( sym = StrExtract( list6, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum6 );
        }
        for ( i = 0; ( sym = StrExtract( list7, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum7 );
        }
         for ( i = 0; ( sym = StrExtract( list8, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum8 );
        }
        for ( i = 0; ( sym = StrExtract( list9, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum9 );
        }
        for ( i = 0; ( sym = StrExtract( list10, i ) ) != ""; i++ )
        {
            CategoryRemoveSymbol( sym, categoryWatchlist, listnum10 );
        }
    }
    
    // check how many times Filter variable was true in the tested range
    // if non-zero value detected, add current symbol to a watchlist
    if ( LastValue( Cum( Filter AND Status( "barinrange" ) ) )  )
        {
            CategoryAddSymbol( "", categoryWatchlist, listnum0 );
     
            if ( StrFind(IndustryID(1) , "Ngan hang"))
            CategoryAddSymbol( "", categoryWatchlist, listnum1 );
       
            else if ( StrFind(IndustryID(1) , "Cong ty Chung khoan"))
                CategoryAddSymbol( "", categoryWatchlist, listnum2 );
       
            else if ( StrFind(IndustryID(1) , "Dau tu bat dong san va dich vu"))
                CategoryAddSymbol( "", categoryWatchlist, listnum3 );
       
            else if (StrFind (IndustryID(1) , "Xay dung va vat lieu xay dung"))
                CategoryAddSymbol( "", categoryWatchlist, listnum4 );
       
            else if(StrFind(IndustryID(1) , "Hoa chat") OR StrFind(IndustryID(1) , "Khai khoang")  OR StrFind(IndustryID(1) , "Kim loai cong nghiep") OR StrFind(IndustryID(1) , "Lam nghiep va giay"))
                CategoryAddSymbol( "", categoryWatchlist, listnum5 );
       
            else if( StrFind(IndustryID(1) , "Ban le chung") OR StrFind(IndustryID(1) , "Cong nghe phan cung va thiet bi")  OR StrFind(IndustryID(1) , "Phan mem va dich vu dien toan") )
                CategoryAddSymbol( "", categoryWatchlist, listnum6 );
       
            else if(StrFind(IndustryID(1) , "Nang luong thay the") OR StrFind(IndustryID(1) , "Thiet bi")  OR StrFind(IndustryID(1) , "San xuat dau khi") OR StrFind(IndustryID(1) , "Dien"))
                CategoryAddSymbol( "", categoryWatchlist, listnum7 );
       
            else if( StrFind(IndustryID(1) , "San xuat thuc pham") OR StrFind(IndustryID(1) , "Do dung ca nhan")  OR StrFind(IndustryID(1) , "Hang gia dung") OR StrFind(IndustryID(1) , "Oto va linh kien oto"))
                CategoryAddSymbol( "", categoryWatchlist, listnum8 );
       
            else if (StrFind (IndustryID(1) , "Van tai"))
                CategoryAddSymbol( "", categoryWatchlist, listnum9 );
       
            else
            CategoryAddSymbol( "", categoryWatchlist, listnum10 );
        }
    }
     
    Chỉnh sửa cuối: 10/8/23
    thanhthai63, Hungtqhp, Gnut20 and 3 others like this.
  2. Đang tải...

    Bài viết tương tự Diễn đàn Date
    Bộ code Smart Money Concept cho Ami. Bàn luận về Amibroker, Metastock, Metatrader 4 8/12/24
    Code Đường Trung bình thông minh tự chuyển đổi Bàn luận về Amibroker, Metastock, Metatrader 4 16/11/24
    Chia sẻ ae bộ code Tradingview : ichimoku - BB - Fibo - Ma - ICT trong 1 chỉ báo Bàn luận về Amibroker, Metastock, Metatrader 4 5/11/24
    nhờ các cao thủ giúp đỡ code amibroker về volume Bàn luận về Amibroker, Metastock, Metatrader 4 22/10/24
    Code ami phân tích cung cầu Bàn luận về Amibroker, Metastock, Metatrader 4 21/10/24

  3. tham81

    tham81 New Member

    Tham gia ngày:
    15/8/21
    Bài viết:
    3
    Đã được thích:
    1
    Giới tính:
    Nam
    báo lỗi như này là sao bác, xin hướng dẫn sửa ạ
    upload_2021-9-16_16-24-56.png
     
    Hungtqhp thích bài này.
  4. nguyenjoe

    nguyenjoe Well-Known Member

    Tham gia ngày:
    18/7/21
    Bài viết:
    93
    Đã được thích:
    166
    Giới tính:
    Nam
    trong code của bác phải có filter chứ không thì nó chạy ra gì đâu.
     
  5. tham81

    tham81 New Member

    Tham gia ngày:
    15/8/21
    Bài viết:
    3
    Đã được thích:
    1
    Giới tính:
    Nam
    là sao bác,xin bác hướng dẫn cụ thể được không ạ?
     
  6. Hoàng Duẩn

    Hoàng Duẩn Member

    Tham gia ngày:
    20/8/21
    Bài viết:
    19
    Đã được thích:
    13
    Giới tính:
    Nam
    Cái này đâu cần code đâu bác, lọc xong bác add vào 1 whatlist ở thẻ Symbol là dc
     
  7. le hoang chau

    le hoang chau New Member

    Tham gia ngày:
    8/9/21
    Bài viết:
    2
    Đã được thích:
    0
    Giới tính:
    Nam
    Bác thay Filter thành điều kiện lọc của bác, như mình thì mình thay chỗ Filter thành Buy
     
  8. mejtoostudio

    mejtoostudio New Member

    Tham gia ngày:
    12/9/21
    Bài viết:
    1
    Đã được thích:
    0
    tuyệt vời, cảm ơn bác nhiều nhé. Dùng rất ok.
     
  9. LÊ NGUYÊN HƯNG

    LÊ NGUYÊN HƯNG New Member

    Tham gia ngày:
    22/9/21
    Bài viết:
    3
    Đã được thích:
    1
    Giới tính:
    Nam
    Quá hay, cảm ơn ad rất nhiều
     
  10. nguyenjoe

    nguyenjoe Well-Known Member

    Tham gia ngày:
    18/7/21
    Bài viết:
    93
    Đã được thích:
    166
    Giới tính:
    Nam
    đúng rồi mà mất công thêm thao tác và phải xóa list cũ đi chứ ko thì nó sẽ add thêm vào đó bác. Code thì nó tự xóa list cũ luôn
     
    Hungtqhp and Hoàng Duẩn like this.
  11. quocvu1984

    quocvu1984 New Member

    Tham gia ngày:
    18/9/21
    Bài viết:
    1
    Đã được thích:
    0
    Giới tính:
    Nam
    xin các bác hướng dẫn tôi lộc với ah. xin cảm ơn
     
  12. Hungtqhp

    Hungtqhp Well-Known Member

    Tham gia ngày:
    17/8/21
    Bài viết:
    127
    Đã được thích:
    43
    Giới tính:
    Nam
    Copy đoạn code trên đặt dưới dòng có chữ "Filter".
     
  13. CHYLY

    CHYLY New Member

    Tham gia ngày:
    11/7/23
    Bài viết:
    3
    Đã được thích:
    1
    Giới tính:
    Nam
    ngon. cảm ơn
     
  14. CK Stock

    CK Stock Member

    Tham gia ngày:
    20/8/21
    Bài viết:
    15
    Đã được thích:
    2
    Giới tính:
    Nam
    Sao mình lọc nó ko vào list số 3 trong Symbols hả bác? upload_2023-8-8_16-7-47.png
    upload_2023-8-8_16-2-12.png
     

    Các file đính kèm:

    minhnhan3 thích bài này.
  15. nguyenjoe

    nguyenjoe Well-Known Member

    Tham gia ngày:
    18/7/21
    Bài viết:
    93
    Đã được thích:
    166
    Giới tính:
    Nam
    update thêm tự động phân ngành vào watchlist đối với các bác dùng data có phân ngành sẵn như fireant hoặc fialda nhé
     
    minhnhan3 thích bài này.

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

Chia sẻ trang này