Choose a Site

What's New in TradeStation 9.0 Base

View the list below to learn about what's new in this version. Click on the What's New item to view the details.

A Message from the TradeStation Development Team

Dear TradeStation Client,

Traders in today's volatile markets demand access to information and the ability to act on it instantly. Imagine being able to automatically monitor market depth and be alerted, or even place a trade, the moment your rule or trigger is met. Or having your trading platform monitor your open positions and continuously perform risk assessments, so that in a fast market downturn or upturn, the appropriate action will automatically be executed. How about having multiple data streams in RadarScreen®, the ability to execute code on a fixed time interval, and access to all of the details for your orders and positions, just to name a few. TradeStation 9.0 includes all of this, plus dozens of other popular enhancement requests for EasyLanguage® and the TradeStation Development Environment.

TradeStation 9.0 also has a new look and feel. We have improved the icons, enhanced some of the graphics and colors, and added a Quick Start to help new TradeStation users create an optimal workspace.

As if all that were not enough, our Options Development Team has been hard at work and has included another set of enhancements to OptionStation® in TradeStation 9.0.

We hope you enjoy the exciting new features as much as we've enjoyed building them. Please don't hesitate to contact us if you have any questions or feedback.

Sincerely yours,

The TradeStation Development Team

New TradeStation Quick Start

Getting started with TradeStation just got easier with new TradeStation Quick Start!

TradeStation Quick Start

TradeStation Quick Start

TradeStation Quick Start is an interactive interface designed to get new TradeStation users started with the platform faster. First, you choose a market. Then select a task based on the approach you feel most comfortable starting with. Whether you're focused on technical analysis using the chart analysis window, researching potential trading opportunities or just want to jump in and start trading, we have the right starting point for you.

In addition, you can also find useful links to our Support and Client Training & Education resources right from the Quick Start window.

Enhancements to the TradeStation Development Environment (TDE)

Overview of Changes

We've added a set of powerful components that enable you to monitor and act on important trading and market data information. The ToolBox, Properties Editor, and Component Tray described in this section allow you to easily set up these components without having to write code in EasyLanguage®.

The Dictionary and Autocomplete have been enhanced to integrate seamlessly with new syntax and library enhancements that have been added to the latest version of EasyLanguage®. These tools are designed to provide assistance during the development of your EasyLanguage® analysis techniques.

Enhancements to the TradeStation Development Environment (TDE)

The ToolBox

The Toolbox

ToolBox

You can insert a component into an analysis technique by either double–clicking on it or dragging it from the ToolBox into an open analysis technique window. The TradeStation Development Environment (TDE) then creates the EasyLanguage® code needed to declare and initialize the component, allowing you to focus on the trading logic of your analysis technique.

Components of the ToolBox include:

AccountsProvider – Gives you access to TradeManager balance information and other trading account attributes.

FundamentalQuotesProvider – Allows you to access fundamental values, both real time and historical, for one or more symbols.

MarketDepthProvider – Everything you can see in a market depth window can now be accessed and monitored, in real time, using this component.

OrdersProvider – Accesses information about individual or multiple orders, and monitors order status in real time.

PositionsProvider – Position information, such as average price and p ⁄ l values, can be accessed using this component.

PriceSeriesProvider – This component is used to request bar data for one or more symbols.

QuotesProvider – Access real–time quotes for any symbol.

StrategyHost – This component allows your strategy to "peek into" the inner workings of TradeStation's back–testing engine. You can now override the default fill prices and quantities, and access more detailed information about strategy orders as they are filled.

OrderTicket Components – Create and send simple or complex orders from your EasyLanguage® code. These orders can be monitored using the OrdersProvider component.

Timer – Use the Timer component to execute your code at predefined time intervals.

Workbook – Easily write to and read from cells in Microsoft Excel.

Enhancements to the TradeStation Development Environment (TDE)

The Properties Editor

