!QCL Solutions

Scalable Solutions for Institutional-Level Trading

In a recent TradeStation hosted webinar, the question was raised (paraphrased) “How much RAM does a computer need to run TradeStation well?”

I prefer to let TradeStation answer such questions, but the easy answer is that more is better.

Of course it is true the TradeStation platform is 32-bit software. And a 32-bit process is generally limited to referencing 2 GB. Referencing up to 4 GB is possible. But that does not mean that you should get a machine with no more than 4 GB of RAM.

TradeStation is composed of multiple applications, and numerous processes run whenever you open the TradeStation platform. Simply open TradeStation then open Windows Task Manager and view the Processes tab for Image Names starting with “TS” and “or”, among others belonging to TradeStation.

For instance open a chart in TradeStation. You should see “orchart” in the Windows Task Manager Processes tab. And if you have not already enabled multi-core processing for charting, do the following:
1) Click on a chart
2) View -> Chart Analysis Preferences…
3) Click on the General tab
4) Check the box for “Enable use of multiple CPU cores”
5) Then close and reopen the TradeStation platform

Now open several charts. If you have more than a single core machine, you should see multiple “orchart” processes in Windows Task Manager Processes tab.

As an example of how more than 4 GB can be useful with TradeStation, on a 4-core machine, I open several charts. There are 4 processes visible in Task Manager. Loading the charts, I can get each process to reach and even exceed 2 GB of memory usage, for a total of more than 8 GB… Point being that more than 4 GB can definitely be used by the TradeStation platform.

Note, I don’t recommend loading charts in TradeStation to the extent that any charting process exceeds 1 GB of memory usage. If that level of memory usage occurs, I recommend restarting TradeStation (and avoid saving workspaces). The reasons for this go beyond simply how much memory can be addresses; long story short, memory usage of charting processes can grow over time. Closing TradeStation, or at least closing all workspaces with charts, then reopening is a good way to reduce memory usage of chart processes.

Below you can download a TradeStation ELD and workspace for a demonstration trading system that can be easily automated with the leverage of options. This is made possible with OptionsX on the TradeStation Strategy Network, using the included opMPTrader system. With opMPTrader, options contracts are automatically located relative to the underlying symbol.

The demonstration shows how you can functionalize your own strategy signals for use with opMPTrader. The possibilities are vast. And with the leverage of options, multi-symbol trading in RadarScreen and ease of automation, OptionsX enables you to trade at a level that even hedge funds rarely reach.

Click on the image to download the zipped demonstration files:


OptionsX opMPTrader_MovAvg2LineCross Demonstration

Let us know if you have any questions. We are eager to help you develop your own systems with OptionsX with included systems like opMPTrader. We look forward to hearing from you. Contact us at [email protected]. We want to help your business grow.

Here is a first installment in “How to trade with OptionsX”:

  1. OptionsX is easiest to use with opMPTrader to leverage the buying power of options in running your TradeStation Strategies.
  2. To do so, setup one or more strategy-signal functions (e.g. MyLongSignalFunction and/or MyShortSignalFunction) that product +1, 0, -1 market-position signals.
  3. In the opMPTrader indicator, where the signal functions are to be plugged in, first determine a name for your system like “MySystem”+NumToStr(CurrentDate,0). This enables opMPTrader to keep track of trading information allowing only one of each symbol and account combination for that name. (Note the name can be used with 100’s of unique symbols & account combinations, and if you need/want overlap just setup another opMPTrader instance with a different CustomID. Also note that the NumToStr(CurrentDate,0) component of the name is suggested for day trading systems, so that trading records are separate for each day, forgetting positions from the prior day that should have been closed automatically or manually.)
  4. Then input the account number to be used, which is obviously important for trading. If “” is used, then the default account is located and used. Note that the TakeOwnershipOnce input is not typically necessary. It is only there if you need to assert that current trading records for the CustomID by Symbol and Account need to be owned by the current instance.
  5. Input your CallMarketPositionFunction, then specify whether it can automatically trade calls and if selling calls is allowed. (If automatic trading is not enabled, you still get Alerts for trades as long as alerts are enabled.)
  6. Input your PutMarketPositionFunction, then specify whether it can automatically trade puts and if selling puts is allowed. (If automatic trading is not enabled, you still get Alerts for trades as long as alerts are enabled.)
  7. Trade size relative to +/- 1 signals is determined by TradePositionDollars & MaxPositionContracts.
  8. Trading times are set by StartTime, EndOfDay_Entries and EndOfDay_Exits. (Since opMPTrader is intended for use with options for leverage, and since time values decay, opMPTrader is setup for day trading. It closes positions at the EndOfDay_Exits time if not already closed due to signals. It reinitiates positions on the next day if there are signals to do so.)
  9. For price limits used with orders, setup Entries_SpreadCross_0to100 and Exits_SpreadCross_0to100. 50 is for orders to be placed with limit prices half way between the inside bid and ask. 100 crosses the spread. 0 stays on the buyer or sellers side. -100 places an order away by an amount equal to the spread.
  10. For end-of-day orders, set ExitEOD_MaxSlipPercent. This is to place a limit order to close open positions at a price that limits the maximum slippage from the last price. For options to be highly likely to close at the end of the day, this number may need to be large, like 25 percent or even more.
  11. TargetPriceIncrementMin if set to 0 is set as the minmove of the underlying. For some options, the minimum price increment is larger than the minmove of the underlying, so it can be set manually to avoid the possibility of an order rejections due an invalid limit price.
  12. Set display colors as you prefer.
  13. With ShowFlagsOnClick set whether or not you want a Tip window to display trade signal information (i.e. flags) when you click on the window where opMPTrader is applied.
  14. For traditional TradeStation bar-by-bar and intrabar tick processing (per indicator settings), leave PerTickProcessingOnly = True. Otherwise to force more active code processing (to avoid possible downsides of infrequent underlying ticks), set PerTickProcessingOnly = False. This causes at least one processing cycle per second.

