Skip to main content

pjsProfileBars – An easy to use order flow tool for Ninjatrader 8

PJSProfilebars was created as nothing at the time I could find existed to fulfil my desires (which is typical of most of the tools I create). Namely, order flow presentation in a simple, clear way that also met my performance requirements (trading instruments like NQ in very volatile times can be tough!). It also had to be genuinely useful. I trade real $ – So it can’t just look pretty.  I think it’s still a unique tool in terms of what it does, and how it does it. If you trade futures, I truly believe this is one of the best tools available anywhere, period.


Amazingly simple to use. PJSProfilebars lets you see INSIDE the bars and identify areas of interest and importance. Please be sure to read the ‘Updates‘ section below for all the latest news.

This is an 18 range NQ chart. Note the different widths of the profiles and the colour shading in the datagrid (widths can be changed in NT with Alt-Uparrow/Dnarrow). The whole point of pjsProfileBars is to give you an ‘at a glance’ view of important bars, without interpreting numbers. Most other tools simply plot the same size profiles for every bar or give you a huge screen of numbers to read. For me, in my trading, this is not very useful! I can tell you in a split second which are the important bars on this chart, without scanning through them. This is the whole point of the indicator, and one of its unique features.

Ninjatrader 8 volume profile bars

Bar volume profiles with value areas shown

The section at the bottom of the above chart is the ‘Data Grid’ and is optionally enabled. It’s included with the tool. Various important numbers, including the delta candles above the grid can be shown (so yes, it’s a delta / cumulative delta indicator too!).  A great feature of the grid is the colour variance on numbers of importance. It’s so easy at a glance to see those bars that matter. This is always relative to the other bars currently shown on the screen, so it automatically adapts to differing volatility, during the open, overnight, etc. This is used to great effect with delta in the  ‘momentum’ mode which is very useful in determining trend exhaustion.

It also completely fails back to candle mode too! 2 charts in one! So this is the same, exact chart, with the X-axis reduced. Traditional candles or box candles can be used. This meant for me, not having to have a candle AND a profile/order flow chart.

The delta grid will scale right down in candle mode and still provide extremely useful information. Take a look at the following chart. Note the data grid shown with the arrow (the oscillator on this chart and the trend background colourings are done with pjsHeikenAshi)

It does all this without bogging down your system. Performance in volatility was an absolute requirement and one of the reasons for building pjsProfileBars. No NT8 lag allowed! I have not seen a better performing order flow indicator – Certainly nothing that comes close to this whilst keeping the performance you need to trade volatile markets.

A most important feature and where pjsProfilebars is different from most other tools.

What do you get more information out of?


or this!?

Look carefully at the profile shapes. Most volume profiling tools just draw per the first example. PJSProfilebars draws profiles relative to the other bars on the screen, so again, you can see the important bars naturally, without looking at numbers. They just stand out. Note the volume builds at the top and bottom of the swings. Not so easy to see in the prior example, is it?  This is the default display behaviour for PJSProfilebars – You can turn it off and have traditional profiles if you prefer.

An alternative profile shape can make this even more obvious. Here is our take on an alternative way for viewing profiles, included in the tool.  

Doesn’t that give you more information, than this, below? Believe it or not, that’s the same chart. not sure how anyone can look at bars in the same way anymore 🙂  The ‘BUY’ / ‘SELL’ tags – These are optionally shown and are in testing. They have automatically detected areas of interest, where reversals might be occurring. They are not stand-alone buy/sell signals, but certainly, you should pay attention when they appear.

PJSProfilebars will also optionally show your naked VPOC’s, too. Also, take a look at those profile shapes again! These can be filtered.

All the above examples are showing volume being plotted, but it’s possible to have a pure ‘delta’ view also. This, in its own right, is very valuable and can deliver a fantastic additional perspective over volume alone. It will certainly reveal things that may not be obvious in a pure volume chart.

Delta profiles

PjsProfileBars running on the chart, with the option to plot the bars turned off, and ‘trade aid’ algorithms turned on. This is a Heiken Ashi chart, with candles plotted with the pjsHeikenAshi indicator. You can see here the highlighted bars – All these plots are made by the profile bars indicator running on the same chart. 

Ninjatrader profile bars

In summary

  • Extremely efficient rendering with automatic degradation if required and fallback to candles when zooming down to where profiles would be unreadable. Maintains performance during times of volatility on modest systems (the NT chart lag issue!). A huge amount of time was spent on making the rendering and operation extremely efficient 
  • Works on any time frame, with ANY underlying bar type (including non-time-based charts, renko, unirenko, etc.)
  • Designed to give you a modern, order flow based view of your chart bars, without compromising your existing charting. Just slide x-Axis left to zoom in/out!

