Xin giúp đỡ cách lọc cổ phiếu chỉ giao dịch thứ 6

Thảo luận trong 'Bàn luận về Amibroker, Metastock, Metatrader 4' bắt đầu bởi Nguyễn Minh Long, 15/11/21.

Lượt xem : 1,968

  1. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Mình đang nhập môn viết code ami, mình ko phỉa dân lập trình nên gà lắm. Mong được chỉ giáo.
    Mình đang muốn lọc cổ phiếu chỉ giao dịch vào thứ 6 mà không biết là hàm nào trả ngày về số để mình làm hàm. Ví dụ:
    Date - Date (liền kề) >6 --> Lọc ra Cổ phiếu chỉ giao dịch thứ 6. Có Bác nào rành chỉ mình với.
    Xin cám ơn các Bác nhiều;
     
    Hungtqhp thích bài này.
  2. Đang tải...

    Bài viết tương tự Diễn đàn Date
    nhờ các cao thủ giúp đỡ code amibroker về volume Bàn luận về Amibroker, Metastock, Metatrader 4 22/10/24
    CÁC CAO NHÂN SỬA GIÚP TÔI ĐOẠN CODE NÀY ĐỂ CHẠY AMI 6 NHÉ. TÔI CẢM ƠN, TÔI SỬA SAI LẠI CÀNG THÊM SAI Bàn luận về Amibroker, Metastock, Metatrader 4 31/7/24
    Nhờ các bác cao thủ sửa giúp e đoạn code sau Bàn luận về Amibroker, Metastock, Metatrader 4 24/6/24
    Nhờ giúp viết đoạn code lọc kết quả kinh doanh quý I năm 2024 cho AmiBroker Bàn luận về Amibroker, Metastock, Metatrader 4 27/4/24
    Nhờ giúp viết đoạn code sau Bàn luận về Amibroker, Metastock, Metatrader 4 20/4/24

  3. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    Dùng hàm DayOfWeek()
     
    Danielkhanhnguyen, via a mobile device, 15/11/21
    #2
  4. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Bán có thể chỉ rỏ hơn giúp mình câu lệnh này được không. vì mình đọc hướng dẫn mình chỉ hiểu nếu trả giá trị (dayofweek) = 5 (tức là thứ 6) thì vẫn tồn tại các cổ phiếu giao dịch từ thứ 2- thứ 6. Mình chỉ muốn kết quả lọc chỉ là hạn chế chỉ giao dịch vào thứ 6 thui. Cám ơn bạn đã quan tâm và chia sẽ.
    upload_2021-11-16_10-56-3.png
     
  5. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    Ý bạn là lọc ra các cp ít được giao dịch vào thứ 6?
     
    Nguyễn Minh Long thích bài này.
  6. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    minVolume = Param( "MinVol", 100000, 50000, 10 ^ 20 );
    DoW = Param("DayOfWeek", 5, 0, 6, 1);

    Filter = DayOfWeek() == DoW AND V >= minVolume;
    Buy = Sell = Cover = Short = 0;

    SetSortColumns( -2 );
     
    Nguyễn Minh Long thích bài này.
  7. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Cám ơn bạn đã nhiệt tình giúp mình. Ý mình là mình muốn lọc ra danh sách toàn bộ cổ phiếu chỉ giao dịch vào thứ 6 á bạn. Còn các cổ phiếu giao dịch từ thứ 2-6 thì mình loại ra không cho vào danh sách lọc. Minh vẫn chưa tìm ra câu lệnh đó
     
  8. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Để mình dựa vào câu này xem có được ko ? Tks bạn nha.
     
  9. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Mình không làm được rồi bạn. hix, bạn có cách nào ko?
     
  10. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    Trong tuần một CP chỉ giao dịch vào thứ 6, các ngày khác không giao dịch thị chỉ có CP chết thôi bạn ạ.
    Chúc bạn may mắn với ý tưởng này!
     
    Nguyễn Minh Long thích bài này.
  11. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Tks Bạn nhé.
     
  12. Hokza

    Hokza Member

    Tham gia ngày:
    3/10/21
    Bài viết:
    8
    Đã được thích:
    7
    Giới tính:
    Nam
    Thế thì tìm danh sách các cổ phiếu bị vào diện kiểm soát đặc biệt rồi tự tạo watchlist chứ code chi cho mắc công vậy
     
    Hokza, via a mobile device, 16/11/21
    #11
    Hungtqhp and Danielkhanhnguyen like this.
  13. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    Vì bạn chỉ copy & paste nên no ko ra.
    Nếu bạn chỉnh sửa code lại tí như sau:

    minVolume = Param( "MinVol", 0, 50000, 10 ^ 20 );
    DoW = Param("DayOfWeek", 5, 0, 6, 1);

    Filter = (DayOfWeek() == DoW AND V > minVolume) AND (DayOfWeek() != DoW AND V = 0);
    Buy = Sell = Cover = Short = 0;

    SetSortColumns( -2 );


    thì sẽ đạt được theo yêu cầu của bạn. Nhưng bạn tin mình đi, lọc không ra CP nào cả :)
     
    Danielkhanhnguyen, via a mobile device, 17/11/21
    #12
    Nguyễn Minh Long thích bài này.
  14. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Công nhận bạn nhiệt tình thật :D Cám ơn nhiều nha. Chắc do mình chưa trình bày rõ vì mục đích mình muốn lọc ra cổ phiếu chỉ giao dịch thứ 6 như, PPI, TOP thôi. Mình hiểu code bạn thế này đúng ko nha:

    minVolume = Param( "MinVol", 0, 50000, 10 ^ 20 ); // giới hạn vol bé nhất trên 50000
    DoW = Param("DayOfWeek", 5, 0, 6, 1); // gán biến dow là các ngày thứ 7, chủ nhật , thứ 2, thứ 6 )

    Filter = (DayOfWeek() == DoW AND V > minVolume) AND (DayOfWeek() != DoW AND V = 0); // Khi ngày giao dịch là thứ 2,6,7,chủ nhật và khối lượng lớn hơn 50000 và ngày giao dịch khác với thứ 2,6,7,chủ nhật và khối lượng = 0. Thì lọc ra cổ.
    Buy = Sell = Cover = Short = 0;

    SetSortColumns( -2 );

    ==> hix, đúng là ko tồn tại cổ nào như vậy bạn à.
    Có thể có hàm kiểu ngày giao dịch là thứ 6 thì có VOL>0 VÀ ngày giao dịch khác thứ 6 thì VOL=0 không bạn nhỉ ? . Lúc này có thể lọc ra cổ chỉ giao dịch thứ 6.
    Mình sửa lệnh bạn lại như thế này mà lọc ko ra luôn; chắc do mình hiểu sai về lập trình;
    minVolume = Param( "MinVol", 0, 5000, 10 ^ 20 );
    Filter = (DayOfWeek() == 5 AND V > minVolume) AND (DayOfWeek() != 5 AND V = 0);
    AddColumn(C,"GIA DONG CUA");
    AddColumn(V, "KHOI LUONG");

     
  15. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    Bạn chưa hiểu đúng về đoạn code trên.
    Theo bạn như thế nào là CP có giao dịch vào 1 ngày đó trong tuần?
     
    Nguyễn Minh Long thích bài này.
  16. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    --> Theo mình thì cổ giao dịch thứ 6 là gồm (cổ giao dịch cả tuần như VNM và cổ hạn chế giao dịch chỉ thứ 6 như PPI)


    Mình hiểu rồi data của các ngày thứ 2,3,4,5 đối với cổ chỉ giao dịch thứ 6 như PPI không tồn tại nên không thể gán V=0 được. nên ko lọc ra được cổ phiếu nào. vậy có câu lệnh nào vào các ngày giao dịch là thứ 2,3,4,5 thì không tồn tại dữ liệu giao dịch trong data không nhỉ ?
     
  17. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    Bạn trả lời được câu hỏi này là vấn đề của bạn đã được giải đáp rồi
     
  18. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Mình cũng cố tìm mà không ra vì mình hiện tại kiến thức về lập trình rất lơ mơ.
    Bạn có thể giúp mình đoạn lệnh này không:
    "Trong khoảng thời gian từ A--> B
    nếu cổ phiếu nào không cóTổn (Vol (Thứ 2) +Vol (Thứ 3)+Vol (Thứ 4)+Vol (Thứ 5)) >=0 thì lọc ra cổ đó."

    Nếu không có thì cũng rất cám ơn bạn vì đã rất nhiệt tình;
     
  19. Danielkhanhnguyen

    Danielkhanhnguyen Well-Known Member

    Tham gia ngày:
    15/9/21
    Bài viết:
    133
    Đã được thích:
    105
    Giới tính:
    Nam
    totalFromMon2Thurs = False;

    for(i = 1; i<= 4; i++){
    IIf(DayOfWeek() == i AND V > 0, totalFromMon2Thurs = True, totalFromMon2Thurs = False);
    _TRACE("totalFromMon2Thurs: " + totalFromMon2Thurs);
    }

    Filter = totalFromMon2Thurs != True AND DayOfWeek() == 5;
    Buy = Sell = Cover = Short = 0;

    SetSortColumns( -2 );

    Mình thành thật khuyên bạn, nếu bạn không phải là người chuyên lập trình thì bạn nên để dành thời gian nghiên cứu những thứ khác hữu ích cho việc giao dịch của bạn (mặc dù bạn vẫn có thể làm được nếu cố gắng với nhiều nỗ lực, điều đó là rất ấn tượng).
    Bạn nên ghé thăm site https://traderviet.com/ sẽ có nhiều thứ để bạn học hơn nhiều.
    Còn nếu như bạn vẫn muốn học code AFL trên Amibroker thì ghé thăm 4fum https://forum.amibroker.com, bạn sẽ học được nhiều thứ.
    Chúc bạn may mắn trên hành trình của mình!
     
    Nguyễn Minh Long thích bài này.
  20. Nguyễn Minh Long

    Nguyễn Minh Long Member

    Tham gia ngày:
    15/11/21
    Bài viết:
    23
    Đã được thích:
    3
    Giới tính:
    Nam
    Cám ơn bạn đã có lời khuyên rất chân tình, diễn đàn sẽ lớn mạnh khi có những người nhiệt tình và có tâm giống Bạn. Chúc bạn sức khỏe và bình an;
     
    Danielkhanhnguyen thích bài này.
  21. sontung266

    sontung266 Member

    Tham gia ngày:
    23/7/21
    Bài viết:
    11
    Đã được thích:
    3
    Giới tính:
    Nam
    Tìm các cổ có giá đóng cửa thứ 2 đến thứ 5 bằng giá thứ 6 gần nhất. Lọc sơ vậy là ra full rồi. Thích thì thêm vol thứ 2 đến thứ 5 = 0 nữa.
     
    sontung266, via a mobile device, 17/2/22
    #20
    GoldenDragon and Emcocghe like this.

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

Chia sẻ trang này