A simple signal function is as follows, to buy if bar close is under bar open or sell short if bar close is over bar open:

{ MyLongSignalFunction }
Switch(Close) Begin
     Case < Open: MyLongSignalFunction = 1;
     Case > Open: MyLongSignalFunction = -1;
     Default: MyLongSignalFunction = 0;

Let us know if we can help put together an OptionsX system for you. Contact us at [email protected].


TicketManager webinar

Download the PowerPoint slide-show with narration, here or by clicking on the image above

There are 5 videos used in the slide show which you may also view here:

Additional videos that we did not get to during the webcast are as follows:

Here are images showing trades placed by TicketManager using Countdown functionality:

And a TicketManager setup trading IWM as a proxy for strategy signals generated from SPY charts:

Try or subscribe to TicketManager on the Strategy Network

MDVelocity focuses on newest indications of buy and sell interest available in the market, so that trading systems can gauge where future trades may happen. Current inside bid and ask quotes can be old and misrepresent trading interests. Rolling period volume weighted averages of incoming quotes better indicate supply demand forces. Go beyond last prices, quantities and levels, with rate and recency of incoming quotes fully considered. Find value in market depth.

MDVelocity is available on the TradeStation Strategy Network. Here is the demonstration workspace provided with the product:


MDVelocity on the TradeStation Strategy Network

MDVelocity is based on the award winning Market Depth Velocity indicator and concepts of “Trade in the Now”.

The MDVelocity suite of indicators and functions puts the power in your hands. You have access to all data sources and calculations through functions. There is even the mdvPublisher indicator and mdvReader function for platform efficiency, letting your calculations be made once per symbol and passed through the reader function where needed.

Use MDVelocity or MDVelocityPro in your own indicators and strategies. Go beyond pretty-picture indicators, and put the power of market depth velocity to work in your own systems.

If you are a TicketManager client, you can take advantage of MDVelocity in your trading now. With a MDVelocity subscription, TicketManager algorithmic trading can be enhanced with truer evaluations of supply-demand forces and effective spreads.

Contact us through the developer link, which is provided when you subscribe, and we will help you get started.

OptionsX is a tool set for automated options trading relative to underlying symbols in TradeStation Charts and RadarScreen. It is designed for traders looking to enhance the buying power and profit potential of their strategies through Options.

OptionsX is available on the TradeStation TradingApp Store. The demonstration workspace provided with the product is as follows:


OptionsX on the TradeStation TradingApp Store

The workspace demonstrates options location and data provision features. Automated trading can be accomplished with the opTrader and opTraderEX functions. And there are over 40 additional tools for storing and retrieving your important strategy data (as with opGetSetRecord, opGetSetRecords and opGetSetRecordsEX), accessing marketdata (as with opData, opDataHiDayVol, opChain, opChainData), etc.

For plug-n-play system trading, simply functionalize your EasyLanguage strategy and use it with opMPTrader. As an example of using opMPTrader, the opMPT_RSI_Signal function, opMPT_RSI_Signal indicator and opMPT_RSI_Signal strategy are provided with OptionsX. The strategy is available for optimization of inputs to the opMPT_RSI_Signal function. The indicator is for viewing the opMPT_RSI_Signal signals. The signal function can be plugged into the opMPTrader CallMarketPositionFunction and/or PutMarketPositionFunction inputs to trade options as proxies for the symbol on which the indicator is based. For OptionsX subscribers, with the release of Version 9, the opMPTrader workspace automating opMPT_RSI_Signal in RadarScreen, or with charts, is available here:


opMPTrader system running with opMPT_RSI_Signals provided with OptionsX on the TradeStation TradingApp Store