So there you go.

What do you think? Have any ideas? Let me know in the comments section below.

You might like to take a look at some of my other Ninjatrader bits and pieces.


Ninjatrader 8


2021.12.12 – Minor naked poc updates. Moved naked vpoc settings into own group. Added option to extend the naked poc lines X pixels right. Noticed that the prior bar was not displaying naked POC until a further bar had been printed. Now resolved.  Nvpoc line now draws before the profile (instead of after), so that it’s behind the profile, else it might overlay the POC volume bar. OHLC bar type has been added as an additional fallback to bars type. Delta histogram can now optionally be shown inside of the volume profile. ‘Delta alerts’ on-off option fixed. Added an experimental trapped buyers/sellers trade aid. Let me have your feedback on this, please!

2021.10.05 – New features and some code tweaks. New ‘Cumulative delta’ modes. Please note a slight behaviour change. Cumulative delta mode now shows the running cumulative delta and not just the displayed bars. There are these new options

Enabling the ‘show as momentum’ option and setting the ‘Cumulative delta momentum period’ will enable you to show the data grid like this

Added the ‘NullStyle’ chart style to the distribution. This is a chart style I created that enables you to hide the native bars. It provides better performance than alternative options.

Code tweaks for performance.  Fix – use candle colours as set in indicator for up/down candles in bar mode, instead of up/down colours for profiles.

‘Delta Max’ was added to the data grid. This is an option I have not seen elsewhere, but I found useful for some time (years). You can think of it as iceberg detection. Very high values relative to the rest of the bars will indicate someone absorbing large amounts in very narrow price bands at those levels.

2021.09.19 – During further testing, I found some minor bugs. These are mainly to do with use on time-based charts that I don’t use much, but that’s no excuse for not properly testing! Damn my eagerness to push out a new version/features! They were just such good updates 🙂 Anyway – Apologies. The bugs have been squished and the download has been updated. I spent today playing back the entire of last week multiple times via multiple time/non-time/onbarclose/oneachtick charts to check. Thankfully, all looks sound again.

2021.09.18 – Fixed support for minute series historical data on time-based charts. This was there before, but the number of options, oneachtick, onbarclose etc. non-time based charts etc. might have broken it. If you select an invalid combination now, a warning should be displayed in the bottom right of the chart. Minute resolution for historical data is useful for fast load and low memory usage (read better NT8 performance) when you have longer-term bars, like a month of hour bars, or daily bars, for example, and where you do not need tick resolution. Also fixed some bar issues for different combinations of time/non-time based charts/oneachtick/onbarclose, etc. Again, you should get a helpful msg if you select an ill-advised combo.
Added a lookback period option to the liquidity zones. I’d initially limited it for performance reasons, but I wanted more on a specific chart, and not all PC’s are created equal. You can now extend this if you wish.

2021.09.15 – A great update! New trade aid, “liquidity zones”. Use this option as you will, but I set the line thickness between 6-10 and the opacity at around 5%. This allows me to see the overlap in a darker colour of multiple zones in the same place. Deeper colour, better area. Watch these. I am sure you will find them extremely helpful. For me, I use a chart period or around 5 days to give me enough zones, but experiment for your setup. 
Also, another new extremely good option on the naked vpocs. These can now vary in line thickness by the strength of the POC. Super, super useful. Both these options are added as a result of me trading for real with this indicator. The reason these features are unique (until someone sees this and copies it!), is they come from actual trading experience, not just ideas. I’ve been running with these 2 new options (and a couple more in the works) for a few months and they have helped my results considerably. Keeping it simple, but improving via real trading experience is what it is all about. ia Please do give them a try! There are also a few other minor code tweaks, fixes and improvements, including a fix for a rare issue on certain bar types where the profiles would disappear and a few more nanoseconds of performance squeezed out.

Done – Added option to abbreviate BUY/SELL labels to B/S, mainly for use when in scaled-down bar/candle only mode.

2021.02.21 – Small fix to avoid a possible ‘null’ error when trying to calculate the value area on certain bars. 

Additional screenshots below

pjsProfilebars with ES/MES

MES profiles, with a darker look!


Profiles with cell borders using the default NT8 dark slate theme

pjsProfilebars in candle mode showing cumulative delta along the bottom of the screen