The Properties Editor is where you set up the components that you've added to your code.

The Toolbox

The Properties Editor

There's no EasyLanguage® coding required on your part. You simply enter the appropriate values, and the TradeStation Development Environment automatically generates the code for you.

As a quick example, take a look at the following Properties Editor image where a QuotesProvider is being set up.

Properties Editor

You simply fill in the properties, and the TradeStation Development Environment takes care of the rest.

Note that while you don't see the generated code by default in your analysis technique, it can be viewed by selecting the Designer Generated Code menu item from the View menu.

Designer Generated Code

The Properties Editor is also where you will tell the component which events you want to handle in your analysis technique. Events are how components communicate with your code and are described in more detail in the Enhancements to EasyLanguage® section.

Clicking the lightning bolt icon at the top of the Properties Editor will switch to the events view. In the following screenshot, the Properties Editor property view and event view are displayed for a Timer component.

Properties Editor

In this case, the Timer component has only one event, Elapsed.

Simply double–clicking on the event will create a method in your analysis technique that will be called with the frequency specified by the Timer's Interval property. You place EasyLanguage® code that you want to have executed when the Timer goes off inside of the automatically created Timer_Elapsed method, as shown in the following image.

Timer Elapsed

Once applied to a chart or RadarScreen, this analysis technique will print the message "Time's Up!" every second.

One more item of note in the new Properties Editor is the Input icon, identified by a capital I. When a property is selected, clicking this icon will automatically add an input to your analysis technique based on the selected property. Selecting the Interval property and clicking the Input icon will prompt you to create an input.

Create an Input

If you select "Yes," an input declaration will automatically be added to your code. The Timer's Interval can now be changed when formatting the analysis technique.

Timer Example

Enhancements to the TradeStation Development Environment (TDE)

The Component Tray

The Component Tray is attached to the bottom of the EasyLanguage® analysis technique window. It shows you which components are currently added to an analysis technique.

The Component Tray

The Component Tray

Components can be selected with a left mouse click. If the Properties Editor window is open, the selected component appears in the window. You can easily delete the selected component, and all of the designer–generated code associated with it, by pressing the delete key.

Enhancements to the TradeStation Development Environment (TDE)

Dictionary and Autocomplete

The Dictionary now includes reference information for every namespace, class, property, method, operator and event in the EasyLanguage® Class Library.

The Dictionary

The Dictionary

This will be described in more detail in the EasyLanguage® Class Library section that follows.

Autocomplete has also been enhanced to show object members. You can now quickly access properties and methods as you type, without the need to memorize the entire class library.

Auto Complete

Enhancements to EasyLanguage®

Overview of Changes

EasyLanguage® 9.0 embraces features and syntax found in many object–oriented programming languages. These enhancements will be very familiar if you have programmed in other object–oriented languages, and minimal effort should be needed to take full advantage of this new functionality.

For those who have little programming experience outside of EasyLanguage®, there's no need to worry. EasyLanguage® 9.0 is completely backward–compatible with prior versions, and all of your existing code will continue to work with no changes. Should you choose to not immediately explore any of the new functionality, you can continue to create new analysis techniques in the same way you did in prior versions.

We do, however, encourage you to explore what EasyLanguage® 9.0 has to offer. We recommend you start by experimenting with some of the new ToolBox components.

All of the new language enhancements will be described in greater detail in a separate document called "The EasyLanguage® 9.0 Language Reference," which we expect to make available in the next few weeks. We've listed some of the highlights along with brief descriptions below. Don't worry if you don't understand every item. You can learn about the new syntax and features, and integrate them into your code, at your own pace.

Enhancements to EasyLanguage®

Keywords and Operators

In ⁄ Out – Used in local methods to pass parameters by reference or value.

Method – Declares local method in an analysis technique.

Return – Used to return a value from a local method.

Try ⁄ Catch ⁄ Finally ⁄ Throw –Used to handle and generate exceptions from within an analysis technique.

