Some of the most demanding charting scenarios are in the financial world – substantial amounts of data coming in at real-time, and a wealth of historical data to put everything into context. Apart from charting current and past price movements, decision-markers use a variety of indicators to predict the market trend. This presents very specific challenges to any charting component that is to be used in such a scenario – flexibility of axis settings, ability to handle large-volume and real-time data with no performance degradation, availability of predefined financial indicators (so they can be used right away, rather than implemented by the developer), advanced data exploration facilities such as zooming and panning, and stylability. A component that comes short on any of these would result in an application that costs too much to build, is difficult to use, visually unappealing, or unable to handle the data load.
The XamDataChart, which is available as part of our NetAdvantage for Data Visualization suite for both WPF and Silverlight, has been engineered for these demanding requirements – it offers real-time data handling, built-in financial indicators and overlays, trendlines, rich stylability, zooming and panning. Samples showing the financial capabilities of the XamDataChart are available here and here.
This blogpost and the sample project demonstrate how to implement a financial charting scenario. It is built using Visual Studio 2010 with Silverlight 4 (NetAdvantage for Silverlight Data Visualization only supports Siliverlight 4). It includes the 10.2 version of the XamDataChart component, so you can build and run it without any additional downloads. The sample application allows the user to select from the available financial indicators and overlays and see how they perform under a real-time data load. Examine the source code which initializes the series, and take advantage of the XamDataChart’s powerful features in your applications.
Here’s a few screenshots of the sample project showing the application showing different financial indicators:
Apart from having a special FinancialPriceSeries, which supports both OHLC and Candlestick modes (as shown in this sample), the XamDataChart supports a wealth of financial indicators and overlays (as shown in this sample):
- AbsoluteVolumeOscillatorIndicator is an indicator that is calculated by taking the difference between two average volume measures. The indicator is used to identify whether volume trends are increasing or decreasing.
- AccumulationDistributionIndicator is a very popular volume related indicator. It evaluates the supply and demand of a stock, security, or index over time by looking at disparities in whether investors are selling or buying.
- AverageTrueRangeIndicator is a financial indicator that measures a security's degree of price movement or volatility within a given period of time. The indicator is not a measure of price direction or duration, but simply the amount of price movement or volatility.
- BollingerBandsOverlay is a financial overlay that is a visual set of bands plotted above and below the price series. Bollinger Bands are based on the standard deviation in the prices, so they incorporate price changes in their width.
- BollingerBandWidthIndicator is a financial indicator used with the Bollinger Bands Overlay. Bollinger Band Width Indicator represents the width of the Bollinger bands at a given point.
- ChaikinOscillatorIndicator is used to identify trends in the accumulation/distribution indicator.
- ChaikinVolatilityIndicator is a financial indicator that reflects the volatility of a security by showing the percent change of the Exponential Moving Average of the difference in high and low prices during a specified period of time.
- CommodityChannelIndexIndicator is a financial indicator that is used to indentify cyclical trends in a security.
- DetrendedPriceOscillatorIndicator is a financial indicator that was designed to control for long-term pricing trends in order to identify short-term trends.
- EaseOfMovementIndicator is a financial indicator that is used to identify the volume needed to change the price of a security.
- FastStochasticOscillatorIndicator is a momentum financial indicator that displays the closing price relative to the high-low range over a given period of time.
- ForceIndexIndicator is a price-and-volume oscillator that financial analysts use to determine if a stock's trend is positive or negative.
- FullStochasticOscillatorIndicator is a momentum financial indicator that displays the closing price relative to the high-low range over a given period of time.
- MarketFacilitationIndexIndicator combines price and volume in analysis to measure efficiency.
- MassIndexIndicator is a financial indicator that is used for finding trend reversals. It is based on the premise that reversals are likely to happen when the price range widens.
- MedianPriceIndicator represents the middle point between the high and low prices. The Median Price Indicator displays a chart of the median prices.
- MoneyFlowIndexIndicator (MFI) is a momentum indicator and is used as a measure of the money flowing in and out of a security and can be used to predict a trend reversal.
- MovingAverageConvergenceDivergenceIndicator (MACD) is used to identify changes in the strength, direction, momentum, or length of a trend for a stock price.
- NegativeVolumeIndexIndicator is frequently used in combination with the PositiveVolumeIndexIndicator. This calculation can be used to identify bull markets.
- OnBalanceVolumeIndicator (OBV) calculates a running total of sales volume for a stock and displays whether this volume is flowing in (purchasing) or out (selling) of a given stock.
- PercentagePriceOscillatorIndicator is an oscillating indicator that shows the difference between two moving averages.
- PercentageVolumeOscillatorIndicator is the percentage difference between volume smoothed using a long period and a short period.
- PositiveVolumeIndexIndicator is used together with the Negative Volume Index, it can be used to identify bull markets.
- PriceChannelOverlay is an indicator of volatility. Channels show trend direction for any time frame. Price channels, or trend, can be up, down or sideways.
- RateOfChangeAndMomentumIndicator (ROC&M) calculates the difference between one closing price and the closing price N days ago.
- RelativeStrengthIndexIndicator (RSI) is a commonly used measure of market strength/weakness calculated on closing prices during a specified time period.
- SlowStochasticOscillatorIndicator is a momentum financial indicator that displays the closing price relative to the high-low range over a given period of time.
- StandardDeviationIndicator is a financial indicator that statistically measures variation in stock prices or volatility.
- StochRSIIndicator is financial indicator that measures when a security is overbought or oversold within a specified period of time.
- TRIXIndicator is a measure of momentum used to identify overbought or oversold securities.
- TypicalPriceIndicator is common financial indicator (aka pivot point) that represents the arithmetic average of the High, Low, and Closing prices of a security for a given period of time.
- UltimateOscillatorIndicator is a financial indicator that uses the weighted average in order to reduce volatility and noise.
- WeightedCloseIndicator is a financial indicator that is similar to the Typical Price Indicator in that it represents an average of the high price, low price, and closing price for a day.
- WilliamsPercentRIndicator is useful for identifying overbought and oversold securities.
In addition to the ones built-into the XamDataChart, you can implement your own indicators. All you have to do is inherit from the CustomIndicator class and provide your custom calculation logic.
In summary, the XamDataChart has what it takes to handle your financial charting needs – great performance under real-time data load, financial series support in both OHLC and Candlestick formats, built-in financial indicators, trendlines, zooming, panning and styling.
If you have any questions, do not hesitate to email me at firstname.lastname@example.org