Very basic features missing in NinjaTrader

Summary of all the issues reported in this thread

Wrongly reported as an issue

  • Strategy Analyser it seems can never be as accurate as Market Replay = Strategy analyser can be more accurate than market replay for testing strategies that only place managed market orders (by adding 1 tick data series)
  • No ability to send emails = this functionality is present
  • Unable to place both long and short positions on the same account even though they allow hedging by opening sub accounts = Characteristic of futures market
  • NT tracks position not intent, and that has implications across the application especially the trade performance report which will not match the report generated by the strategy itself, although the total PnL will match = Characteristic of futures market

Problems that can be solved by writing ninjascript

  • Draw lines between entry and exit points of trades made by headless strategy = code it
  • No way to apply an ATM on an open position = code it
  • No ability to send telegram messages = Use paid apps

UI issues

  • Very slow
  • Keeps hanging, requiring a restart to fix
  • Trade performance report Gross loss is shown in red but Gross profit is the default white in some windows

Problems with no solution

  • No server side configuration to ensure all orders are closed before the end of the day
  • Cannot use the desktop app running strategies and mobile app at the same time
  • Not possible to start stop strategies programmatically

Quirky behaviour

  • No option to set NinjaScript Output window persist in log or trace folder
  • Strategies going out of sync from the Account.Positions tab
  • No warning when choosing wrong expiration date, this problem is across the app, on the chart, in the add strategy indicator window, in the market replay and strategy analyser window
  • No inbuilt mechanism to prevent coding a strategy where orders are wrongly places from non-strategy thread resulting in quite a random indeterministic behaviour
  • MarketReplay data not accurate and very slow
  • Documentation inaccurate in some places

There is no way to automate the starting or stopping of strategies. Firstly there is no automatic login. Typically algo trader would want that when the machine reboots, ninjatrader starts with the reboot and enables the strategies that were running when it had been shut down…that kind of a feature ninja trader seems to have an inclination to block even if it already exist in its code base.
So for someone like me who could have 60 strategies running 15 of which are bloodhound based hence need to be added from scratch every-time ninjatrader starts, I basically spend over 15 hours a week just doing the most idiotic tasks because someone at ninjatrader decided that people using their tools are absolute cretins and cannot be given the power to write a framework which quickly deploys and starts their complex setup.

Trade Performance report is almost unusable, one could click on the generate button and wait for ever and nothing will happen, other times it updates with the latest trade information in a second. I am yet to detect any pattern, it seems to be pretty random.

1 Like

NinjaTrader blatantly lies in its documentation about some of the functionality. It claims ExitLong(SignalName) will only close a long position if that long position with that signal name actually exist but in reality ninjatrader could not care less about that signal name, in any-case everything has been clubbed into one position object with a quantity so it will close whichever signal name it wants, and if it finds no long position to close it will just open a short position.

i would love your input on my “Correctly Coded” Trade template that eliminates all this. it has multiple RSI, and Spreads, it has EVERYTHING.

2 Likes

Wow, that is why i started this thread so that angels like you can help us minions deal with these challenges…would love to review it.

Yeah, please switch over to whatever Dudley has to offer. Clearly NT is not for you.

But the only question that I always have, is: how good is the performance?

Because the ultimate target is to generate a lot of money with the lowest risk.

Dudley has offered but not provided any ninjascript, are you saying there are other platforms that run ninjascript where i can use his code?
So are you suggesting NT is only for people who like to spend 5 minutes to fill up 3 text fields with 10 character long values…
NT is for people who like to see false claims made by documentation
NT is for people who like to spend 15 hours a week in just setting up their strategies for the week
NT is for people who like to wait for 5 minutes for the trade performance report to load up and then show all garbage meaningless values

I congratulate you on being such a person. I dont think this thread is for you, maybe you should consider reading other posts…because your suggestion does not bring any value to this discussion.

In some other post I had given a metaphor that NinjaTrader is that Taj Mahal (or pyramid whatever you want to call it, basically an architectural wonder) to which there is no road and one has to traverse through lack of documentation and crappy UI to reach there…
Once you get ninjatrader working it just works…even if you have no hard disk space left…its an amazing piece of software I think…

1 Like

Wow… Lemme put you down as not a fan on Ninjatrader. Most of what you said isn’t true, but something tells me that doesn’t matter.

2 Likes

Which part is not true, I would love to know how this can be fixed, I am spending 100$ on a vps and would love to have a better response from UI…I don’t open charts , I run 12 heavy strategies which extend bloodhound, and 10 to 20 other light strategies…or atleast if you can tell me the setting which will show me the lines between entry and exits…

  1. “Extremely slow UI with many strategies”

This is a known and documented consequence of heavy UI-bound strategy parameterisation, not resource starvation.
• NT strategies run on the UI thread for configuration.
• Large property grids, reflection-heavy parameters, or frequent OnStateChange() refreshes will stall typing.
• This is self-inflicted design, not a missing feature.