Using – Identifies a namespace to be used in the analysis technique.

New– Creates a new instance of a reference type.

Accessor (.) operator– Used to access a property or method in an object.

ObjectSimple ⁄ ObjectRef– Used when passing objects to EasyLanguage® functions.

Enhancements to EasyLanguage®

Classes

Prior to EasyLanguage® 9.0, all variables were based on simple data types such as strings or numbers, known as value types. We've introduced a new category, reference types, in 9.0. These new types, also known as classes, are described the EasyLanguage® Class Library section.

Enhancements to EasyLanguage®

Namespaces

To aid in the organization of the EasyLanguage® Class Library, related types are grouped together into constructs known as namespaces. When referencing a type in EasyLanguage®, you can either prefix the type with the name of the namespace where the type is located, or you can add a declaration at the top of your analysis technique and specify the namespace that will be used.

Enhancements to EasyLanguage®

Local Methods

EasyLanguage® 9.0 now supports local methods. Similar to EasyLanguage® Functions, they can be used to improve code readability and simplify code structure. Additionally, local methods execute faster than existing EasyLanguage® Functions, and support recursive calling.

Enhancements to EasyLanguage®

Event Handlers

Many of the components described in the ToolBox section can provide information the instant that it becomes available. You can choose to have a method called by the component with every new update. The OrdersProvider, for example, can notify your code the moment an order is filled.

As described in the Properties Editor section above, "event handler" methods are automatically created for you when you double–click on an event name. When a component broadcasts an event, any method that has subscribed to that event will be called.

Enhancements to EasyLanguage®

Exception Handling

EasyLanguage® 9.0 provides a new mechanism for detecting and handling run–time errors. These errors may occur as a result of programming errors, but may also result from unexpected conditions that may occur during the execution of an analysis technique. Unhandled run–time errors will appear in the TradeStation Events Log, causing the analysis technique where the error occurred to be disabled.

You can now monitor and react to these exceptions using the new try, catch, and finally keywords.

EasyLanguage® Class Library

Overview of Changes

The EasyLanguage® Class Library (ECL) contains over 100 classes designed to help you create powerful trading solutions. It is with these classes that the vast majority of EasyLanguage®'s new capabilities reside. The ToolBox components described in Enhancements to the TradeStation Development Environment are part of the ECL.

While it is understandable to feel overwhelmed by the sheer volume of information in the ECL, it is important to remember that the actual additions to EasyLanguage®'s syntax are relatively few. In fact, the classes in the ECL can be used with only two new language elements: the new operator, which is used to create an object based on an ECL class, and the accessor (.) operator, which is used to reference an object's properties and methods. These elements, partnered with an understanding of the basic patterns needed to access a class's functionality, will enable you to take advantage of many of the capabilities the ECL has to offer.

The ECL groups related classes into constructs called namespaces. In the TDE's Dictionary, they are identified by curly braces. Clicking on a namespace's plus sign will show all classes contained in that namespace. Selecting an individual class will display all of the members contained in that class. Clicking on the plus sign next to a class will show the class from which it was derived. The following image shows the members of the elsystem.collections queue class.

EasyLanguage Class Library

EasyLanguage® Class Library

ECL Namespaces

Tsdata.common namespace
  • Contains classes shared by the tsdata.marketdata and tsdata.trading namespaces.
Tsdata.marketdata
  • Contains classes used to retrieve fundamental, quote, bar and market depth data.

Tsdata.trading
  • Contains classes used to retrieve and monitor account, position and trade information. In addition, single– and multi–leg order classes are located here.

elsystem
  • Contains ECL utility and base classes. These include exception classes, base classes for value types, the object base class, event and event argument classes, date– and time–related classes, timer and stopwatch, and environment classes.

elsystem.collections
  • The elsystem.collections namespace contains classes used to create, store, retrieve and manipulate sets of objects. These classes include implementations of common data structures such as dictionary, queue, stack and vector.

