Teknik Analiz Dünyasına Hoşgeldiniz. Paylaşmak Güzeldir.

Yayından kaldırmak istediğiniz formüller için algoritmabul@gmail.com ile iletişime geçebilirsiniz... 

  • DİKKAT: Formüller, Sistemler sadece eğitim amaçlıdır. Alım satım, olası anapara kaybı ve diğer kayıplar dahil olmak üzere "YÜKSEK RİSK" içerir.

Amibroker Rotasi Saham / Stock Rotation XY-Chart for Amibroker (AFL)

Amibroker

algoritma

eiπ + 1 = 0
Algorithmist
Algoritma
Katılım
23 Eki 2020
Mesajlar
1,797

Rotasi Saham / Stock Rotation XY-Chart for Amibroker (AFL)

Rotasi Saham digunakan untuk memetakan saham yang outperform / underperfom dibandingkan index acuan, ke dalam 4 kuadran XY chart.

Kuadran:
- Kanan atas = Leading
- Kanan bawah = Weakening
- Kiri bawah = Lagging
- Kiri atas = Improving

Ini adalah versi kode paling dasar yang dibutuhkan.
Silakan menambahkan warna dan tulisan untuk masing2 kuadran sesuai keinginan kalian.

(translation)
Stock rotation is used to map stocks that outperform / underperform compared to the reference index, into 4 quadrants of the XY chart.

Quadrant:
– Top right = Leading
– Bottom right = Weakening
– Bottom left = Lagging
– Top left = Improving

This is the most basic version of the code needed.
Do add colors and text for each quadrant as you wish.
Kod:
// Downloaded From https://www.WiseStockTrader.com
_SECTION_BEGIN( "XY-Rotation Chart" );

_N( base = ParamStr( "Base", "IHSG" ) );
_N( list = ParamStr( "Symbols", "IDXBASIC,IDXCYCLIC,IDXENERGY,IDXFINANCE,IDXHEALTH,IDXINDUST,IDXINFRA,IDXNONCYC,IDXPROPERT,IDXTECHNO,IDXTRANS" ) );
tbar = Param( "Trailing Bar", 12, 1, 100, 1 );

EnableTextOutput( False );
GfxSetOverlayMode( 2 );

pxl = Status( "pxchartleft" );
pxr = Status( "pxchartright" );
pxt = Status( "pxcharttop" );
pxb = Status( "pxchartbottom" );
pxw = ( pxr - pxl ) / 2;
pxh = ( pxb - pxt ) / 2;
xm = pxl + pxw;
ym = pxt + pxh;

GfxMoveTo( pxl, ym );
GfxLineTo( pxr, ym );
GfxMoveTo( xm, pxt );
GfxLineTo( xm, pxb );

function getrs ( sc, t )
{
    bc = Foreign( base, "C" );
    sbr = sc / bc;

    rs1 = MA( sbr, 12 );
    rs2 = MA( sbr, 26 );
    rs = 100 * ( ( rs1 - rs2 ) / rs2 + 1 );

    rm1 = MA( rs, 1 );
    rm2 = MA( rs, 9 );
    rm = 100 * ( ( rm1 - rm2 ) / rm2 + 1 );

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

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 );

    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 < 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 < BarCount; ii++ )
    {
        drawpos( rs[ ii ], rm[ ii ], sym, WriteIf( ii == BarCount - 1, sym, "" ) );
    }

    RestorePriceArrays( True );
}

_SECTION_END();
kaynak
www.WiseStockTrader.com
 
Son düzenleme:

Forumdan daha fazla yararlanmak için giriş yapın yada üye olun!

Forumdan daha fazla yararlanmak için giriş yapın veya kayıt olun!

Kayıt ol

Forumda bir hesap oluşturmak tamamen ücretsizdir.

Şimdi kayıt ol
Giriş yap

Eğer bir hesabınız var ise lütfen giriş yapın

Giriş yap