Cách lọc ra những cổ phiếu theo điều kiện

Chủ đề trong 'Thị trường chứng khoán' bởi thanh_bkhn1984, 16/11/2016.

1448 người đang online, trong đó có 579 thành viên. 21:21 (UTC+07:00) Bangkok, Hanoi, Jakarta
  1. 1 người đang xem box này (Thành viên: 0, Khách: 1)
Chủ đề này đã có 46034 lượt đọc và 107 bài trả lời
  1. xfarmer

    xfarmer Thành viên rất tích cực

    Tham gia ngày:
    28/12/2009
    Đã được thích:
    40
    Trước phải định nghĩa tích lũy như nào rồi nói tiếp:
    Tôi định nghĩa như sau: Tích lũy là quá trình giao dịch trong 1 biên độ nào đó & trong 1 thời gian nào đó.

    + ở đây có 2 biên số: Biên độ biến động của giá: ví dụ 15%.

    + Thời gian giá cp đi trogn biên độ đó. ví dụ 5 phiên

    + Tính toán biên độ đơn giản dựa trên giá thấp nhất & cao nhất trong giai đoạn đó rồi so biến động đó với điểm trong bình.

    Đoạn code sau scan những cổ phiếu biến động 15% trong 5 phiên (các tham số này đều thay đổi đc)


    frsw=ParamToggle("Turn on Trading Range Scan","OFF|ON",0);
    Range_Perc=Param("Max Ranging %%",15,5,500);
    Range_Lookback=Param("History Lookback",5,3,500);
    ranging=100*2*(HHV(H,Range_Lookback)-LLV(L,Range_Lookback))/(HHV(H,Range_Lookback)+LLV(L,Range_Lookback));
    Filter_TradingInRange=(1-frsw)+frsw*(Ranging <=Range_Perc);

    Filter=Filter_TradingInRange;
    Addcolumn(Filter_TradingInRange,"Tich luy");

    _SECTION_END();

    Note: Đoạn code trên mặc định để off. Các bác phải ON lên nó mới chạy.
    --- Gộp bài viết, 11/12/2016, Bài cũ: 11/12/2016 ---
    Chọn tham số rồi chạy thôi.
    2-3 tháng = khoảng 44-65 phiên. Bạn có thể chọn 50 phiên.

    Biên độ 50 phiên = 20%; hoặc hớn hơn;nhỏ hơn thì tùy.
  2. xfarmer

    xfarmer Thành viên rất tích cực

    Tham gia ngày:
    28/12/2009
    Đã được thích:
    40
    // CODE đếm CP tăng; giảm trên dữ liệu Amibroker.
    // NOTE: Hàng ngày phải chạy Scan công thức này để amibroker xuất dữ liệu sổ cp tăng giảm đến ngày đó.

    Buy=0;
    Filter=0;


    // _stock_included=CategoryGetName(categoryMarket,0)=="Vietnam";
    //
    AddToComposite((C>Ref(C,-1))*_stock_included,"~T1A","X",7);
    AddToComposite((CRef(C,-1))*V,"~T1A","V",7);
    AddToComposite((C<Ref(C,-1))*V*_stock_included,"~T1D","V",7);
    AddToComposite((C==Ref(C,-1))*V*_stock_included,"~T1U","V",7);

    t1up = Foreign("~T1A","C",1); // Số cổ phiếu tăng giá

    t1down = Foreign("~T1D","C",1);// Số cổ phiếu giảm giá
    t1upvol=Foreign("~T1A","V"); // Tổng KL khớp lệnh của các CP tăng giá.
    t1downvol=Foreign("~T1D","V"); // Tổng KL khớp lệnh các CP giảm giá.


    // Đến đây thì các bác làm gì với cái dữ liệu này thì làm.
    // Cách 1. Trừ trực tiếp rồi vẽ. Thậm chí các bác có thể làm mượt trước khi trừ = cách tính toán tất cả dựa trên MA của chúng.

    //d=t1up-t1down; // hoặc d= EMA(t1up,5)-EMA(T1down);//

    // Cách 2. Chia ra rồi vẽ theo tỷ lệ. Rồi đưa tất cả về dạng chuẩn biên độ 0-100.

    type=ParamToggle("Type of AD","Subtract|Rating",1); // Chon cach thuc ve
    Color=ParamColor("T2AD",colorOrange); // chon color
    smth=ParamToggle("Make it smooth","No|Yes",0); // Lam muot du lieu hay ko truoc khi tinh toan
    if(type)
    {
    rate=(smth*EMA(t1up,5)+t1up*(1-smth))/(t1down*(1-smth)+smth*EMA(t1down,5));
    Plot(100,"zero ref",colorBlack,styleLine|styleDashed|styleNoTitle);
    Plot( 100*(1-(1-rate)/(1+rate)),_DEFAULT_NAME(),Color,ParamStyle("Style",styleThick));
    }
    else
    {
    rate=(1-smth)*(t1up-t1down)+smth*(EMA(t1up,5)-EMA(t1down,5));
    Plot(0,"zero ref",colorBlack,styleLine|styleDashed|styleNoTitle);
    Plot( rate,_DEFAULT_NAME(),Color,styleHistogram);
    Plot( rate,_DEFAULT_NAME(),Color,styleLine|styleNoTitle);
    }
    --- Gộp bài viết, 11/12/2016, Bài cũ: 11/12/2016 ---
    Có 1 vấn đề là nhiều khi dữ liệu các bác có cả dữ liệu cung cầu, vàng dầuloạn xạ. lúc đó cần phải lọc 1 lần nữa bằng cách tạo 1 watchlist chứa danh sách những cp cần đếm ( cả HNX; HSX). Rồi thêm lệnh check cp nằm trong watchlist đó nữa là xong

    ví dụ watchlist đó là watchlist đầu tiên. watchlist(0);


    lệnh là:
    iwl=inwatchlist(0);
    if(inwl)
    {
    đoạn mã lệnh trên; copy từ đầu đến cuối luôn; trừ 2 cài buy & filter.
    }
  3. xfarmer

    xfarmer Thành viên rất tích cực

    Tham gia ngày:
    28/12/2009
    Đã được thích:
    40
    Nhiều cách:
    // 1. ADX:
    n=14;
    uptrd=adx(n)>25 and pdi(n)>mdi(n) ;
    2. MA:
    //+ Giá >MA; MA hướng lên....
    periodS=Param("Period of Short-term",15,3,300); // MA15 xac dinh xu huong ngan han
    periodM=Param("Period of Mid-term",50,3,200);// MA50 trung han
    periodL=Param("Period of Long-term",100,3,200); // MA100 dai han

    // Su dung ham LinRegSlope() de xac dinh do doc cua 1 duong. >0 la huong len; 0) and (C>MA(C,periodS)); //Uptrend ngắn hạn

    trend_mid=(LinRegSlope(MA(C,periodM),2)>0) and (C>MA(C,periodM)); // Uptrend trung hạn
    trend_long=(LinRegSlope(MA(C,periodL),2)>0) and (C>MA(C,periodL)); // Uptrend dài hạn

    // Đến đây thì dùng filter là ra thôi.
    //3. MACD..
  4. thanh_bkhn1984

    thanh_bkhn1984 Thành viên gắn bó với f319.com

    Tham gia ngày:
    17/11/2013
    Đã được thích:
    257
    Các bác cho e hỏi. Tìm những cổ phiếu mới vượt MA100, trước đó khoảng 100 phiên nó chưa vượt thì code ntn phải không ah:
    F=cross(C,MA(C,100)) and Ref(HHV(C,100),-1)<MA(C,100);
    Last edited: 11/12/2016
  5. xfarmer

    xfarmer Thành viên rất tích cực

    Tham gia ngày:
    28/12/2009
    Đã được thích:
    40
  6. thanh_bkhn1984

    thanh_bkhn1984 Thành viên gắn bó với f319.com

    Tham gia ngày:
    17/11/2013
    Đã được thích:
    257
    Ref(HHV(C,100),-1)<MA(C,100). Vậy lệnh này có ý nghĩa là gía đóng cửa cao nhất của 100 phiên trước đó dưới MA100 không phải ah bác.
  7. xfarmer

    xfarmer Thành viên rất tích cực

    Tham gia ngày:
    28/12/2009
    Đã được thích:
    40
    đúng vậy.
    Cao nhất của đóng cửa trong 100 phiên gần nhất <MA100 của phiên hiện tại. Là của phiên hiện tại & 100 phiên liền kề trước.

    Điều này không đảm bảo giá trị cao nhất đó vẫn < MA100 của 30 phiên trước....
  8. vanngoan

    vanngoan Thành viên quen thuộc

    Tham gia ngày:
    17/06/2015
    Đã được thích:
    20
    Theo code của bác nó filter ra quá nhiều ;););)
  9. xfarmer

    xfarmer Thành viên rất tích cực

    Tham gia ngày:
    28/12/2009
    Đã được thích:
    40
    Tất nhiên chỉ là ví dụ: Bạn có thể co lại biên độ; đấy là để mặc định 5 phiên 15%. Chứ để 100 phiên 15% thì chắc cũng chẳng có nhiều đâu. Điều kiện càng chặt thì sẽ càng ra ít k.quả
  10. vanngoan

    vanngoan Thành viên quen thuộc

    Tham gia ngày:
    17/06/2015
    Đã được thích:
    20
    Làm sao filter được những mã đã lâu không giao dịch bác

Chia sẻ trang này