Rajandran R Creator of OpenAlgo - OpenSource Algo Trading framework for Indian Traders. Building GenAI Applications. Telecom Engineer turned Full-time Derivative Trader. Mostly Trading Nifty, Banknifty, High Liquid Stock Derivatives. Trading the Markets Since 2006 onwards. Using Market Profile and Orderflow for more than a decade. Designed and published 100+ open source trading systems on various trading tools. Strongly believe that market understanding and robust trading frameworks are the key to the trading success. Building Algo Platforms, Writing about Markets, Trading System Design, Market Sentiment, Trading Softwares & Trading Nuances since 2007 onwards. Author of Marketcalls.in

How to View Screener Fundamentals Directly Inside Amibroker

4 min read

Most Investors today rely heavily on charting. Whether it’s breakouts, moving averages, price structure, or volume patterns, everything starts with the chart. But a chart alone cannot give the full picture. A simple fundamental snapshot often decides whether the stock deserves your attention.

This usually means jumping to Screener.in, typing the company name, scrolling through the key numbers and then coming back to the chart. If you monitor 20–30 stocks every morning, this back-and-forth adds friction, slows down decision-making and breaks focus.

A new method fixes this problem completely:
You can now view Screener fundamentals inside Amibroker itself.
No manual search. No switching tabs. No browser distraction.

Just change the stock in Amibroker and basic fundamentals appear instantly.

Why Traders Need Fundamentals Alongside Charts

Even if you trade purely on technicals, a handful of fundamental numbers matter. They act like a quick “sanity filter”.

Before entering a trade, most traders want answers to questions like:

  • How big is the company? (Market Cap)
  • Is the valuation stretched? (P/E)
  • Is the business financially disciplined? (ROCE, ROE)
  • Where is the stock trading relative to its 52-week range?
  • How much cushion exists through dividends? (Dividend Yield)
  • Is the stock sitting far above Book Value?

Looking up each stock manually breaks your flow.
But when the data appears on the chart, fundamentals become a natural part of your reading process.

The biggest advantage is speed.
Technical traders don’t need an entire balance sheet. They need only five to ten ratios that immediately tell whether the trend has fundamental support.

What This Feature Shows You Inside Amibroker

_SECTION_BEGIN("Screener Fundamentals Table");

/* === Required Chart Options === */
SetChartOptions(0, chartShowArrows | chartShowDates);

/* === Required Default Title === */
_N( Title = StrFormat("{{NAME}} - {{INTERVAL}} {{DATE}} "
     + "Open %g, Hi %g, Lo %g, Close %g (%.1f%%) {{VALUES}}",
     O, H, L, C, SelectedValue( ROC(C,1 ) ) ) );

/* === Required Candle Plot === */
Plot( Close, "Close", 
      ParamColor("Color", colorDefault),
      styleNoTitle | ParamStyle("Style") | GetPriceStyle() );


/* ===========================================================
      USER-DEFINED FUNCTIONS (Correct AFL Syntax)
=========================================================== */

/* Extract a single <span class="number"> value */
function ExtractVal( fulltext, blockname )
{
    out = "N/A";

    pos = StrFind( fulltext, blockname );
    if( pos > 0 )
    {
        seg = StrMid( fulltext, pos - 1, 3000 );

        tag  = "<span class=\"number\">";
        tpos = StrFind( seg, tag );

        if( tpos > 0 )
        {
            tpos = (tpos - 1) + StrLen( tag );

            part = StrMid( seg, tpos, 1000 );
            rel  = StrFind( part, "</span>" );

            if( rel > 0 )
            {
                endp = tpos + rel - 1;
                out  = StrMid( seg, tpos, endp - tpos );
                out  = StrReplace( out, ",", "" );
            }
        }
    }
    return out;
}

