RRG Chart - Biểu đồ luân chuyển dòng tiền giữa các ngành / phân tích liên thị trường

Thảo luận trong 'Thảo luận chung' bắt đầu bởi Bảo Khánh, 28/8/21.

Lượt xem : 38,691

  1. Dungbds

    Dungbds Well-Known Member

    Tham gia ngày:
    21/8/21
    Bài viết:
    46
    Đã được thích:
    12
    Giới tính:
    Nam
    làm sao để dấu chấm ở đầu xu hướng thành hình mũi tên bác nhỉ,
     
    Hungtqhp thích bài này.
  2. Hồ Quang Hưng

    Hồ Quang Hưng Member

    Tham gia ngày:
    16/8/21
    Bài viết:
    10
    Đã được thích:
    6
    Giới tính:
    Nam
    Sao trong code thấy 12 màu mà nó không hiện màu lên vậy bác?
     
  3. TrungThanh6191

    TrungThanh6191 Member

    Tham gia ngày:
    20/7/21
    Bài viết:
    9
    Đã được thích:
    0
    Giới tính:
    Nam
    Bác ơi, data của Cophieu68 k dùng được à bác, phải dùng data của fireant thì mới hiện lên à bác ơi
     
  4. minhputincic

    minhputincic Active Member

    Tham gia ngày:
    19/10/21
    Bài viết:
    29
    Đã được thích:
    11
    Giới tính:
    Nam
    cập nhật sai ngày, người anh em à
     
    Hungtqhp thích bài này.
  5. Emcocghe

    Emcocghe Well-Known Member

    Tham gia ngày:
    27/11/21
    Bài viết:
    287
    Đã được thích:
    312
    bac vo edit fomula công thức sửa lại thôi, bác đổi chử vnindex thành ^vnindex,
    bác muốn so cái nào thì thêm mã ngành vô, (nhưng mình nói thật cái rrg ami cùi mía lắm mình dùng rrg của optuma nó dầy đủ gấp trăm lần).
    các bác đừng quan tâm rrg ami, dùng dữ liệu kakata cũng dc
     
    GoldenDragon and minhputincic like this.
  6. Emcocghe

    Emcocghe Well-Known Member

    Tham gia ngày:
    27/11/21
    Bài viết:
    287
    Đã được thích:
    312
    Chưa hiểu ý bác. Cái này bác edit công thức chúc thôi. Bác thêm mấy ngành bác so vô chỗ công thức. Bên cp 68 họ dùng ký hiệu ^ nay trc vnindex. Bác cứ chỉnh thế.
     
    Emcocghe, via a mobile device, 23/1/22
    #46
    Hungtqhp thích bài này.
  7. Dang Quan

    Dang Quan Member

    Tham gia ngày:
    19/8/21
    Bài viết:
    7
    Đã được thích:
    12
    Giới tính:
    Nam
    2022-03-22_210935.png
    Share code này cho các bác.
    Link tải + video hướng dẫn và khắc phục một số lỗi nếu có ở đây ạ (nhớ bỏ khoảng trắng):
    https://www.facebook. com/100023970883891/videos/348375513894861/
     
    Chỉnh sửa cuối: 22/3/22
    ka nguyen, Hungtqhp and vinhnguyen like this.
  8. vinhnguyen

    vinhnguyen Member

    Tham gia ngày:
    25/8/21
    Bài viết:
    16
    Đã được thích:
    1
    Quá hay. Tks bác nhiều.
    Bác làm thế nào để Ami hiển thị được tiếng việt thế ạ. E hay add các text note vào chart mà toàn bị lỗi hiển thị tiếng việt thôi :((
     
  9. Dang Quan

    Dang Quan Member

    Tham gia ngày:
    19/8/21
    Bài viết:
    7
    Đã được thích:
    12
    Giới tính:
    Nam
    Bác xem bài viết này nhé
    https://chibaodautu.com/afl-hien-thi-tieng-viet-trong-amibroker/
     
    vinhnguyen and Hungtqhp like this.
  10. Dungbds

    Dungbds Well-Known Member

    Tham gia ngày:
    21/8/21
    Bài viết:
    46
    Đã được thích:
    12
    Giới tính:
    Nam
    thanks bác nhiều nhé
     
  11. 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
    Xin lại bạn code. Link bị lỗi. Cảm ơn bạn.
     
  12. Tuan-HCM

    Tuan-HCM Member

    Tham gia ngày:
    23/8/21
    Bài viết:
    11
    Đã được thích:
    1
    Giới tính:
    Nam
    Bạn up lại video hướng, và code được không. Tks bạn
     
    Hungtqhp thích bài này.
  13. 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
    Em cũng tìm được và tặng các bác:

    _SECTION_BEGIN( "Relative Rotation Graphs" );

    //=======================================
    //Tickers & Benchmark
    //=======================================
    _N (Benchmark = ParamList( " - Diem Chuan", "VNINDEX|VN30|VNXALL|VNAll-INDEX", 1)); // co the thay bang: HNXINDEX, UPINDEX; ^VNINDEX (neu su dung du lieu cua cophieu68)
    _N (Type = ParamList(" - Type", "Sectors|TickerList|TypeIn", 0));
    _N( Sectors = ParamStr(" - Symbols", ""));
    _N( TypeIn = ParamStr(" - Type-In",""));

    str_list = CategoryGetName( categoryWatchlist, 0 );
    for( i = 1; CategoryGetName( categoryWatchlist, i ) != ""; i++ )
    {
    str_list = str_list + "|" + CategoryGetName( categoryWatchlist, i );
    }
    WatchlistName = ParamList( " - Watch List", str_list, 0 );

    category = categoryWatchlist;
    listnum = CategoryFind( WatchListName, category );
    TickerList = CategoryGetSymbols( category, listnum );

    symbols = writeif(type=="TickerList", TickerList, writeif(type=="Sectors",Sectors, TypeIn));
    list = Name()+","+symbols;
    //===============================
    //Tailing
    //===============================
    tbar = Param( " - Tailing Bar", 20, 1, 100, 1 );
    //thick = Param( " - Thickness", 0.5, 0.5, 1.5, 0.05 );
    color = ParamColor( " - Sectors Color", colorDarkBlue);
    //===============================
    //Lookback Bars
    //===============================
    shortLen = Param( " - ShortLen", 10, 5, 100, 1 ); // co the thu thay doi sang 12
    longLen = Param( " - LongLen", 30, 5, 300, 1 ); // co the thu thay doi sang 26
    signalLen = Param( " - SignalLen", 9, 5, 30, 1 );

    if (ParamToggle( "* Hien thi RRG Chart", "TAT|MO", 1))
    {
    //===============================
    //Margins
    //===============================
    topMargin = Param( " - Top", 10, 10, 100, 1 );
    bottomMargin = Param( " - Bottom", 10, 10, 100, 1 );
    leftMargin = Param( " - Left", 5, 1, 100, 1 );
    rightMargin = Param( " - Right", -50, -100, 150, 1 );
    //===============================
    //Ve Chart
    //===============================
    pxl = Status( "pxchartleft" ) + leftMargin;
    pxr = Status( "pxchartright" ) - rightMargin;
    pxt = Status( "pxcharttop" ) + topMargin;
    pxb = Status( "pxchartbottom" ) - bottomMargin;

    pxw = ( pxr - pxl ) / 2;
    pxh = ( pxb - pxt ) / 2;
    xm = pxl + pxw;
    ym = pxt + pxh;

    GfxSetBkMode( 1 ); // transparent: trong suot

    GfxSetTextColor( colorBlue);

    GfxSetTextAlign( 2 ); // right alignment
    GfxSelectFont("Times New Roman", 12, 700 );
    GfxFillSolidRect( pxr, pxt, xm, ym, ColorBlend( colorPaleGreen, colorWhite )); //"LEADING-MUA HA"
    GfxTextOut( "LEADING-MUA HA-DAN DAT +/+", pxr, pxt );
    GfxFillSolidRect( pxr, pxb, xm, ym, ColorBlend( colorLightYellow, colorWhite )); //"WEAKENING-MUA THU"
    GfxTextOut( "WEAKENING-MUA THU-SUY YEU +/-", pxr, pxb - 15);

    GfxSetTextAlign( 0 ); // left alignment
    GfxSelectFont("Times New Roman", 12, 700 );
    GfxFillSolidRect( pxl, pxt, xm, ym, ColorBlend( colorLightBlue, colorWhite)); //"IMPROVING-MUA XUAN"
    GfxTextOut( "IMPROVING-MUA XUAN-CAI THIEN -/+", pxl, pxt );
    GfxFillSolidRect( pxl, pxb, xm, ym, ColorBlend( colorPink, colorWhite )); //"LAGGING-MUA DONG"
    GfxTextOut( "LAGGING-MUA DONG-TUT HAU -/-", pxl, pxb - 15);

    GfxSelectPen( colorBlack, 1, 2 );
    GfxMoveTo( pxl, ym );
    GfxLineTo( pxr, ym );
    GfxMoveTo( xm, pxt );
    GfxLineTo( xm, pxb );

    GfxSelectFont("Name", Status("pxheight")/55 ); //Sectors Name
    GfxSetTextColor( ParamColor( "* Name Color", colorRed) );
    }
    //===============================
    color1 = ParamColor(" - Color 1", colorRed);
    color2 = ParamColor(" - Color 2", colorViolet);
    color3 = ParamColor(" - Color 3", colorGold);
    color4 = ParamColor(" - Color 4", colorDarkGreen);
    color5 = ParamColor(" - Color 5", colorBlue);
    color6 = ParamColor(" - Color 6", colorPaleBlue);
    color7 = ParamColor(" - Color 7", colorPlum);
    color8 = ParamColor(" - Color 8", colorBrown);
    color9 = ParamColor(" - Color 9", colorPaleTurquoise);
    color10 = ParamColor(" - Color 10", colorPaleGreen);
    color11 = ParamColor(" - Color 11", colorPink);
    color12 = ParamColor(" - Color 12", colorIndigo);
    color13 = ParamColor(" - Color 13", colorDarkGrey);
    color14 = ParamColor(" - Color 14", colorTeal);
    color15 = ParamColor(" - Color 15", colorTan);
    color16 = ParamColor(" - Color 16", colorCustom16);
    /*
    color17 = ParamColor(" - Color 17", colorBrightGreen);
    color18 = ParamColor(" - Color 18", colorDarkBlue);
    color19 = ParamColor(" - Color 19", colorDarkOliveGreen);
    color20 = ParamColor(" - Color 20", colorYellow);
    */
    //===============================
    // get rs or rm (momentum)
    function getrs( sc, t )
    {
    bc = Foreign( Benchmark, "C" );
    sbr = sc / bc;

    rs1 = MA( sbr, shortLen ); // short period
    rs2 = MA( sbr, longLen ); // long period

    rs = 100 * ( ( rs1 - rs2 ) / rs2 + 1 );

    rm1 = MA( rs, 1 );
    rm2 = MA( rs, signalLen );

    rm = 100 * ( ( rm1 - rm2 ) / rm2 + 1 );

    return IIf( t, rs , rm ) - 100;
    }

    // draw position on the chart
    function drawpos ( x, y, sym, text)
    {
    rsl = VarGet( "rsl" );
    rsh = VarGet( "rsh" );
    rml = VarGet( "rml" );
    rmh = VarGet( "rmh" );

    xx = pxl + pxw + x * ( pxw / ( Max( rsh, -rsl ) * 1.10 ) );
    yy = pxb - pxh - y * ( pxh / ( Max( rmh, -rml ) * 1.10 ) );

    xp = Nz( VarGet( "xp" + sym ), xx );
    yp = Nz( VarGet( "yp" + sym ), yy );

    VarSet( "xp" + sym, xx );
    VarSet( "yp" + sym, yy );

    GfxMoveTo( xp, yp );
    GfxLineTo( xx, yy );
    GfxSelectPen( color);
    GfxSetBkMode ( 1 );

    check = StrMid( sym, 0, 1);
    if (check == "0" OR check == "1" OR check == "2" OR check == "3" OR check == "4" OR check == "5" OR check == "6" OR check == "7" OR check == "8" OR check == "9")
    sym = FullName();
    else
    sym = Name();

    GfxCircle( xx, yy, IIf( text == "", 2, 4 ) );

    if ( text != "" ) GfxTextOut( sym, xx + 6 , yy - 3 );
    }
    //===============================
    for ( i = 0; ( sym = StrExtract( List, i ) ) != ""; i++ )
    {
    SetForeign( sym );

    rs = getrs( C, 1 );
    rm = getrs( C, 0 );

    for ( ii = BarCount - tbar; ii > 10 AND ii < BarCount ; ii++ )
    {
    rs_ = rs[ ii ];
    rm_ = rm[ ii ];

    rsh = Nz( VarGet( "rsh" ), rs_ );
    if ( rs_ >= rsh )
    VarSet( "rsh", rs_ );

    rsl = Nz( VarGet( "rsl" ), rs_ );
    if ( rs_ <= rsl )
    VarSet( "rsl", rs_ );

    rmh = Nz( VarGet( "rmh" ), rm_ );
    if ( rm_ >= rmh )
    VarSet( "rmh", rm_ );

    rml = Nz( VarGet( "rml" ), rm_ );
    if ( rm_ <= rml )
    VarSet( "rml", rm_ );
    }

    RestorePriceArrays( True );
    }
    //===============================
    for ( i = 0; ( sym = StrExtract( List, i ) ) != ""; i++ )
    {
    SetForeign( sym );

    rs = getrs( C, 1 );
    rm = getrs( C, 0 );

    for ( ii = BarCount - tbar; ii > 10 AND ii < BarCount; ii++ )
    {
    drawpos( rs[ ii ], rm[ ii ], sym, WriteIf( ii == BarCount - 1, sym, "" ) );
    }

    RestorePriceArrays( True );

    switch (i) {
    case 0:
    color = color1;
    break;
    case 1:
    color = color2;
    break;
    case 2:
    color = color3;
    break;
    case 3:
    color = color4;
    break;
    case 4:
    color = color5;
    break;
    case 5:
    color = color6;
    break;
    case 6:
    color = color7;
    break;
    case 7:
    color = color8;
    break;
    case 8:
    color = color9;
    break;
    case 9:
    color = color10;
    break;
    case 10:
    color = color11;
    break;
    case 11:
    color = color12;
    break;
    case 12:
    color = color13;
    break;
    case 13:
    color = color14;
    break;
    case 14:
    color = color15;
    break;
    case 15:
    color = color16;
    break;

    RestorePriceArrays( True );
    }
    RestorePriceArrays( True );
    //===============================
    Title = "";

    if( list != "" )
    {
    GfxSetTextColor( colorYellow );
    totalSymbols = StrCount( list, "," ) + 1;
    GfxTextOut( "Tickers[" + totalSymbols + "]: " + list, pxl, pxb );
    }

    GfxSetTextColor( colorViolet);
    strTemp = StrFormat( "Diem Chuan: %s, TF: %s", Benchmark, Interval( 2 ) );
    GfxSetTextAlign( 0 ); // right alignment
    GfxTextOut( strTemp, pxl, topMargin / 3 );

    strDisplay = "Do Thi Xoay Tuong Doi - Copy 0931852289"; //Relative Rotation Graphs
    GfxSetTextAlign( 2 ); // right alignment
    GfxTextOut( strDisplay, pxr, topMargin / 3 );
    }

    //==============================
    //LOC XU HUONG CO PHIEU
    //==============================
    //Daily
    Lagging = rs < 0 AND rm < 0; //"LAGGING", MUA DONG, colorGrey50
    Improving = rs < 0 AND rm > 0; //"IMPROVING", MUA XUAN, colorGreen
    Leading = rs > 0 AND rm > 0; //"LEADING", MUA HA, colorLightOrange
    Weakening = rs > 0 AND rm < 0; //"WEAKENING", MUA THU, colorLightBlue

    XuhuongDaily = WriteIf( Lagging, "MUA DONG",
    WriteIf( Improving, "MUA XUAN",
    WriteIf( Leading, "MUA HA",
    WriteIf( Weakening, "MUA THU", "" ) ) ) );
    Colorxhd = IIf( Lagging, colorPink,
    IIf( Improving,colorLightBlue,
    IIf( Leading, colorLightOrange,
    IIf( Weakening, colorLightYellow, colorLightGrey ) ) ) );
    // Weekly
    TimeFrameSet (inWeekly);
    rsx = getrs (C, 1);
    rmx = getrs (C, 0);
    TimeFrameRestore ();
    rs1 = TimeFrameExpand (rsx, inWeekly);
    rm1 = TimeFrameExpand (rmx, inWeekly);

    Lagging1 = rs1 < 0 AND rm1 < 0;
    Improving1 = rs1 < 0 AND rm1 > 0;
    Leading1 = rs1 > 0 AND rm1 > 0;
    Weakening1 = rs1 > 0 AND rm1 < 0;

    XuhuongW = WriteIf( Lagging1, "MUA DONG",
    WriteIf( Improving1, "MUA XUAN",
    WriteIf( Leading1, "MUA HA",
    WriteIf( Weakening1, "MUA THU", "" ) ) ) );
    Colorxhw = IIf( Lagging1, colorPink,
    IIf( Improving1, colorLightBlue,
    IIf( Leading1, colorLightOrange,
    IIf( Weakening1, colorLightYellow, colorLightGrey ) ) ) );

    Filter = C >=5;

    AddSummaryRows(31, 1.2, 6);
    //SetSortColumns ( -4, 1);

    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 );
    //=======================================
    AddColumn(Close,"GIA",1.2,IIf(Close>=Open,colorBlue,colorRed));
    Chg = ROC( C, 1 );
    AddColumn( Chg, "% Thay doi", 1.2, IIf( Chg > 0, colorGreen, IIf( Chg < 0, colorRed, colorDefault ) ), IIf( Chg >= 6, colorPaleGreen, IIf( Chg <= -6, colorPink, colorDefault ) ) ,130);

    AddTextColumn(XuhuongDaily, "RRG (D)", 1.0, IIf(Colorxhd == colorLightGrey, Colorxhd, colorDefault ), Colorxhd, 80 );
    AddTextColumn(XuhuongW, "RRG (W)", 1.0, IIf(Colorxhw == colorLightGrey, Colorxhw, colorDefault ), Colorxhw, 80 );

    _SECTION_END();
    //================================================|
     
  14. 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
    Tặng lại các bác.
     

    Các file đính kèm:

    • RRG.afl
      Kích thước:
      12.6 KB
      Đọc:
      29
  15. chungga

    chungga Member

    Tham gia ngày:
    1/8/21
    Bài viết:
    5
    Đã được thích:
    3
    Giới tính:
    Nam
    Cảm ơn bác ah :)
     
    Hungtqhp thích bài này.
  16. 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
    Cách sử dụng:
    các bạn tạo list các nhóm ngành theo dõi trên Ami (ở đây tối đa 15 mã). Muốn xem nhóm mã ngành nào thì chuyển về "TickerList"
    _N (Type = ParamList(" - Type", "Sectors|TickerList|TypeIn", 0));
     
    chungga thích bài này.
  17. 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
     
    chungga thích bài này.
  18. chungga

    chungga Member

    Tham gia ngày:
    1/8/21
    Bài viết:
    5
    Đã được thích:
    3
    Giới tính:
    Nam
    upload_2024-1-10_22-12-17.png
    Em xin bác chỉ rõ hơn được không ah, em chưa hiểu tick list làm như nào ah
    upload_2024-1-10_22-15-45.png sẽ thêm vào đoạn nào ah. Em cảm ơn bác ah!
     
    Hungtqhp thích bài này.
  19. 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
    Bạn để ở thư mục Intraday/EOD trên AMI.
     

    Các file đính kèm:

    chungga thích bài này.

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

Đang tải...
Bài viết tương tự Diễn đàn Date
lọc chart H Thảo luận chung 11/6/22
code mua bán theo vwap và rrg chart trên optuma Thảo luận chung 22/3/22
hướng dẫn chạy RRG chart cơ bản trên optuma Thảo luận chung 10/3/22
Cách viết RRG chart dùng cho excel Thảo luận chung 17/2/22
trình diễn RRG chart trên đa khung thời gian ( ngày, tuần , tháng) Thảo luận chung 16/2/22

Chia sẻ trang này