elsystem.office.excel
  • Contains classes used to interact with Microsoft Excel. Classes in this namespace provide functionality for reading to and writing from cells in a spreadsheet and for opening, closing, activating and saving workbooks.

elsystem.xml
  • These classes allow you to create, read, write, parse, manipulate and save documents in the Extensible Markup Language (XML) format.

strategy
  • Contains classes that allow you to view new order and order–filled events as they occur during a strategy back–test. This allows you to override the assumptions with regard to price when orders are historically filled. You can also view more detailed order information, such as order type or signal name.

EasyLanguage® Class Library

ECL Hierarchy Chart

The following is the TradeStation Class Library reference. Click here to view the full image.

ECL Hierarchy Chart

New TradeStation Analysis Techniques and Functions

TradeStation 9.0 includes many new analysis techniques and functions that demonstrate this new functionality.

New Analysis Techniques

Spread RS - This RadarScreen ⁄ OptionStation® indicator plots the spread between two user–specified symbols as both a difference and a ratio.

Custom Quote - This indicator plots the value of a user–specified quote field for a user–specified symbol. It uses the new function QuoteFieldValue and serves as an illustration of the use of that function.

Relative Strength (One Day) - This RadarScreen ⁄ OptionStation® indicator plots the daily percentage change, since the previous day's close, of two user–specified symbols and the difference in percentage change of the two symbols.

Market Depth - Price Levels - This indicator plots dots on price bars on a chart (real–time only). The dots are six different colors and are plotted at the three inside bid levels and at the three inside offer levels. The sizes of the dots reflect the relative size that is offered or bid at the price at which the dot is plotted, as compared to the sizes offered at the other five levels that are plotted. For example, if the size offered at the second offer level is the largest size of the three inside bids and three inside offers, then the dot plotted at that level will be the largest of the six dots. The level at which the next most size is bid or offered will have the next largest dot, etc.

Bracket Orders - Entry OCO Breakout with Exit Bracket - This RadarScreen ⁄ OptionStation® indicator places bracket orders, based on user inputs, after the user input Start is set to true. An entry OCO bracket is issued first. After one side or the other of the entry bracket is filled, an OCO exit bracket consisting of a stop–loss and profit target is issued. This completes the issuance of orders unless the value of an input is changed or the code reruns for some other reason (like a refresh, etc.). The code plots a variety of information concerning order and position status in RadarScreen, so that the operation of the brackets can be tracked.

Open Order Information - This RadarScreen ⁄ OptionStation® indicator plots the details of up to two open orders in RadarScreen or OptionStation® (Asset pane).

Position P ⁄ L Auto - This RadarScreen ⁄ OptionStation® indicator plots the profit and loss of any position in the symbol to which it is applied in the user–specified account(s). It automatically determines whether a position exists and, if one does, plots the appropriate values. The indicator updates automatically if the position size changes (for example, if the user adds to the position through the order bar) and as the price of the security changes. If there are open exit stop or stop–limit order(s), the price(s) of such orders will be plotted also.

Relative Strength - This indicator plots difference in percentage change of two symbols over a user–specified number of bars. It can be applied to any asset type, in Charting, RadarScreen or OptionStation® (Asset pane only). However, it can be applied only to daily, weekly or monthly bars. Application to intraday bars is not currently possible because the PriceSeriesProvider does not align correctly if the user has a custom session applied to the symbol. Since daily, weekly and monthly bars do not allow the setting of custom sessions, the indicator is limited to these bar intervals.

Fundamental to Avg Fundamental - This RadarScreen ⁄ OptionStation® indicator uses fundamental data. It determines the value of a user–specified fundamental field (like P ⁄ E ratio or earnings) for the symbol to which the study is applied. It determines the same value also for all of the symbols in a user–specified list of symbols. It then calculates and plots the ratio of the fundamental value for the specific symbol to the average of the fundamental values for the group of symbols.