(Note, if you apply the opMPTrader indicator to a window yourself, the default inputs for CallMarketPositionFunction and PutMarketPositionFunction are 0 and 0, but can be used with your own functions or ones like opMPT_RSI_Signal. To used the built-in opMPT_RSI_Signal function of OptionsX, apply the TradingApp Store function prefix, TA_OptionsX_, for the function to be named as follows: TA_OptionsX_opMPT_RSI_Signal.)

With just a few steps, OptionsX subscribers can turn on automated trading. Contact us through the developer link, which is provided when you subscribe, and we will help you get started.

The TicketManager system available through the TradeStation Strategy Network is provided with the EquityCurveOptimizer. It is a tool that can both apply and be used to optimize equity-curve trading rules.

For instance, maybe you want a TradeStation strategy to stop trading once it has broken its lowest equity level of the most recent 5 equity points (recorded bar-by-bar, per exit trade, or for each trade). Then you want it to start trading again once its simulated performance has made a new high for the most recent 3 recorded equity points. This can be accomplished with the EquityCurveOptimizer without any special modifications of strategy code (EquityCurveOptimizer is a companion strategy that runs side-by-side with your strategies). EquityCurveOptimizer can be further used with the TradeStation strategy optimizing utility to find ideal equity-curve settings. Perhaps instead of the 5 and 3 settings example above, 10 and 7 would perform better. EquityCurveOptimizer can pinpoint such settings.

A classic automation problem for good systems is to know when to stop trading, since losing periods can be protracted. It may be that a systems stops working for a while, or that it stops working permanently. This can happen when the reasons that once made a strategy work, are overwhelmed by other forces, cease to exist or cease to impact markets as they once did.

Take a look at the video by clicking on the image below, to see how the EquityCurveOptimizer can be used to cease trading in a system that has continued to make equity lows. The demonstration explains how a strategy can be operated in a long-history chart, to disable trading based on equity performance. Then this equity performance history can be extended into a short-history chart that would not have enough history on its own to disabled trading.

So in addition to illustrating equity-curve rules disabling a strategy, we also illustrate a technical feature of EquityCurveOptimizer that allows you to run your strategies with minimal cpu and memory resources, which can be important to power users.

EquityCurveOptimizer EqCrvExtending

EquityCurveOptimizer Equity Curve Extending

EquityCurveOptimizer Equity Curve Extending

Please let us know if you have any questions by contacting us at [email protected].

New with TicketManager ( Version 27 ) is enhanced functionality for the EnforceStratStartDT strategy utility. In addition to having it trigger recalculations as necessary, protecting clients from data reloading events that lead to Strategies not running over the intended data set, there is now:

  • An optional input for clients to specify the first date of the chart/strategy symbol
  • The option to mark the strategy start calculation bar
  • The option to display in screen text, the first chart bar date & time and the strategy start calculation bar date & time

See the following demonstration video:

EnforceStratStartDT new features with TicketManager ( Version 27 )

What is TicketManager:
TicketManager is a Professional Algorithmic Auto-Trading utility, implemented to manage TradeStation Strategies for robust scalable operations with market impact control. TicketManager aggregates and manages all your strategies. (It also allows you to intervene and trade as you please. If for instance TicketManager is pursuing a net strategy position of 1000 IBM shares, and you intervene, buying at market. TicketManager will adjust, terminating the ticket since the target position has been reached.)


Key TicketManager features are:

  • Strategy Automation with
    • Multi-chart aggregation for net trading of multiple strategies, time frames and settings
      • To avoid boxing restrictions
      • To avoid unnecessary trades by targeting the net position of potentially conflicting signals
  • Algorithmic execution for slippage control and possible price improvement
  • Equity-curve trading rules enforcement per chart
  • An Equity-curve trading optimization utility
  • Equity-curve trading rules enforcement of net positions
  • Equity-curve file writing functionality
    • With each bar and/or per trade
    • Comprehensive recording of equity-curve values
    • 3rd-party format recording of equity-curve values
      • With automatic creation of symbol attributes files for easy use as chart source data
  • Strategy start date notification and response features to manage situations where data refresh events may cause the start date of a strategy to change, when the trader may need to avoid this
  • A demonstration strategy that simply trades frequently for illustration
  • Two RSI-based strategies for clients to setup and use as they please
  • TicketManager performance logging, including algo performance. Tools are available for algo performance evaluations, in order to help users refine their algo settings.

EquityMarketsVolume is available on the TradeStation Strategy Network.

The product comes with a default workspace for identifying important, volume-supported market events. It can identify critical support/resistance price levels where market participants become especially active.

If you want to create your own workspaces with EquityMarketsVolume, see the video below. The video explains how to prepare a chart for quick insertion of the EquityMarketsVolume analysis technique.

Creating a chart with EquityMarketsVolume

Please let us know if you have any questions by contacting us at [email protected].