PJSProfilebars in candle mode showing bar delta along the bottom of the screen (note: vp to the right not currently included!)

And, one more. Could not resist showing you this live example that just happened! 


If you are using the profile bars and want to hide the underlying NT8 bar type, select ‘NullStyle’ as the NT ‘Chart Style’, or select it from the bars dropdown at the top of every chart. This is efficient as it stops the NT native bars plotting altogether. I’ve bundled my ‘NullStyle’ candle type, for free, with pjsProfiles in case you want to use it. 

Once you have your chart running, use the ctrl-UpArrow/DnArrow to play with the width of your bars until you get something that looks nice.

Real-world usage

We are actual traders, trading real money and not just software developers trading SIM. We’ve traded with our indicators, live, for 1000’s of hours. We can offer some ideas for usage, though we strongly recommend you experiment and find your own edge. We’ll be posting more details here and some video content soon 🙂


if you already have a license key, please make sure you enter it in the indicator properties as part of the process of adding the indicator to your chart. Probably a good idea to ‘save as default’, so your key is remembered in your indicator template. 

There are 2 chart templates beginning pjsXXX in this download that should be installed into your templates folder along with the indicator. The templates include my current NQ scalp template. You can use these when you create your new chart to get yourself off to a start if you wish.

As usual, let me know below if any issues and I will try to resolve them, time permitting.


This tool requires a license after the 7 day trial period. You can purchase one here. Please make sure the indicator meets your requirements, prior to purchase. Thanks for your support!


Can I install this on multiple computers? Yes – Up to 2 with the same licensed version of Ninjatrader, with the same license key.

Alerts – A lot of people have not realised the alerts can be voice alerts! Yes, this indie speaks to you!  For some, it has not worked. This is just how their Windows 10 has been configured. To fix this is easy. If you don’t get voice alerts, and you have in fact enabled alerts in the settings, check this

In your windows 10 ‘settings’, Time and language


And check what voices you have there

You need Hazel installed. If not, you will need to install it from Microsoft. Also, click ‘Preview voice’ and make sure your PC actually can speak OK.



if you have any questions, please email us via the web site. If you already have the indicator, please be sure to provide your product key and machine id with the request. We cannot help you unless you provide your product key AND your machine id. Please note, your machine ID can be found in Ninjatrader, under the ‘Help, About’ menu.

Contact us

Email me via the web site if you want to get in touch.



  • Homaira says:

    what is your website?How can I learn more about your indicators.

  • amin valliani says:

    Hi PJ,
    I downloaded the trial version and find it very nice specially. with the signals.
    Questions :
    1. How do I the alerts activated ? I am not sure what the Suffix in the tool menu means.
    2. Also, What do the red triangles mean or what are they for ?

    • pjsmith says:

      Hi Amin,
      The suffix in the alerts is part of the settings for the voice alerts. I run a lot of charts and it’s possible to have multiple alerts being spoken. The suffix is the text that will be added to the end of the spoken alert so you can be a little clearer about where the alert originated from. For example, I run several alerts on nq. I’ll often add a suffix of ‘long term’, or ‘300 tick’, so I know just from the alert which chart triggered. The triangles alert you to a certain imbalance condition. Really, just pay attention to where they are printing and see if/how those bars become relevant to your trading.

      • amin valliani says:

        Hello Paul,
        1. I really like the profile tool. My only concern is how to activate the alerts. I did check the alerts box and typed in a single word “signal”. I did not get any alerts. There must be some trick I am missing.
        2. The red triangles are great at support and resistance areas.
        3. I plotted rectangles and ellipses on the higher time frame, (NQ) and made it universal i.e to plot on all NQ charts. The rectangles and ellipses do not show on the chart with the Profile too added. Is there a conflict between the profile and drawing tools ??

        I am enjoying the tool. Waiting to buy you a cup of Starbucks coffee when the percent change tool is ready (LOL).
        Thank you

        • pjsmith says:

          Hi – Did you get my email? Please reply to that as I sent you some screenshots etc. It will be easier than here. Thanks! To be clear, the alerts are voice alerts. The indicator will actually speak. This does however rely on Windows 10 speech synthesis, which you likely have, but I can work with you to check that.

          • amin valliani says:

            Hi Paul,
            I did not get any emails with screenshot or attachments. AOL sometimes missis emails.
            Can you please resend.

          • amin valliani says:

            I sent you an email with a couple of GIF attached.
            Thank you

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.