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

Sentimental Dashboard – Amibroker AFL Code

53 sec read

Sentimental Dashboard is added in our live charting section (NSESignals and MCX Signals Section) to measure the strength in the market. Sentimental Dashboard shows 8 historical values for Multiple Timeframes like 15min, Hourly and Daily). And the reading ranges between 0-100. The right most meter indicates the most recent value.

Sentimental
[wp_ad_camp_5]

 

The logic behind the multimeframe sentimental dashboard is nothing but the smoothed hull moving average of RSI. This bring more responsiveness and good in identifying shorter term trend cycles. Suits mostly for a discrete mean reversion traders.

Increasing reading indicates the possibility of market moving in uptrend and decreasing value indicates a possible downtrend. One can adopt 15min to capture very shorter term movements in the markets(short term intraday especially for holding position ranging between 15min – 2 hours). However 60 min sentimental will give more clarity about the trend for any day (This for traders holding their position anywhere ranging from 1 hour – 8 hours). And Daily Sentimental Meter will give more clarity about the carry forwarding positions to next day.

Divergence 2016 – Promo
httpv://www.youtube.com/watch?v=cLkTBA9Ac4w

This sentimental dashboard make sense more for discretionary traders who wants to enter the trend at the earliest and exit closer to the top however it does not benefit much for System Traders.

Sentimental Dashboard – Amibroker AFL Code

Code Compatibility – 5.8+ and above

https://gist.github.com/d13627cad0b2bddc3551

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

CUSUM Filter Strategy in AmiBroker AFL: A Practical Implementation

Detecting meaningful shifts in price trends while filtering out market noise is a challenge many traders face. Inspired by Jakub Polec’s blog, which applies...
Rajandran R
2 min read

Fisher Transform – Amibroker AFL Code

The Fisher Transform is a technical analysis indicator developed by John F. Ehlers, designed to identify potential turning points in the price movements of...
Rajandran R
2 min read

My Experience Converting SSL Hybrid from PineScript to Amibroker…

As a trader and coding enthusiast, I often find myself needing to translate trading indicators from one programming language to another. Recently, I embarked...
Rajandran R
8 min read

