JTOOLS TOP TEN BLASTER


JTools Table of Contents



Project Location: \JTools_TopTenBlaster



The Top Ten Blaster application calculates and maintains 5 top ten lists for every exchange available. The lists are then separated by Equities, Futures and Indexes, depending on what the exchange offers. It is a perfect example of the 'whole market analysis' one can perform with NxCore.

You may view 4 exchange/market type combinations simultaneously (each with the 5 top ten lists). The 5 lists that are offered include:
  1. Top Ten Net Gainers
  2. Top Ten Net Losers
  3. Top Ten Percentage Gainers
  4. Top Ten Percentage Losers
  5. Top Ten Most Active
The application also calculates and maintains the number of advancing, declining and unchanged issues for every exchange available. Like the top ten Lists, they are separated by Equities, Futures and Indexes, depending on what the exchange offers.



This application requires a good amount of screen space to be displayed in it's full glory. The following image is a reduced in size:



A snippet for the above in full resolution:



You can choose new exchanges (or markets within an exchange) by using the Combi boxes to the left of the lists:





The exchanges available (and markets within the exchanges) are determined when NxCore is started and the choices are populated dynamically immediately after.



Performance:

While the application was written with the intention of viewing top ten lists in real time, you can also blast through a historical tape as fast as possible. This is accomplished through a variety of mechanisms:
  • The use of the userdata2 field contained in each NxCore symbol string which is unique (and remains static) to all issues in the system. By using this field to designate when a symbol has interest set, all string compares can be eliminated during processing of the stream. It cannot be over emphasized how much processing time is saved when eliminating string compares in a whole-market feed.

  • The use of the userdata1 field contained in each NxCore symbol string which is unique (and remains static) to all issues in the system. Userdata1 is used to hold a small structure dynamically that helps the system by containing row positioning (and other information) so that no lookup is ever needed for a symbol to determine it's current position in any list.


However, this application is GUI bound. While the updating of each list is done smartly (only modifying rows/values that have changed) there are 20 lists updating in real time. When you are listening in real time and are caught up in the feed this is not a problem and the application consumes very little CPU. However when blasting through a tape full speed the GUI will limit the message rate, sometimes considerably.

You can verify this by turning on "Compact" which closes the GUI section (and updating of the lists):


Rate will remain high as you blast through a tape (or catch up to the real time buffers) as fast as possible.

However when the GUI is opened up message rates will drop:


This is a perfect example of a GUI binding the message rate. It is still processing much faster than required in real time, but there is a performance hit due to the GUI.

Furthermore, there is also a setting buried in the Color Preferences called "Spin Entire Market":


When this setting is on, all lists for all markets are updated, calculated and maintained in real time. When a request for a new exchange/market is made it simply refreshes the display with the new information and proceeds. However, when this switch is off, the application will only update, calculate and maintain data for the specific lists being viewed. When a request is made for a new combination, the system generates a custom symbol spin to retrieve the symbols specific to the request, makes a state trade call for each symbol and populates the new list in the spin, all in the blink of the eye. Once the spin is complete the system proceeds in real time.



Colors:

You may change colors for he entire application by clicking on the application icon in the upper left corner, and choosing 'Color Prefs':






JTools Table of Contents