Tips - An Efficient Investor/RT

When you first installed Investor/RT, it was lean and mean, but after a year or two of use, dozens of imported charts, tinkering with 100s of settings, all while volume increased 5-fold, things have become sluggish. It's always good to pause and review your setup from time to time. A minor adjustment can make a world of difference.

A more efficient Investor/RT

This video demonstrates ways users can ensure that they are running Investor/RT as efficiently as possible based on their needs. Recommended for users having lag, slowness or unresponsiveness.

Also see a this important video: Investor/RT Tune-Up

Other issues not discussed in video:

  • Be careful of charts you import After importing a chart, inspect the indicators involved, the recalc settings of those indicators, and the recalc stats of the chart. Any user can share a chart, but any user can also add very inefficient indicators to a chart and have them recalc too frequently.
  • .Watched and .Intraday System Quotepages Be aware of how many symbols you are monitoring. The .Watched system quotepage shows you all the symbols that are being monitored tick by tick. The .Intraday quotepage shows all the symbols that are setup for Intraday monitoring and therefore will be monitored tick by tick. If you have symbols in here that you aren't interested in, click on them and then click on the red trashcan icon in the quotepage toolbar to remove them from your system. Keep these quotepages as lean as possible so that you have maximum resources available for monitoring the symbols that are important to you.
More

If you find that Investor/RT is consuming more of your computer's resources that you wish, there are a few measure you can take that might help Investor/RT run more efficiently.

There are many dimension to keep an eye on in Investor/RT: number of instruments, amount of data, number of technical indicators, complexity of indicators, and recalculation frequency to name a few. How many indicators are calculating on how many instruments...how complex are these indicators...how many bars are these indicators calculating results for...how often are these indicators being calculated. We'll take a look at each of these below, and discuss ways to minimize the effect of each.

Charts

Viewing Period One common source of inefficiency is an inflated "Viewing Period" on an intraday chart. It's quite alright to expand your viewing period after hours or from time to time if you need to view a larger historical timeframe, but in general, you should keep your viewing period to the minimum you need for trading, while the session is open. You can find the "View Period" tab within the chart preferences. (Double-click in the horizontal scale along the bottom of the chart to access the chart preferences). On a 1-minute chart, I would suggest last 2-5 days. On a 60-minute chart, maybe last 10-20 days. The key is to keep from loading tens of thousands of bars or more into the chart, which would be the case if you were viewing 30 days of 1-minute bars (11,700 bars using a standard session). So viewing period (number of bars)is the first dimension you should be aware of.

Technical Indicators

Some technical indicators obviously require more processing than others, including Signal Statistics, QuotePage Statistics, Mixed Periodicity Data, System Simulator, Scan Markers, Custom Indicators, Color Markers, and Paint Bars. Some of these indicators, which can be customized with the RTL language (including Custom Indicators, Scan Markers, etc.) can be as inefficient as the user wants to make them, depending on the complexity and form of the RTL syntax. A single custom indicator that is very complex and inefficient can potentially bring your system to it's knees.

Calculation Statistics

There is a way to get a good indication of any indicators that may be causing inefficiency problems within your charts using the "Calc Statistics". First, open you chart and let it run for some time during market hours so that new trades are getting sent into the chart. A few minutes on an active stock should be plenty. Just give it enough time for maybe 50+ trades to come in. Now, right-click on the chart and choose "Calc Statistics". You will get a list of of all the indicators in the chart, and how much average processor time is spent each time the indicator is calculated. The list will be split up into "Indicators with < 1 ms avg calc time" and "Indicators with >= 1 ms avg calc time". The "< 1ms" list is of no concern. Those indicators are fine. Take a look in the ">= 1" list (there may be no indicators in this list...which is good). The key number is the average calculation time, which will begin the line and look something like this "38 ms avg.". This would represent 38 milliseconds of CPU time per calculation, on average. It takes 1,000 milliseconds to make up a second, so we probably wouldn't be too terribly concerned about this one. If you see some that are 100ms, 200ms, or more, then those probably need to be looked at more closely. (Again, we're concerned with average time here, not necessarily total). This means every time a trade comes into the chart, that indicator is taking that much time to calculate. A very active instrument with several 200ms indicators in a chart could certainly be causing problems. In many cases, these problem/inefficient indicators will be RTL based indicators that you've created (Custom Indicators, Scan Markers, Paint Bars). You may want to open a support ticket and include the syntax of your indicator(s) and ask if there is any way to make this indicator more efficient. Make sure to include the average calc statistics that you observed. You should run this test on each of your charts that you keep open during trading.

Recalculation Frequency

If you've found some inefficient indicators that you just can't do without, maybe you can improve things by decreasing the "recalc frequency" for that indicator. The recalc frequency dictates how often that indicator will be recalculated in order to get a value for the current bar that reflects the latest prices. The default (in "Setup Prefs: Charts: General") is generally setup for "Once every price change". This means the that every time the instrument's price changes, the indicator will be recalculated. You can either change the default (which will change all chart indicators globally) or change the recalc frequency on an individual basis by simply opening up the preferences for that indicator in the chart. The recalc frequency options are at the bottom or the indicator preference window, labeled "Recalculate every...". If you have some extremely inefficient indicator that you can't do without, I recommend you try changing the recalc frequency for these indicators to "every 1 minute" or "every 30 seconds" and see if that doesn't help. You may also choose to just change the default setting to something less frequent and effect all indicators on a global basis (all setup to use "default").

QuotePages

QuotePages can also be sources of inefficiencies. First, understand that a quotepage or a chart must be open, or it consumes no resources whatsoever. So don't be concerned with quotepages or charts that just happen to be in the system but you never use (you can actually just delete those if you wish by going to "Control: Database Management: Delete/Rename: ..."). There are three dimensions to be concerned with in quotepages: the number of instruments, the number of columns, and custom columns. The greatest of these concerns will likely be custom columns.