Level II to Excel - This RadarScreen ⁄ OptionStation® indicator shows how many shares are bid or offered at the inside 5 bid and offer levels. It can export this information to an Excel file at user–specified intervals, if desired. This feature is controlled by a series of inputs.

Subsession Hi–Lo Lines - This indicator plots the highest high and lowest low that occurred during a user–specified period of time. The hi and low are extracted from a "subsession" specified by StartTime and EndTime inputs. The indicator illustrates the use of OHLCVCollection with user–specified conditions for ResetTrigger and IncludeThisBar inputs to the function.

Day or Session Hi–Lo Lines - This indicator plots the highest high and lowest low that occurs over a user–specified number of days or sessions. It is intended to illustrate use of the vectors created and returned by OHLCVCollection.

Prior to opening the WFO, you should perform an optimization, set the optimization Type to Walk Forward and supply a strategy group name.

Revised Analysis Techniques

Optionable - The "Optionable" indicator was removed from the work area. Reuters no longer supports the fundamental data field which this study used.

Fundamntl Date, Fundamntl Custom, and Fundamntl TTM - These analysis techniques have been enabled for application to the Asset pane in OptionStation®.

Floor Trader Pivots and OHLC Yesterday - Added an input to each of these analysis techniques to allow users to indicate whether price levels should be calculated based on session data or 24–hour daily data. Added code to raise a run–time error if either of these studies is applied to a bar type other than intraday, tick, volume or daily. Also, created a short name for the Floor Trader Pivots study (set the short name property of this study).

Custom 1 Line, Custom 2 Lines, Custom 3 Lines, and Custom 4 Lines - Added inputs to each of these analysis techniques to allow users to displace the indicator plots and to specify a custom string to be displayed when alerts are triggered.

Custom PaintBar and Custom ShowMe - Added inputs to each of these studies to allow users to specify a custom string to be displayed when alerts are triggered. Enabled Custom PaintBar to paint intrabar (update intrabar). Added NoPlot( 2 ) statement to ensure complete unpainting intrabar.

Volume, Spread - Ratio, Spread - Diff, Position P ⁄ L, Position P ⁄ L %, and Position P ⁄ L % Grad - Added inputs to each of these analysis techniques to allow the user to set two alert levels: a high alert level, which triggers an alert when the plotted value moves above it, and a low alert level, which triggers an alert when the plotted value moves below it.

New Functions

QuoteFieldValue - This function returns the value of a user–specified quote field for a user–specified symbol. It allows the user to obtain the value of a quote field, like "Bid" or "Last," for a symbol that is not on the chart or that is not the symbol on which the code is running in RadarScreen or OptionStation®.

OHLCVCollection and associated wrapper functions (listed below) - This function is intended to serve four purposes:

  1. Provide easy access to session–based price and volume information in a manner somewhat similar to the daily price information provided by OHLCPeriodsAgo and its wrappers.
  2. Provide a means for users to easily pass session or other periodic price and volume information to EasyLanguage® functions.
  3. Provide access to volume information extracted from intraday data (OHLCPeriodsAgo does not include volume information).
  4. Illustrate the use of vectors, which are new to EasyLanguage® in 9.0.

The OHLCVCollection function returns five vectors (by reference). The vectors contain Open, High, Low, Close and Volume data for a symbol for a user–specified period (daily, weekly, monthly, yearly or session).

Wrapper functions are provided to simplify access to commonly requested values. The provided wrapper functions are:

CloseSession() - Returns the closing price N sessions ago. An input is used to specify whether all sessions are counted or only regular sessions.

HighSession() - Returns the highest high that occurred during the session N sessions ago. An input is used to specify whether all sessions are counted or only regular sessions.

LowSession() - Returns the lowest low that occurred during the session N sessions ago. An input is used to specify whether all sessions are counted or only regular sessions.