/* Extract High / Low pair */
function ExtractHighLow( fulltext )
{
    hl = "N/A";

    pos = StrFind( fulltext, "High / Low" );
    if( pos > 0 )
    {
        seg = StrMid( fulltext, pos - 1, 3000 );
        tag = "<span class=\"number\">";

        /* --- High --- */
        t1 = StrFind( seg, tag );
        if( t1 > 0 )
        {
            t1 = (t1 - 1) + StrLen( tag );
            part1 = StrMid( seg, t1, 800 );
            e1 = StrFind( part1, "</span>" );

            if( e1 > 0 )
            {
                hv = StrMid( seg, t1, e1 - 1 );
                hv = StrReplace( hv, ",", "" );

                /* --- Low (second number) --- */
                seg2 = StrMid( seg, t1 + e1, 2000 );
                t2 = StrFind( seg2, tag );

                if( t2 > 0 )
                {
                    t2 = (t2 - 1) + StrLen( tag );
                    part2 = StrMid( seg2, t2, 800 );
                    e2 = StrFind( part2, "</span>" );

                    if( e2 > 0 )
                    {
                        lv = StrMid( seg2, t2, e2 - 1 );
                        lv = StrReplace( lv, ",", "" );

                        hl = hv + " / " + lv;
                    }
                }
            }
        }
    }
    return hl;
}


/* ===========================================================
               FETCH FUNDAMENTALS (LIVE)
=========================================================== */

symbol = Name();  //symbol -> SBIN, RELIANCE not like SBIN
symbol = StrReplace(symbol,".NS","");  
symbol = StrReplace(symbol,"-EQ","");
symbol = StrReplace(symbol,".NSE","");
symbol = StrReplace(symbol,"-NSE","");
url     = "https://www.screener.in/company/" + symbol + "/consolidated/";

ih = InternetOpenURL( url );

mc = cp = hl = pe = bv = dy = roce = roe = fv = "N/A";

if( ih )
{
    full = "";
    s = InternetReadString( ih );

    while( s != "" )
    {
        full = full + s;
        s = InternetReadString( ih );
    }

    InternetClose( ih );

    mc   = ExtractVal( full, "Market Cap" );
    cp   = ExtractVal( full, "Current Price" );
    pe   = ExtractVal( full, "Stock P/E" );
    bv   = ExtractVal( full, "Book Value" );
    dy   = ExtractVal( full, "Dividend Yield" );
    roce = ExtractVal( full, "ROCE" );
    roe  = ExtractVal( full, "ROE" );
    fv   = ExtractVal( full, "Face Value" );
    hl   = ExtractHighLow( full );
}


/* ===========================================================
                     GFX TABLE DISPLAY
=========================================================== */

/* User table settings */
cellHeight = 28;
cellWidth  = 140;

startX = 20;
startY = 60;

/* Table colors */
tableBorder = colorLightBlue;
tableBG     = colorBlack;
headerBG    = colorBlue;
headerFG    = colorWhite;
cellFG      = colorWhite;

/* FUNCTION FOR TABLE CELL */
function TableCell( text, col, row, bgColor, fgColor )
{
    x1 = startX + (col-1) * cellWidth;
    y1 = startY + (row-1) * cellHeight;
    x2 = x1 + cellWidth;
    y2 = y1 + cellHeight;

    GfxSelectPen( tableBorder, 1 );
    GfxSelectSolidBrush( bgColor );
    GfxRectangle( x1, y1, x2, y2 );

    GfxSetBkColor( bgColor );
    GfxSetTextColor( fgColor );
    GfxTextOut( text, x1 + 4, y1 + 6 );
}

/* -----------------------------
   HEADER ROW
------------------------------ */
TableCell( "Field",       1, 1, headerBG, headerFG );
TableCell( "Value",       2, 1, headerBG, headerFG );

