views:

4187

answers:

10

We're working on a WPF-based desktop application that charts financial markets information (candlestick charts, overlayed indicator curves, volume, etc). The charts are displayed in real-time with responses to market ticks being shown in real-time (updating one to two times per second is probably a reasonable display refresh policy). We've been looking for a software package (commercial is fine by us) that has the capability of displaying these charts. Additionally, we'd like to have an approach that can render the initial amount of data in a reasonable timeframe (give or take 100-200ms from the time we hand the data over to a complete render on screen). Also we view multiple charts (5-10) simultaneously so a solution that chews up 50% of my CPU to display one chart really isn't going to work well.

Has anyone had any good experiences with charting controls. We've had to hand roll the last few charts we've done and I'd prefer not to do it again.

Solutions that can make use of the GPU to minimize CPU utilization would be nice as well.

A: 

A quick Google search for "WPF Chart control" popped up a few commercial results. I recommend downloading a few trials and test them for performance with your requirements in mind.

Dave Swersky
We had tested a few of them, ChartFX, Nevron, Xceed and a few others. Of them, Nevron and Xceed stood out, though to be honest they look and feel like the same product. I'm really looking for feedback from others who might have found a product and what they thought worked or didn't.
Ajaxx
+6  A: 

Take a look at this one Dynamic Data Display. Even though I didn't use it myself (I only ran few samples), I've read few positive things about this control on the net and it seems to be performance oriented.

EDIT: We ended up using this control to render graphs in our application and it is simply brilliant. One of our main criteria was performance.

Alex_P
+1  A: 

I've been very pleased with Dundas - not cheap, but excellent quality, documentation, and technical support; their real-time charts might be just what you're looking for

Steven A. Lowe
A: 

Ajaxx, I'm in the same boat - creating financial software using WPF. I'm about to start using Dynamic Data Display and will probably extend it to meet our particular needs. Do you fancy collaborating on this?

MrTelly
I wouldn't mind collaborating, it's incredibly difficult to find a decent engine. The buy-build conversations are incredibly tough because none of the products on the market are making the grade.
Ajaxx
send me an email IanTebbutt at hotmail.com
MrTelly
+9  A: 

Hello!

I'm developer from WPF Dynamic Data Display development team. If you have some questions about our library or some suggestions, you can ask them at Dynamic Data Display's discussion boards, or e-mail them to me. My e-mail address is [email protected].

Best regards,

Mikhail Brinchuk, WPF Dynamic Data Display Dev Team.

Mikhail Brinchuk
+1  A: 
Ric Tokyo
+1  A: 

I am looking for a real time solution as well. As far as the WPF Toolkit goes, I am not satisfied with using it as "real time" charting solution.

As an example, I have an area chart that has seven series in it. Each series uses an in-memory collection for its source of data; each collection has about 22 elements that are X/Y coordinates. This is small set of data by almost any standard.

When I update the data on just one series at the rate of once-per-second by setting the series’ ItemSource property, my CPU usage for the application rises from 1% to an average of 12-15%, and occasionally spikes to the 20s. If I set all seven series in a single method that is called at once-per-second, I see an average CPU usage of 60-65% with spikes as in the 90s. Reducing the interval to as little as once every five seconds didn't seem make much impact on performance either.

I have verified through code isolation that setting the ItemSource property is what is bogging down the CPU. I have also used the WPF Performance Suite to verify that it is in fact the chart control that is responsible for the usage during that time.

Based on this, I don’t see how it could be used in a lot of “real time visualization” scenarios such as instrumentation applications—especially where larger sets of data might be required, multiple charts per screen, and/or other applications need to be running in the background.

Interesting. I haven't had much time to delve into further use of WPF Toolkit but that would seem like a real limitation for those of us doing financial charting in realtime. I know that in my world, we scrutinize windows that run over 5% because there are usually multiple of these instances. But 60-65% would be completely unusable.
Ajaxx
+2  A: 

amCharts are pretty fast: http://wpf.amcharts.com/ also free with linkware license

Never heard of amCharts, does anyone have any experience with them?
Ajaxx
+1  A: 

Having gone through the same issues as you guys (above) I decided to build a financial chart, simply because none of the solutions on the web (commercial) cut it. I have investigated

  • amCharts (nice but a bit like google finance, bit noddy)
  • Telerik (pretty but slllllllow)
  • Visifire (nice again, but not designed for real-time financial apps)

The only commercial chart package I would consider is StockChartX for WPF, but the licence is not cheap. A good $2k per developer you'll fork out, but it does give a whole lot of features for financial apps.

Good luck! :)

Andrew Burnett-Thompson
Thanks for the answer. And I appreciate the honesty given how many of us have gone through the same thing. What's frightening is that so many of us haven't found an affordable solution.
Ajaxx
In the financial world you pay a FinTax in blocks of $10,000 for anything I'm afraid :(
Andrew Burnett-Thompson
+1  A: 

Would be good to hear if one Chart control is distinguishing itself, now that WPF has been around for some time. These seems to be the top contenders out there:

Infragistics Syncfusion amCharts ChartFX Telerik Visifire StockChartX Dundas (Not in WPF) Nevron (Not in WPF) Xceed (Not in WPF but uses OpenGL for acceleration) Dynamic Data Display (project seem to have died) ComponentOne WPF Toolkit

Ninfendo