Professional practice: decouple configuration objects, minimise property attributes, and avoid reflection churn.

⸻

  1. “No server-side EOD flat enforcement”

This is by design and for regulatory reasons.
• NinjaTrader is not a broker risk server.
• Flatten-at-EOD is the responsibility of:
• the broker (session-based risk),
• or the strategy (deterministic exit logic),
• or exchange session rules.

Expecting a desktop client to act as a broker-side kill-switch is a category error.

⸻

  1. “Cannot use desktop strategies and mobile app simultaneously”

Correct — and intentional.
• NT enforces single-account order ownership to prevent:
• double-modification,
• race conditions,
• and undefined state across clients.

This is risk containment, not a missing feature. Most professional platforms enforce the same constraint.

⸻

  1. “No entry–exit lines for headless strategies”

Incorrect framing.
• Those lines are chart objects, not execution artefacts.
• Headless strategies do not emit visual objects unless explicitly coded to do so.

If you want visuals, draw them. Execution ≠ annotation.

⸻

  1. “Strategies tab out of sync with positions”

This complaint misunderstands intent.
• Strategies manage logical intent.
• Positions reflect actual fills.
• Desync occurs when:
• orders are modified externally,
• partial fills occur,
• or recovery logic is misused.

The sync button exists because forced coupling would be dangerous.

⸻

  1. “Cannot hold long and short in same account”

This is an exchange / brokerage netting model, not a platform defect.
• Futures accounts are netted by design.
• Sub-accounts exist precisely to allow hedging.

Complaining about this is equivalent to complaining that futures are not CFDs.

⸻

  1. “No mechanism to prevent ordering from wrong threads”

This is the strongest tell that the author lacks platform understanding.
• NinjaScript is event-driven, not thread-free.
• Order placement rules are explicitly documented.
• Preventing this at runtime would:
• add latency,
• break advanced use cases,
• and still not prevent logic errors.

Professional platforms assume developer competence.

⸻

  1. “No built-in email / Telegram notifications”

Flatly incorrect.
• Email alerts exist.
• External messaging requires integration — intentionally.

No serious trading platform hardcodes third-party messaging APIs.

⸻

  1. “No text output if Output window is closed”

The Output window is a viewer, not a logging backend.
• Closing a console does not destroy logs in any serious system.
• File logging is explicitly supported and recommended.

This is basic software engineering.

⸻

  1. “Cannot apply ATM to an open position”

Correct — and correct by design.
• ATMs are order templates, not retroactive state machines.
• Applying them post-fill would introduce ambiguity.

Manual control after disabling a strategy is manual by definition.

⸻

  1. “Positions combined and closed randomly”

This is user error.
• NT tracks positions, not intents.
• If you want per-entry attribution, you must:
• manage entry IDs,
• or use unmanaged order mode.

Trade Performance ≠ strategy bookkeeping unless explicitly coded.

⸻

  1. “Market Replay inaccurate / slow / requires charts”

Market Replay is not tick-perfect exchange replay.
• It replays recorded market data, not exchange truth.
• Charts are required because:
• data subscription is chart-scoped,
• not strategy-scoped.

This is documented and expected.

⸻

  1. “Strategy Analyser less accurate than replay”

Correct — and universally true.
• Backtests are simulations.
• Replays are approximate re-enactments.
• Live is the only ground truth.

This is not a NinjaTrader problem.

⸻

  1. “Market Replay does nothing if data missing”

Yes — because halting execution silently is safer than fabricating data.

Professional systems fail closed, not loudly.

I could go on with more detail and personal experience - but time constraints..

5 Likes

Thanks so much for the detailed response, this statement was the basis of my list →

Thanks for pointing out that all these are genuine limitations with NT (other than point 6 which is the limitation of futures itself) and none of them (other than maybe point 8) have any solution.

My biggest complaint would be a lack of programmatic access for starting stopping strategies. I am not sure if any platform allows that, but platforms that I have seen all are able to start automatically on reboot and are able to restart the strategies that were running earlier.

I come from the perspective of the guy who wants to monitor his positions on his mobile phone while making coffee as the VPS is putting trades,
or the fact that the UI is slow because of some reason is no comfort to me who has to wait in front of the dialogue window

Point 1 - I click on add strategy and just a regular dialogue appears where i give my configuration id, choose the instrument and account and click OK, I am not doing anything heavy because that would be impossible, there are only 24 hours in a day. When i start my strategy, my strategy reads all the configuration from the database based on the configuration id…so the very basic UI is slow I am not doing anything heavy. The feeling I get is that the UI is so focussed on making sure that everything runs very smoothly after the chart is fully loaded that they had to compromise in other places. I dont open a single chart, maybe ninjatrader can make a different UI for algo traders.

Points 2 - Maybe this is due to regulatory reasons but at the end of the day the truth is that at the end of the day I need to be there to make sure everything is ok.

Point 3,4,5 - no fix for these, have to live with them.