/* -----------------------------
   FUNDAMENTALS TABLE
------------------------------ */
TableCell( "Market Cap (Cr)",  1, 2, tableBG, cellFG );  TableCell( mc,   2, 2, tableBG, cellFG );
TableCell( "Current Price",    1, 3, tableBG, cellFG );  TableCell( cp,   2, 3, tableBG, cellFG );
TableCell( "High / Low",       1, 4, tableBG, cellFG );  TableCell( hl,   2, 4, tableBG, cellFG );
TableCell( "Stock P/E",        1, 5, tableBG, cellFG );  TableCell( pe,   2, 5, tableBG, cellFG );
TableCell( "Book Value",       1, 6, tableBG, cellFG );  TableCell( bv,   2, 6, tableBG, cellFG );
TableCell( "Dividend Yield",   1, 7, tableBG, cellFG );  TableCell( dy,   2, 7, tableBG, cellFG );
TableCell( "ROCE %",           1, 8, tableBG, cellFG );  TableCell( roce, 2, 8, tableBG, cellFG );
TableCell( "ROE %",            1, 9, tableBG, cellFG );  TableCell( roe,  2, 9, tableBG, cellFG );
TableCell( "Face Value",       1,10, tableBG, cellFG );  TableCell( fv,   2,10, tableBG, cellFG );

_SECTION_END();

What This Feature Shows You Inside Amibroker

Every time you switch symbols, Amibroker fetches the latest numbers from Screener.in and displays a clean two-column table on your chart.

The table includes:

  • Market Cap (Cr)
  • Current Price (as per Screener)
  • 52-Week High / Low
  • Stock P/E
  • Book Value
  • Dividend Yield
  • ROCE
  • ROE
  • Face Value

This is exactly the cluster of fundamentals that traders check most frequently before taking positions.

Within one second of switching symbols, these details appear—just like a mini Moneycontrol snapshot, but inside your chart.


A Unified View: Technical + Fundamental

This single-screen workflow does two important things:

1. Shortens the Research Cycle

When you watch a chart forming a breakout, the fundamentals tell whether the story has legs.
A low ROE and weak numbers may stop you from chasing the move.
A strong ROCE and clean balance-sheet may convince you to hold longer.

2. Reduces the Research Noise

Opening multiple sites leads to distraction. Each website tries to pull you into more data.
But when the information appears on the chart, your attention stays where it matters: price.

3. Makes Watchlist Scanning Faster

Traders typically review charts in a sequence. With fundamentals embedded into the chart layout, the process becomes seamless.


Designed for Traders, Not Programmers

This feature is built purely for practical use.
You don’t need technical knowledge or programming skills to use it.

You just:

  1. Paste the provided AFL into Amibroker
  2. Apply it on any chart
  3. View fundamentals instantly for every stock you scan

Everything else runs in the background.

Amibroker quietly fetches data from Screener, reads only the sections you need, and presents it in a clean visual format.


A Smarter Workflow for Morning Scans

A practical routine many traders follow:

  1. Create a watchlist of stocks near breakout zones
  2. Open Amibroker
  3. Scroll through your list
  4. Read both the chart and fundamentals on the same screen
  5. Shortlist stocks within minutes

For positional traders, this can become a powerful edge.
For intraday traders, fundamentals may not influence entries but help in stock selection and long-term confidence.


Use Responsibly

Screener.in is one of the most trader-friendly websites in India.
This integration uses only the publicly available company pages.
Avoid flipping symbols too fast or running automated loops.
A moderate scanning speed is perfectly fine.

Rajandran R Creator of OpenAlgo - OpenSource Algo Trading framework for Indian Traders. Building GenAI Applications. Telecom Engineer turned Full-time Derivative Trader. Mostly Trading Nifty, Banknifty, High Liquid Stock Derivatives. Trading the Markets Since 2006 onwards. Using Market Profile and Orderflow for more than a decade. Designed and published 100+ open source trading systems on various trading tools. Strongly believe that market understanding and robust trading frameworks are the key to the trading success. Building Algo Platforms, Writing about Markets, Trading System Design, Market Sentiment, Trading Softwares & Trading Nuances since 2007 onwards. Author of Marketcalls.in

2 Replies to “How to View Screener Fundamentals Directly Inside Amibroker”

  1. Very excellent. if other parameters like debt equity, cfo. fcf sales profit growth are included , it will immensely benefit the trading/investing community.

Leave a Reply

Get Notifications, Alerts on Market Updates, Trading Tools, Automation & More