OpenSession() - Returns the opening price of the session N sessions ago. An input is used to specify whether all sessions are counted or only regular sessions.

VolumeDay() - Returns the total volume for the day N days ago. (Similar to CloseD(), HighD(), etc.)

VolumeMonth() - Returns the total volume for the month N months ago. (Similar to CloseM(), LowM(), etc.)

VolumeSession() - Returns the total volume for the session N sessions ago. An input is used to specify whether all sessions are counted or only regular sessions.

VolumeWeek() - Returns the total volume for the week N weeks ago. (Similar to CloseW(), HighW(), etc.)

VolumeYear() - Returns the total volume for the year N years ago. (Similar to HighY(), LowY(), etc.)

Revised Functions

Average and AverageFC - Added code to these functions to raise a run–time error in the event that the function is called with a Length input value of zero.

OptionStation® Enhancements

OptionStation® Volatility Model

In TradeStation 9.0, we added a new "Implied on Mid" volatility model.

Volatility Model

This model calculates the implied volatility using the option mid price via the following: (option ask + option bid) ⁄ 2. The maximum calculated implied volatility is set to 999.

OptionStation® Enhancements

OptionStation® Option Pane Indicators

In TradeStation 9.0, we have enhanced the OptionStation® Option Pane in several areas:

Time Value
  • We addressed an issue with using an options last price for calculating time value. The indicator now uses the current mid price of the option for calculating the time value.
Days to Expiration
  • The Days to Expiration indicator now uses the new "TradingDaysLeft" keyword. This indicator matches the days left value displayed in the option pane title row.

MIV on Mid

MIV on Mid
  • We added a new MIV on Mid indicator for the Option Pane. The new indicator uses the option's current mid price to calculate the market implied volatility.
  • The maximum IV was raised from 400% to 999%.
  • The maximum test–for–convergence iteration count resolution was increased by a factor of five.
MIV on MID Inputs

MIV on MID Inputs

The indicator includes two inputs:

  • Display_NonConvergence input:
    This input causes the MID indicator to display a "~" if the implied volatility IV calculation did not converge within the maximum allowable number of iterations.
  • Display_NE_flag input:
    This input causes the MIV on Mid indicator to display "NE" when a negative extrinsic condition occurs (intrinsic option value less than its distance above strike price, in the case of calls). If this flag is set to false, then the MIV on Mid indicator will display "– – –" when a negative extrinsic condition occurs.

OptionStation® Enhancements

OptionStation® Pricing Models

In TradeStation 9.0, the OptionStation® pricing models have been enhanced, as follows:

  • We addressed an issue with the Bjerksund-Stensland pricing function returning option prices larger than expected for puts on equities.
  • All pricing models now check for negative extrinsic conditions. The option mid price is used for the negative extrinsic checks. The following pricing models were changed:
    1. Binomial
    2. Bjerksund-Stensland
    3. Black Model
    4. Blackscholes
    5. BS annual Dividend
    6. BS Qrtly Dividend

OptionStation® Enhancements

New OptionStation® EasyLanguage Keywords

In TradeStation 9.0, we introduced a few EasyLanguage keywords useful to OptionStation®

  • Added "MIVIterationCount" keyword. This keyword is an OptionStation® reserved word used to estimate relative effort required for implied volatility calculation to converge to a stable point.
  • Added "MIVonRawMid" keyword. This keyword is used to calculate the MIV on Mid price. It is utilized in the "Implied on Mid" volatility model.
  • Added "TradingDaysLeft" keyword. This keyword returns the trading days left of an option. This value is used to determine when to stop calculating the option sensitivities.

All support, education and training services and materials on the TradeStation Securities Web site are for informational purposes and to help customers learn more about how to use the power of TradeStation software and services and to help provide other customer support. No type of trading or investment recommendation, advice or strategy is being made, given or in any manner provided by TradeStation Securities or its affiliates.