Point 6 - Problem with futures as you mentioned, so have to live with this problem no matter what desktop application one uses I guess.

Point 7 - They could very easily provide a helper object to each callback function, and ask the callback function to invoke functions on the helper provided…that would limit the API’s one can invoke from the callback functions, this would not degrade the performance in anyway, at the least they could write a plugin for vs 2022/26 which could highlight the bad practices, or calling the EnterLong EnterShort from wrong threads could just throw an exception…there are many ways to enforce this…

Point 8 - alerts can only be created from a chart, superdom or market analyser but i dont use any of these, which means for me there is no such feature…and to send telegram messages all the third party tools are paid tools while on platforms like ctrader you can get free add ons which allow you to send telegram messages. And I dont understand how someone looks less serious by providing an add on that can invoke a third party API. Maybe I am just not a serious person.

Point 9 has nothing to do with software engineering, its not rocket science to make the output window persistent, especially when the tool has such a lousy UI where scrolling through lines is like watching a placid lake…

Point 10 - I just want a simple dialogue window where i can set the take profit and stop loss, like I can do in ctrader or metatrader, i just want them to give me such an interface, I do not care wether they want to call it ATM or whatever. If ATM is too tied to the order lifecycle, maybe they can come up with something called BTM.

Point 11 - You mention NT tracks position not intent, and what I am saying as i want them to track intent and not the position, and I am too lazy to do unmanaged orders, what i am saying is I want them to do it, and there is no reason I should not be asking for it, I have paid 1500 USD for the tool.

Point 12, 13 - no fix have to live with it. i run tick data so these tools are of absolutely no use to me.

Point 14 - It does not have to fabricate data, it just needs a popup saying “go download the data before playing market replay”, or better still it could say - “should i download the data for these dates because you seem to be wanting to run market replay for these dates, and hey it will take up so much disk space, click ok for me to go ahead with the download” , I would really like something like that…i dont think there is a ninjatrader user who would raise a enhancement request saying “Instead of showing me a dialogue telling me that i am trying to replay data that I do not have, please just sit there and do nothing!”

Ninjatrader is actually quite perfect in many respects. If you are a trader who trades based on understanding market structure, it provides all the tools. However if you are a trader who requires additionally programmatic needs, it offers you full extensibility to add what you want.

Most of your needs are developments that you can do yourself with C# (C-Sharp), furthermore, you could access NinjaScript framework, which provides custom classes and methods for developing trading indicators, automated strategies, and drawing tools that does exactly what you want.

Heck, you could build your own custom platform with those.

From your gripe, as I a see it, you have 2 options:

  1. Learn C# (C-Sharp)
  2. Locate the platform that offers all the little add-ons you desire and transition.

Additionally, you can find some to write your telegram share for $100 on upwork. Additionally, if you search on the internet, you’ll find one that is $20. (the one I use)

2 Likes

Sadly transition is not an option because the indicator i am using only works on ninjatrader…

and I think you need to look at the list more closely, no C# coding can solve them, maybe a couple like an add on for drawing a line between entry and exit point can be done, a add-on to redirect ninjascript output to a file can be done, but my C# coding cant make the UI faster, cant enforce server side closing of positions, cant make strategy analyser useful, cant give me programmatic access to starting or stopping of strategies, cant give me the ability to use my mobile phone for monitoring trades while my VPS is running…pretty much 80% of the points in my list cannot be solved even with coding.

Theoretically you are right, I could just write my own ninjatrader but that still does not mean that the ninjatrader that can be downloaded from ninjatrader.com does not have these limitations.

Just curious, can’t you login into the your VPS from your mobile phone, and then manage your NT strategies that way?

I mean, VPS access is usually via Microsoft’s RDP protocol, and plenty of mobile RDP apps already exist … some are even free.

:slightly_smiling_face:

2 Likes

I suppose, but that is a rather heavyweight solution.

I have code that allows all my logging statements to go to an external log file, or the output window, or both.

I made one central routine, PrintLog, and under the hood this routine checks if the output file has been opened, and if necessary opens the file and/or creates one, then prints the output using a single string or format string with arguments.

The design of such code is pretty basic C#, and not a very large effort.

Just my 2¢.

:slightly_smiling_face:

2 Likes

True, but its not so good on the small screen, also the information i want to see is really very basic, just the open positions on a small chart on my phone, i dont even want to control them, I will be happy to RDP for that.

I spawn a thread at startup and populate my log messages into a queue, my thread polls the queue every 1 second and spits out any message in the queue to a log file, infact I have some 5 different log files from various modules…my db thread is a separate thread…but then there are log messages from the third party indicator and they go to the output window also, there are some log messages which potentially get printed before I instantiate my own custom logger, and those I print to the output window as well…since I like to log a lot, I leverage both the outputs of the ninjascript output window…the thing is I just like to have nothing running on my VPS other than the control centre, given how heavy ninjatrader UI is having this extra window just pisses me off, I would rather just view that log in klogg.

1 Like