Instrument Setup

If any of your instruments are setup with the incorrect display format, this can cause substantial inefficiencies with respect to both the memory used for each chart as well as the processing of live data.  Right-click in any chart and choose Setup > Instrument and inspect the Format setting.  You'll see 4ths for instruments that tick in increments of 0.25 and 99.99 for those that tick in 0.01 and 99.9999 for those that tick in 0.0001.  For most instrument, Investor/RT should setup this format correctly automatically, but there are exceptions.  If you're not sure what the correct display format is for your instrument, you can temporarily set the display format to 99.99999 and Apply that setting.  Then right-click on chart and Show > Time & Sales and use the prices shown to clearly determine the tick increment of the instrument (typically the spread between the bid and ask).  Take this information and go back to Instrument Setup window and set the Format accordingly.

Number of Instruments

Obviously, the more instruments that are active in a quotepage, the more instruments that Investor/RT is tracking and getting data from the data service for. Only watch the instruments that you are interested in. Don't keep a quotepage open of the entire Nasdaq when you are only interested in 30 or so instruments. You may want to narrow down your intraday watch list each day by scanning daily data for candidates.

If you are running a scan on daily data to narrow down your candidates, I would recommend following these steps before or after market hours (once per day):

  1. First, stop your data feed.
  2. Open your ".All Symbols" quotepage and unmark all the symbols for intraday using the "Mark/Unmark For Intraday" markIntra button on the quotepage toolbar. (you can use this button to mark or unmark the symbols in the quotepage, it will ask after the button is pressed).
  3. Now, close the ".All Symbols" quotepage, and start your data feed.
  4. Open the "Download Data" window and perform the daily download for the last day or two to make sure your daily database is up to date. Download for ".All Symbols" or whatever master quotepage you've created which maintains your complete list of instruments.
  5. Now, run your scan on this quotepage to result in the quotepage you'll use for intraday tracking.
  6. Mark all the instruments in this quotepage for Intraday using the markIntra button on the quotepage toolbar.
  7. You may also need to follow this with an intraday (1-minute) download for maybe the last 5 days on the instruments in the intraday quotepage, so that all instruments will be properly primed with intraday data.

This may seem like a lot of steps, but almost every one can be done on a schedule. Two clever schedules can execute all these tasks. And since the schedules can be run using keyboard shortcuts, two keystrokes and all the work above is done. (I'll try to put together a tutorial in near future to explain this).

Anyway, getting back on track. The key is that you don't "watch" more instruments that you really need to. An instrument is "watched" if it is either open in quotepage or chart OR it is marked for Intraday. If it is marked for Intraday monitoring, it is always being watched (when it's session is open). You can quickly take a look at all the symbols you have marked for Intraday by opening up the ".Intraday" system quotepage.

Custom Columns

Now that we've eliminated any unwanted instruments (rows), it's time to focus on the columns. Custom columns can cause similar inefficiency problems as technical indicators in charts. And just as indicators in charts, the problems will generally be greater when the custom column is based upon RTL-based indicators (Scans, Custom Indicators, etc). Custom columns have an advantage over technical indicators in charts in that they only have to calculate one value (as opposed to a value for every bar), but they have the disadvantage in that they have to load the data and calculate a value for every instrument in the quotepage, while charts generally work on only one instrument. So it's a trade-off.

Unfortunately, there are no "calculation statistics" currently for quotepages, so you'll have to do your indicator efficiency testing in charts, as was described above. Generally, if you have an indicator causing calculation inefficiencies in charts, then it may likely cause similar inefficiencies in quotepages. Custom columns do however have a "recalc frequency" setting. This can be found in the "Calculation" tab. If your custom column is based upon an inefficient indicator, or you just don't need the column recalculated very often, decrease the frequency of calculation (maybe every 30 seconds or every 1 minute). For large quotepages, this can make a big difference. Also note that when a sort is requested on a custom column, the custom column is automatically recalculated before the sort is performed in order to give an accurate up-to-date picture after sorting.

Updating Dynamically?

Another efficiency measure can be found inside the quotepage preferences. At the bottom of the quotepage preferences, there is a choice for update frequency. Quotepages generally default to "dynamic" updating, which means they will update every time any instrument in the quotepage receives new data. This can tax the system somewhat. If you don't necessarily need to see quotepage information that dynamically, you might try changing this update setting to maybe "every 5 seconds" or "every 10 seconds" and see if that helps.

The key is this...it's not really how many charts or quotepages you have open, but instead, what you're asking these charts and quotepages to do for you. How complex are the indicators involved in those charts, how often are these indicators being calculated, how much data is loaded into the charts, and how many instruments are being monitored on an intraday basis. By keeping an eye on these factors, you can really help minimize the processor load of Investor/RT.

There is no doubt that some Investor/RT users have systems that are overburdening their processor, which can lead to data lags, etc. I can assure you that when Investor/RT is first installed, there are no efficiency or data lag problems. As you started creating your custom indicators, adding custom columns, loading up charts with indicators, adding instruments, creating custom instruments, scan markers, etc, etc, etc....the program eventually began to slow down. There is no self-imposed "limit" within Investor/RT when it comes to how many charts you can have, how many indicators can be in each chart, how many instruments you can add, how complex your custom indicators can be, etc. And when Investor/RT gets overburdened, it does not stop calculating an indicator, or tracking an instrument, or refreshing a custom column, just so things can get caught back up. Therefore, as a user, you must impose some limits, that will satisfy your trading needs within the confines of the system your running on.

And a faster processor and/or more CPU will always help as well!