13 Replies to “Sentimental Dashboard – Amibroker AFL Code”

      1. You can consider the following code for 5.7

        _SECTION_BEGIN(“Sentimental Dashboard”);

        function jmatrix(timeframe) {
        TimeFrameSet( timeframe ); // switch to required time frame
        rmat = HMA(RSIa((H+L+C+O)/4,5),5);
        TimeFrameRestore(); // restore time frame to original
        return rmat;
        }

        rsx15 = jmatrix(in15Minute);
        rsx60 = jmatrix(inHourly);
        rsxdaily = jmatrix(inDaily);

        Plot(rsx15,”15 mins”,colorRed,styleLine);
        Plot(rsx60,”1 hour”,colorGreen,styleLine);
        Plot(rsxdaily,”Daily”,colorBlue,styleLine);

        _SECTION_END();

        Title = EncodeColor(colorWhite)+ “Sentimental Dashboard” + ” – ” + Name() +
        “\n” + “## 15 Min ::: ” + NumToStr(ref(rsx15, -7),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx15, -6),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx15, -5),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx15, -4),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx15, -3),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx15, -2),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx15, -1),1.2,False) + ” \t ::: ” + NumToStr(rsx15,1.2,False) +
        “\n” + “## 60 Min ::: ” + NumToStr(ref(rsx60, -7),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx60, -6),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx60, -5),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx60, -4),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx60, -3),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx60, -2),1.2,False) + ” \t ::: ” + NumToStr(ref(rsx60, -1),1.2,False) + ” \t ::: ” + NumToStr(rsx60,1.2,False) +
        “\n” + “## Daily ::: ” + NumToStr(ref(rsxdaily, -7),1.2,False) + ” \t ::: ” + NumToStr(ref(rsxdaily, -6),1.2,False) + ” \t ::: ” + NumToStr(ref(rsxdaily, -5),1.2,False) + ” \t ::: ” + NumToStr(ref(rsxdaily, -4),1.2,False) + ” \t ::: ” + NumToStr(ref(rsxdaily, -3),1.2,False) + ” \t ::: ” + NumToStr(ref(rsxdaily, -2),1.2,False) + ” \t ::: ” + NumToStr(ref(rsxdaily, -1),1.2,False) + ” \t ::: ” + NumToStr(rsxdaily,1.2,False)
        ;

        1. THIS CODE IS NOT WORKING FOR VERSION 5.70 ” SYNTAX ERROR, UNEXPECTED $END, EXPECTING ‘)’OR’,’ AT LN 1 COL 16

  1. Thanks a lot for sharing this beautiful code.

    But one small thing which i note is the history value changes with each bar “This look to be constant with your Live signal” any setting change that we need to do?

    1. It is the same code we are running at our livecharting section. Probably you are using continous contracts like NIFTY-I and we use non continuous contracts NIFTY15NOVFUT and so the difference in values.

  2. Can any one make it a loop in afl

    Ydh1= TimeFrameGetPrice( “o”, inDaily,-1);
    Ydh2= TimeFrameGetPrice( “o”, inDaily,-2);
    Ydh3= TimeFrameGetPrice( “o”, inDaily,-3);
    Ydh4= TimeFrameGetPrice( “o”, inDaily,-4);
    Ydh5= TimeFrameGetPrice( “o”, inDaily,-5);
    Ydh6= TimeFrameGetPrice( “o”, inDaily,-6);
    Ydh7= TimeFrameGetPrice( “o”, inDaily,-7);
    Ydh8= TimeFrameGetPrice( “o”, inDaily,-8);
    Ydh9= TimeFrameGetPrice( “o”, inDaily,-9);
    Ydh10= TimeFrameGetPrice( “o”, inDaily,-10);
    Ydh11= TimeFrameGetPrice( “o”, inDaily,-11);
    Ydh12= TimeFrameGetPrice( “o”, inDaily,-12);
    Ydh13= TimeFrameGetPrice( “o”, inDaily,-13);
    Ydh14= TimeFrameGetPrice( “o”, inDaily,-14);
    Ydh15= TimeFrameGetPrice( “o”, inDaily,-15);
    Ydh16= TimeFrameGetPrice( “o”, inDaily,-16);
    Ydh17= TimeFrameGetPrice( “o”, inDaily,-17);
    Ydh18= TimeFrameGetPrice( “o”, inDaily,-18);
    Ydh19= TimeFrameGetPrice( “o”, inDaily,-19);
    Ydh20= TimeFrameGetPrice( “o”, inDaily,-20);
    Ydh21= TimeFrameGetPrice( “o”, inDaily,-21);

    yddH2 = Max(YdH1, YdH2);
    yddH3 = Max(yddH2,YdH3);
    yddH4= Max(yddH3,YdH4);
    yddH5= Max(yddH4,YdH5);
    yddH6= Max(yddH5,YdH6);
    yddH7= Max(yddH6,YdH7);
    yddH8= Max(yddH7,YdH8);
    yddH9= Max(yddH8,YdH9);
    yddH10= Max(yddH9,YdH10);
    yddH11= Max(yddH10,YdH11);
    yddH12= Max(yddH11,YdH12);
    yddH13= Max(yddH12,YdH13);
    yddH14= Max(yddH13,YdH14);
    yddH15= Max(yddH14,YdH15);
    yddH16= Max(yddH15,YdH16);
    yddH17= Max(yddH16,YdH17);
    yddH18= Max(yddH17,YdH18);
    yddH19= Max(yddH18,YdH19);
    yddH20= Max(yddH19,YdH20);
    yddH21= Max(yddH20,YdH21);

    yddm2 = Min(YdH1, YdH2);
    yddm3 = Min(yddm2,YdH3);
    yddm4= Min(yddm3,YdH4);
    yddm5= Min(yddm4,YdH5);
    yddm6= Min(yddm5,YdH6);
    yddm7= Min(yddm6,YdH7);
    yddm8= Min(yddm7,YdH8);
    yddm9= Min(yddm8,YdH9);
    yddm10= Min(yddm9,YdH10);
    yddm11= Min(yddm10,YdH11);
    yddm12= Min(yddm11,YdH12);
    yddm13= Min(yddm12,YdH13);
    yddm14= Min(yddm13,YdH14);
    yddm15= Min(yddm14,YdH15);
    yddm16= Min(yddm15,YdH16);
    yddm17= Min(yddm16,YdH17);
    yddm18= Min(yddm17,YdH18);
    yddm19= Min(yddm18,YdH19);
    yddm20= Min(yddm19,YdH20);
    yddm21= Min(yddm20,YdH21);

    21DHO= yddH21;
    21DLO = yddm21;

    10DHO = yddH10;
    10DLO = yddm10;

    5DHO= yddH5;
    5DLO = yddm5;

    3DHO= yddH3;
    3DLO = yddm3;

  3. Dear Rajendren,

    Thank you very much for the wonderful dashboard.

    I have a slight confusion in reading the dashboard.

    Whether I have to read the increasing decreasing numbers from right to left or left to right.

    Thanks in advance for the kind help

Leave a Reply

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